From 1f946c9f2e67dc35ed2ba00d751acb68812245a7 Mon Sep 17 00:00:00 2001 From: collett Date: Tue, 11 Jun 2024 04:29:44 +0900 Subject: [PATCH] update to 6.58h2 --- src/common/Common.h | 4 +- src/common/CommonGen.h | 85 ++- src/common/Exd/ExdDataGenerated.cpp | 543 ++++++++++++------ src/common/Exd/ExdDataGenerated.h | 337 ++++++++++- src/common/Network/PacketDef/Ipcs.h | 280 ++++----- .../Network/PacketDef/Zone/ServerZoneDef.h | 64 +-- src/world/Manager/MapMgr.cpp | 20 +- src/world/Network/Handlers/EventHandlers.cpp | 2 +- 8 files changed, 925 insertions(+), 410 deletions(-) diff --git a/src/common/Common.h b/src/common/Common.h index fcc8d4e9..d11af36a 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -25,8 +25,8 @@ namespace Sapphire::Common const uint16_t MAX_PLAYER_LEVEL = 90; const uint8_t CURRENT_EXPANSION_ID = 4; - const uint8_t CLASSJOB_TOTAL = 40; - const uint8_t CLASSJOB_SLOTS = 30; + const uint8_t CLASSJOB_TOTAL = 42; + const uint8_t CLASSJOB_SLOTS = 32; const uint8_t TOWN_COUNT = 7; diff --git a/src/common/CommonGen.h b/src/common/CommonGen.h index 01d9d7ca..7d1d012c 100644 --- a/src/common/CommonGen.h +++ b/src/common/CommonGen.h @@ -118,7 +118,15 @@ enum class BaseParam: uint8_t //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, + None = 0, + Neutral = 1, + Recognized = 2, + Friendly = 3, + Trusted = 4, + Respected = 5, + Honored = 6, + Sworn = 7, + Allied = 8, }; /////////////////////////////////////////////////////////// @@ -190,6 +198,8 @@ enum class ClassJob: uint8_t Dancer = 38, Reaper = 39, Sage = 40, + //Viper = 41, + //Pictomancer = 42, }; /////////////////////////////////////////////////////////// @@ -227,13 +237,22 @@ enum class ContentType: uint8_t UltimateRaids = 28, //5 = 29, VAndCDungeonFinder = 30, + OceanFishing = 31, + TripleTriad = 32, + TheHunt = 33, + Fishing = 34, + GATE = 35, + //6 = 36, }; /////////////////////////////////////////////////////////// //EmoteCategory.exd enum class EmoteCategory: uint8_t { - None = 0, General = 1, Special = 2, Expressions = 3, + None = 0, + General = 1, + Special = 2, + Expressions = 3, //1 = 4, }; @@ -241,14 +260,21 @@ enum class EmoteCategory: uint8_t //ExVersion.exd enum class ExVersion: uint8_t { - ARealmReborn = 0, Heavensward = 1, Stormblood = 2, Shadowbringers = 3, Endwalker = 4, + ARealmReborn = 0, + Heavensward = 1, + Stormblood = 2, + Shadowbringers = 3, + Endwalker = 4, }; /////////////////////////////////////////////////////////// //GrandCompany.exd enum class GrandCompany: uint8_t { - None = 0, Maelstrom = 1, OrderoftheTwinAdder = 2, ImmortalFlames = 3, + None = 0, + Maelstrom = 1, + OrderoftheTwinAdder = 2, + ImmortalFlames = 3, }; /////////////////////////////////////////////////////////// @@ -384,6 +410,8 @@ enum class ItemUICategory: uint8_t DancersArm = 107, ReapersArm = 108, SagesArm = 109, + //VipersArm = 110, + //PictomancersArm = 111, }; /////////////////////////////////////////////////////////// @@ -469,7 +497,7 @@ enum class ItemSearchCategory: uint8_t DarkKnightsArms = 76, MachinistsArms = 77, AstrologiansArms = 78, - AirshipAndSubmersibleComponents = 79, + AirshipSubmersibleComponents = 79, OrchestrionComponents = 80, GardeningItems = 81, Paintings = 82, @@ -481,16 +509,16 @@ enum class ItemSearchCategory: uint8_t ReapersArms = 88, SagesArms = 89, RegistrableMiscellany = 90, - /*1 = 91, - 2 = 92, - 3 = 93, - 4 = 94, - 5 = 95, - 6 = 96, - 7 = 97, - 8 = 98, - 9 = 99, - 10 = 100,*/ + //1 = 91, + //2 = 92, + //3 = 93, + //4 = 94, + //5 = 95, + //6 = 96, + //7 = 97, + //8 = 98, + //9 = 99, + //10 = 100, }; /////////////////////////////////////////////////////////// @@ -551,7 +579,15 @@ enum class OnlineStatus: uint8_t //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, + None = 0, + Hyur = 1, + Elezen = 2, + Lalafell = 3, + Miqote = 4, + Roegadyn = 5, + AuRa = 6, + Hrothgar = 7, + Viera = 8, }; /////////////////////////////////////////////////////////// @@ -581,11 +617,18 @@ enum class Tribe: uint8_t //Town.exd enum class Town: uint8_t { - Nowheresville = 0, LimsaLominsa = 1, Gridania = 2, Uldah = 3, Ishgard = 4, //= 5, + Nowheresville = 0, + LimsaLominsa = 1, + Gridania = 2, + Uldah = 3, + Ishgard = 4, + // = 5, //1 = 6, - Kugane = 7, //2 = 8, + Kugane = 7, + //2 = 8, //3 = 9, - Crystarium = 10, //4 = 11, + Crystarium = 10, + //4 = 11, OldSharlayan = 12, //5 = 13, }; @@ -773,6 +816,8 @@ enum class Weather: uint8_t DimensionalDisruption6 = 176, Pandaemonium3 = 177, Pandaemonium4 = 178, + LyricalCatharsis = 179, + Vacuity3 = 180, }; /////////////////////////////////////////////////////////// @@ -792,7 +837,7 @@ enum class HousingAppeal: uint8_t Sanctum = 10, Venue = 11, Florist = 12, - //= 13, + // = 13, Library = 14, PhotoStudio = 15, HauntedHouse = 16, diff --git a/src/common/Exd/ExdDataGenerated.cpp b/src/common/Exd/ExdDataGenerated.cpp index c4249c1c..c17bf56f 100644 --- a/src/common/Exd/ExdDataGenerated.cpp +++ b/src/common/Exd/ExdDataGenerated.cpp @@ -318,13 +318,13 @@ Sapphire::Data::Aetheryte::Aetheryte( uint32_t row_id, Sapphire::Data::ExdDataGe level.push_back( exdData->getField< uint32_t >( row, 13 ) ); 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 ); - aetherstreamY = exdData->getField< int16_t >( row, 22 ); - order = exdData->getField< uint8_t >( row, 23 ); + aethernetGroup = exdData->getField< uint8_t >( row, 18 ); + invisible = exdData->getField< bool >( row, 19 ); + requiredQuest = exdData->getField< uint32_t >( row, 20 ); + map = exdData->getField< uint16_t >( row, 21 ); + aetherstreamX = exdData->getField< int16_t >( row, 22 ); + aetherstreamY = exdData->getField< int16_t >( row, 23 ); + order = exdData->getField< uint8_t >( row, 24 ); } Sapphire::Data::AetheryteSystemDefine::AetheryteSystemDefine( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -968,17 +968,17 @@ Sapphire::Data::BeastTribe::BeastTribe( uint32_t row_id, Sapphire::Data::ExdData icon = exdData->getField< uint32_t >( row, 4 ); maxRank = exdData->getField< uint8_t >( row, 5 ); expansion = exdData->getField< uint8_t >( row, 6 ); - currencyItem = exdData->getField< uint32_t >( row, 7 ); - displayOrder = exdData->getField< uint8_t >( row, 8 ); - name = exdData->getField< std::string >( row, 9 ); - adjective = exdData->getField< int8_t >( row, 10 ); - plural = exdData->getField< std::string >( row, 11 ); - possessivePronoun = exdData->getField< int8_t >( row, 12 ); - startsWithVowel = exdData->getField< int8_t >( row, 13 ); - pronoun = exdData->getField< int8_t >( row, 14 ); - article = exdData->getField< int8_t >( row, 15 ); - dEF = exdData->getField< int8_t >( row, 16 ); - nameRelation = exdData->getField< std::string >( row, 17 ); + currencyItem = exdData->getField< uint32_t >( row, 8 ); + displayOrder = exdData->getField< uint8_t >( row, 9 ); + name = exdData->getField< std::string >( row, 10 ); + adjective = exdData->getField< int8_t >( row, 11 ); + plural = exdData->getField< std::string >( row, 12 ); + possessivePronoun = exdData->getField< int8_t >( row, 13 ); + startsWithVowel = exdData->getField< int8_t >( row, 14 ); + pronoun = exdData->getField< int8_t >( row, 15 ); + article = exdData->getField< int8_t >( row, 16 ); + dEF = exdData->getField< int8_t >( row, 17 ); + nameRelation = exdData->getField< std::string >( row, 18 ); } Sapphire::Data::Behavior::Behavior( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) @@ -1297,7 +1297,7 @@ Sapphire::Data::BuddySkill::BuddySkill( uint32_t row_id, Sapphire::Data::ExdData Sapphire::Data::Cabinet::Cabinet( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_CabinetDat.get_row( row_id ); - item = exdData->getField< int32_t >( row, 0 ); + item = exdData->getField< uint32_t >( row, 0 ); order = exdData->getField< uint16_t >( row, 1 ); category = exdData->getField< uint8_t >( row, 2 ); } @@ -1306,8 +1306,9 @@ Sapphire::Data::CabinetCategory::CabinetCategory( uint32_t row_id, Sapphire::Dat { auto row = exdData->m_CabinetCategoryDat.get_row( row_id ); menuOrder = exdData->getField< uint8_t >( row, 0 ); - icon = exdData->getField< int32_t >( row, 1 ); - category = exdData->getField< int32_t >( row, 2 ); + hideOrder = exdData->getField< uint8_t >( row, 1 ); + icon = exdData->getField< int32_t >( row, 2 ); + category = exdData->getField< int32_t >( row, 3 ); } Sapphire::Data::Calendar::Calendar( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -1399,8 +1400,8 @@ Sapphire::Data::CharaCardBase::CharaCardBase( uint32_t row_id, Sapphire::Data::E image = exdData->getField< int32_t >( row, 0 ); fontColor = exdData->getField< uint8_t >( row, 1 ); unlockCondition = exdData->getField< uint16_t >( row, 5 ); - sortKey = exdData->getField< uint16_t >( row, 6 ); - name = exdData->getField< std::string >( row, 7 ); + sortKey = exdData->getField< uint16_t >( row, 7 ); + name = exdData->getField< std::string >( row, 8 ); } Sapphire::Data::CharaCardDecoration::CharaCardDecoration( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -1409,8 +1410,13 @@ Sapphire::Data::CharaCardDecoration::CharaCardDecoration( uint32_t row_id, Sapph category = exdData->getField< uint8_t >( row, 0 ); image = exdData->getField< int32_t >( row, 2 ); unlockCondition = exdData->getField< uint16_t >( row, 4 ); - sortKey = exdData->getField< uint16_t >( row, 5 ); - name = exdData->getField< std::string >( row, 6 ); + sortKey = exdData->getField< uint16_t >( row, 6 ); + name = exdData->getField< std::string >( row, 7 ); +} + +Sapphire::Data::CharaCardDesignCategory::CharaCardDesignCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_CharaCardDesignCategoryDat.get_row( row_id ); } Sapphire::Data::CharaCardDesignPreset::CharaCardDesignPreset( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -1440,8 +1446,8 @@ Sapphire::Data::CharaCardHeader::CharaCardHeader( uint32_t row_id, Sapphire::Dat bottomImage = exdData->getField< int32_t >( row, 1 ); fontColor = exdData->getField< uint8_t >( row, 2 ); unlockCondition = exdData->getField< uint16_t >( row, 6 ); - sortKey = exdData->getField< uint8_t >( row, 7 ); - name = exdData->getField< std::string >( row, 8 ); + sortKey = exdData->getField< uint8_t >( row, 8 ); + name = exdData->getField< std::string >( row, 9 ); } Sapphire::Data::CharaCardPlayStyle::CharaCardPlayStyle( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -2351,6 +2357,11 @@ Sapphire::Data::ContentFinderConditionTransient::ContentFinderConditionTransient description = exdData->getField< std::string >( row, 0 ); } +Sapphire::Data::ContentFinderParamTable::ContentFinderParamTable( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_ContentFinderParamTableDat.get_row( row_id, subRow ); +} + Sapphire::Data::ContentGauge::ContentGauge( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_ContentGaugeDat.get_row( row_id ); @@ -2376,6 +2387,11 @@ Sapphire::Data::ContentMemberType::ContentMemberType( uint32_t row_id, Sapphire: rangedPerParty = exdData->getField< uint8_t >( row, 13 ); } +Sapphire::Data::ContentNpc::ContentNpc( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_ContentNpcDat.get_row( row_id ); +} + Sapphire::Data::ContentNpcTalk::ContentNpcTalk( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_ContentNpcTalkDat.get_row( row_id ); @@ -2409,16 +2425,16 @@ Sapphire::Data::ContentRoulette::ContentRoulette( uint32_t row_id, Sapphire::Dat isPvP = exdData->getField< bool >( row, 10 ); 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, 23 ); - contentMemberType = exdData->getField< uint8_t >( row, 25 ); - requireAllDuties = exdData->getField< bool >( row, 36 ); - contentRouletteOpenRule = exdData->getField< uint8_t >( row, 38 ); - instanceContent = exdData->getField< uint16_t >( row, 39 ); + icon = exdData->getField< uint32_t >( row, 16 ); + contentRouletteRoleBonus = exdData->getField< uint8_t >( row, 17 ); + rewardTomeA = exdData->getField< uint16_t >( row, 18 ); + rewardTomeB = exdData->getField< uint16_t >( row, 19 ); + rewardTomeC = exdData->getField< uint16_t >( row, 20 ); + sortKey = exdData->getField< uint8_t >( row, 24 ); + contentMemberType = exdData->getField< uint8_t >( row, 26 ); + requireAllDuties = exdData->getField< bool >( row, 37 ); + contentRouletteOpenRule = exdData->getField< uint8_t >( row, 39 ); + instanceContent = exdData->getField< uint16_t >( row, 40 ); } Sapphire::Data::ContentRouletteOpenRule::ContentRouletteOpenRule( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -2456,16 +2472,16 @@ Sapphire::Data::ContentsNote::ContentsNote( uint32_t row_id, Sapphire::Data::Exd 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, 0 ) ); + page.push_back( exdData->getField< int32_t >( 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 ) ); + name = exdData->getField< std::string >( row, 8 ); + description = exdData->getField< std::string >( row, 9 ); } Sapphire::Data::ContentsTutorialPage::ContentsTutorialPage( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -2596,6 +2612,41 @@ Sapphire::Data::CreditListText::CreditListText( uint32_t row_id, Sapphire::Data: name = exdData->getField< std::string >( row, 0 ); } +Sapphire::Data::CSBonusContent::CSBonusContent( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_CSBonusContentDat.get_row( row_id ); +} + +Sapphire::Data::CSBonusContentIdentifier::CSBonusContentIdentifier( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_CSBonusContentIdentifierDat.get_row( row_id ); +} + +Sapphire::Data::CSBonusContentType::CSBonusContentType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_CSBonusContentTypeDat.get_row( row_id ); +} + +Sapphire::Data::CSBonusMission::CSBonusMission( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_CSBonusMissionDat.get_row( row_id, subRow ); +} + +Sapphire::Data::CSBonusMissionType::CSBonusMissionType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_CSBonusMissionTypeDat.get_row( row_id ); +} + +Sapphire::Data::CSBonusSeason::CSBonusSeason( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_CSBonusSeasonDat.get_row( row_id ); +} + +Sapphire::Data::CSBonusTextData::CSBonusTextData( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_CSBonusTextDataDat.get_row( row_id ); +} + Sapphire::Data::CustomTalk::CustomTalk( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_CustomTalkDat.get_row( row_id ); @@ -3347,6 +3398,12 @@ Sapphire::Data::EurekaAethernet::EurekaAethernet( uint32_t row_id, Sapphire::Dat location = exdData->getField< uint16_t >( row, 0 ); } +Sapphire::Data::EurekaDungeonPortal::EurekaDungeonPortal( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_EurekaDungeonPortalDat.get_row( row_id, subRow ); + levelId = exdData->getField< uint32_t >( row, 0 ); +} + Sapphire::Data::EurekaGrowData::EurekaGrowData( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_EurekaGrowDataDat.get_row( row_id ); @@ -3479,7 +3536,7 @@ Sapphire::Data::EventIconPriority::EventIconPriority( uint32_t row_id, Sapphire: Sapphire::Data::EventIconPriorityPair::EventIconPriorityPair( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_EventIconPriorityPairDat.get_row( row_id ); - icon1 = exdData->getField< uint32_t >( row, 0 ); + icon = exdData->getField< uint32_t >( row, 0 ); } Sapphire::Data::EventIconType::EventIconType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -3841,6 +3898,16 @@ Sapphire::Data::Festival::Festival( uint32_t row_id, Sapphire::Data::ExdDataGene name = exdData->getField< std::string >( row, 0 ); } +Sapphire::Data::FGSAddon::FGSAddon( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_FGSAddonDat.get_row( row_id ); +} + +Sapphire::Data::FGSStageUI::FGSStageUI( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_FGSStageUIDat.get_row( row_id ); +} + Sapphire::Data::FieldMarker::FieldMarker( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_FieldMarkerDat.get_row( row_id ); @@ -3920,12 +3987,12 @@ Sapphire::Data::FishParameter::FishParameter( uint32_t row_id, Sapphire::Data::E item = exdData->getField< int32_t >( row, 1 ); gatheringItemLevel = exdData->getField< uint16_t >( row, 2 ); oceanStars = exdData->getField< uint8_t >( row, 3 ); - isHidden = exdData->getField< bool >( row, 4 ); - fishingRecordType = exdData->getField< uint8_t >( row, 5 ); - fishingSpot = exdData->getField< uint16_t >( row, 6 ); - gatheringSubCategory = exdData->getField< uint16_t >( row, 7 ); - isInLog = exdData->getField< bool >( row, 8 ); - achievementCredit = exdData->getField< uint32_t >( row, 9 ); + isHidden = exdData->getField< bool >( row, 5 ); + fishingRecordType = exdData->getField< uint8_t >( row, 6 ); + fishingSpot = exdData->getField< uint16_t >( row, 7 ); + gatheringSubCategory = exdData->getField< uint16_t >( row, 8 ); + isInLog = exdData->getField< bool >( row, 9 ); + achievementCredit = exdData->getField< uint32_t >( row, 10 ); } Sapphire::Data::FittingShop::FittingShop( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -4765,6 +4832,11 @@ Sapphire::Data::GFateRideShooting::GFateRideShooting( uint32_t row_id, Sapphire: contentEntry = exdData->getField< uint32_t >( row, 0 ); } +Sapphire::Data::GFateType::GFateType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_GFateTypeDat.get_row( row_id ); +} + Sapphire::Data::GilShop::GilShop( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_GilShopDat.get_row( row_id ); @@ -4799,7 +4871,7 @@ Sapphire::Data::GimmickJump::GimmickJump( uint32_t row_id, Sapphire::Data::ExdDa { auto row = exdData->m_GimmickJumpDat.get_row( row_id ); fallDamage = exdData->getField< uint16_t >( row, 0 ); - height = exdData->getField< int8_t >( row, 1 ); + height = exdData->getField< uint16_t >( row, 1 ); loopMotion = exdData->getField< uint32_t >( row, 2 ); endMotion = exdData->getField< uint32_t >( row, 3 ); startClient = exdData->getField< bool >( row, 4 ); @@ -4912,9 +4984,11 @@ Sapphire::Data::GuildleveAssignment::GuildleveAssignment( uint32_t row_id, Sapph { auto row = exdData->m_GuildleveAssignmentDat.get_row( row_id ); 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 ) @@ -5031,7 +5105,6 @@ Sapphire::Data::HousingFurniture::HousingFurniture( uint32_t row_id, Sapphire::D customTalk = exdData->getField< uint32_t >( row, 6 ); item = exdData->getField< uint32_t >( row, 7 ); destroyOnRemoval = exdData->getField< bool >( row, 8 ); - tooltip = exdData->getField< bool >( row, 9 ); } Sapphire::Data::HousingLandSet::HousingLandSet( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -6554,6 +6627,7 @@ Sapphire::Data::Item::Item( uint32_t row_id, Sapphire::Data::ExdDataGenerated* e alwaysCollectable = exdData->getField< bool >( row, 38 ); aetherialReduce = exdData->getField< uint16_t >( row, 39 ); levelEquip = exdData->getField< uint8_t >( row, 40 ); + requiredPvpRank = exdData->getField< uint8_t >( row, 41 ); equipRestriction = exdData->getField< uint8_t >( row, 42 ); classJobCategory = exdData->getField< uint8_t >( row, 43 ); grandCompany = exdData->getField< uint8_t >( row, 44 ); @@ -6577,6 +6651,11 @@ Sapphire::Data::Item::Item( uint32_t row_id, Sapphire::Data::ExdDataGenerated* e 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 ); + param[i].value = exdData->getField< int16_t >( row, 60 + i * 2 ); + } } Sapphire::Data::ItemAction::ItemAction( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -6808,6 +6887,11 @@ Sapphire::Data::JournalSection::JournalSection( uint32_t row_id, Sapphire::Data: name = exdData->getField< std::string >( row, 0 ); } +Sapphire::Data::KineDriverOffGroup::KineDriverOffGroup( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_KineDriverOffGroupDat.get_row( row_id ); +} + Sapphire::Data::Knockback::Knockback( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_KnockbackDat.get_row( row_id ); @@ -7295,11 +7379,18 @@ Sapphire::Data::MinionSkillType::MinionSkillType( uint32_t row_id, Sapphire::Dat name = exdData->getField< std::string >( row, 0 ); } +Sapphire::Data::MirageStoreSetItem::MirageStoreSetItem( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_MirageStoreSetItemDat.get_row( row_id ); +} + Sapphire::Data::MJIAnimals::MJIAnimals( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_MJIAnimalsDat.get_row( row_id ); bNpcBase = exdData->getField< uint32_t >( row, 0 ); size = exdData->getField< uint8_t >( row, 1 ); + rarity = exdData->getField< uint8_t >( row, 2 ); + sort = exdData->getField< uint8_t >( row, 3 ); reward.push_back( exdData->getField< uint32_t >( row, 4 ) ); reward.push_back( exdData->getField< uint32_t >( row, 5 ) ); icon = exdData->getField< int32_t >( row, 6 ); @@ -7435,6 +7526,16 @@ Sapphire::Data::MJICraftworksPopularity::MJICraftworksPopularity( uint32_t row_i popularity.push_back( exdData->getField< uint8_t >( row, 78 ) ); popularity.push_back( exdData->getField< uint8_t >( row, 79 ) ); popularity.push_back( exdData->getField< uint8_t >( row, 80 ) ); + popularity.push_back( exdData->getField< uint8_t >( row, 81 ) ); + popularity.push_back( exdData->getField< uint8_t >( row, 82 ) ); + popularity.push_back( exdData->getField< uint8_t >( row, 83 ) ); + popularity.push_back( exdData->getField< uint8_t >( row, 84 ) ); + popularity.push_back( exdData->getField< uint8_t >( row, 85 ) ); + popularity.push_back( exdData->getField< uint8_t >( row, 86 ) ); + popularity.push_back( exdData->getField< uint8_t >( row, 87 ) ); + popularity.push_back( exdData->getField< uint8_t >( row, 88 ) ); + popularity.push_back( exdData->getField< uint8_t >( row, 89 ) ); + popularity.push_back( exdData->getField< uint8_t >( row, 90 ) ); } Sapphire::Data::MJICraftworksPopularityType::MJICraftworksPopularityType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -7472,7 +7573,11 @@ Sapphire::Data::MJICropSeed::MJICropSeed( uint32_t row_id, Sapphire::Data::ExdDa Sapphire::Data::MJIDisposalShopItem::MJIDisposalShopItem( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_MJIDisposalShopItemDat.get_row( row_id ); + item = exdData->getField< uint8_t >( row, 0 ); + currency = exdData->getField< uint8_t >( row, 1 ); + count = exdData->getField< uint16_t >( row, 2 ); category = exdData->getField< uint8_t >( row, 3 ); + sort = exdData->getField< uint8_t >( row, 4 ); } Sapphire::Data::MJIDisposalShopUICategory::MJIDisposalShopUICategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -7509,9 +7614,11 @@ Sapphire::Data::MJIGatheringItem::MJIGatheringItem( uint32_t row_id, Sapphire::D auto row = exdData->m_MJIGatheringItemDat.get_row( row_id ); item = exdData->getField< uint32_t >( row, 0 ); sort = exdData->getField< uint8_t >( row, 1 ); + tool = exdData->getField< uint8_t >( row, 2 ); x = exdData->getField< int16_t >( row, 3 ); y = exdData->getField< int16_t >( row, 4 ); radius = exdData->getField< uint16_t >( row, 5 ); + map = exdData->getField< uint8_t >( row, 6 ); } Sapphire::Data::MJIGatheringObject::MJIGatheringObject( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -7525,6 +7632,7 @@ Sapphire::Data::MJIGatheringObject::MJIGatheringObject( uint32_t row_id, Sapphir Sapphire::Data::MJIGatheringTool::MJIGatheringTool( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_MJIGatheringToolDat.get_row( row_id ); + item = exdData->getField< uint8_t >( row, 0 ); } Sapphire::Data::MJIHudMode::MJIHudMode( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -7548,41 +7656,45 @@ Sapphire::Data::MJIItemPouch::MJIItemPouch( uint32_t row_id, Sapphire::Data::Exd item = exdData->getField< uint32_t >( row, 0 ); category = exdData->getField< int32_t >( row, 1 ); crop = exdData->getField< uint8_t >( row, 2 ); + sort = exdData->getField< uint8_t >( row, 3 ); } Sapphire::Data::MJIKeyItem::MJIKeyItem( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_MJIKeyItemDat.get_row( row_id ); item = exdData->getField< int32_t >( row, 0 ); + sort = exdData->getField< uint8_t >( row, 1 ); } Sapphire::Data::MJILandmark::MJILandmark( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_MJILandmarkDat.get_row( row_id ); sGB0 = exdData->getField< uint16_t >( row, 3 ); - sGB1 = exdData->getField< uint16_t >( row, 5 ); - sGB2 = exdData->getField< uint16_t >( row, 7 ); - sGB3 = exdData->getField< uint16_t >( row, 9 ); - sGB4 = exdData->getField< uint16_t >( row, 11 ); - material.push_back( exdData->getField< uint16_t >( row, 18 ) ); - material.push_back( exdData->getField< uint16_t >( row, 19 ) ); + sGB1 = exdData->getField< uint16_t >( row, 4 ); + sGB2 = exdData->getField< uint16_t >( row, 5 ); + sGB3 = exdData->getField< uint16_t >( row, 7 ); + sGB4 = exdData->getField< uint16_t >( row, 9 ); + sGB5 = exdData->getField< uint16_t >( row, 11 ); + sGB6 = exdData->getField< uint16_t >( row, 13 ); material.push_back( exdData->getField< uint16_t >( row, 20 ) ); material.push_back( exdData->getField< uint16_t >( row, 21 ) ); material.push_back( exdData->getField< uint16_t >( row, 22 ) ); - amount.push_back( exdData->getField< uint8_t >( row, 23 ) ); - amount.push_back( exdData->getField< uint8_t >( row, 24 ) ); + material.push_back( exdData->getField< uint16_t >( row, 23 ) ); + material.push_back( exdData->getField< uint16_t >( row, 24 ) ); amount.push_back( exdData->getField< uint8_t >( row, 25 ) ); amount.push_back( exdData->getField< uint8_t >( row, 26 ) ); amount.push_back( exdData->getField< uint8_t >( row, 27 ) ); - name = exdData->getField< uint32_t >( row, 28 ); - icon = exdData->getField< uint32_t >( row, 30 ); + amount.push_back( exdData->getField< uint8_t >( row, 28 ) ); + amount.push_back( exdData->getField< uint8_t >( row, 29 ) ); + name = exdData->getField< uint32_t >( row, 30 ); + icon = exdData->getField< uint32_t >( row, 32 ); } Sapphire::Data::MJILandmarkPlace::MJILandmarkPlace( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_MJILandmarkPlaceDat.get_row( row_id ); name = exdData->getField< uint32_t >( row, 1 ); - sGB = exdData->getField< uint32_t >( row, 2 ); + sGB = exdData->getField< uint32_t >( row, 3 ); } Sapphire::Data::MJILivelyActor::MJILivelyActor( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) @@ -7613,6 +7725,11 @@ Sapphire::Data::MJIName::MJIName( uint32_t row_id, Sapphire::Data::ExdDataGenera article = exdData->getField< int8_t >( row, 7 ); } +Sapphire::Data::MJINekomimiRequest::MJINekomimiRequest( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_MJINekomimiRequestDat.get_row( row_id ); +} + Sapphire::Data::MJIProgress::MJIProgress( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_MJIProgressDat.get_row( row_id ); @@ -8041,6 +8158,21 @@ Sapphire::Data::NotoriousMonster::NotoriousMonster( uint32_t row_id, Sapphire::D bNpcName = exdData->getField< uint32_t >( row, 2 ); } +Sapphire::Data::NotoriousMonsterTerritory::NotoriousMonsterTerritory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_NotoriousMonsterTerritoryDat.get_row( row_id ); + notoriousMonsters.push_back( exdData->getField< uint16_t >( row, 0 ) ); + notoriousMonsters.push_back( exdData->getField< uint16_t >( row, 1 ) ); + notoriousMonsters.push_back( exdData->getField< uint16_t >( row, 2 ) ); + notoriousMonsters.push_back( exdData->getField< uint16_t >( row, 3 ) ); + notoriousMonsters.push_back( exdData->getField< uint16_t >( row, 4 ) ); + notoriousMonsters.push_back( exdData->getField< uint16_t >( row, 5 ) ); + notoriousMonsters.push_back( exdData->getField< uint16_t >( row, 6 ) ); + notoriousMonsters.push_back( exdData->getField< uint16_t >( row, 7 ) ); + notoriousMonsters.push_back( exdData->getField< uint16_t >( row, 8 ) ); + notoriousMonsters.push_back( exdData->getField< uint16_t >( row, 9 ) ); +} + Sapphire::Data::NpcEquip::NpcEquip( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_NpcEquipDat.get_row( row_id ); @@ -8572,12 +8704,15 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated* classJobLevel1 = exdData->getField< uint16_t >( row, 7 ); previousQuestJoin = exdData->getField< uint8_t >( row, 8 ); previousQuest.push_back( exdData->getField< uint32_t >( row, 9 ) ); - previousQuest0Sequence = exdData->getField< uint8_t >( row, 10 ); + previousQuest.push_back( exdData->getField< uint32_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 ); @@ -10370,6 +10505,9 @@ Sapphire::Data::QuestEventAreaEntranceInfo::QuestEventAreaEntranceInfo( uint32_t Sapphire::Data::QuestLinkMarker::QuestLinkMarker( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_QuestLinkMarkerDat.get_row( row_id, subRow ); + sourceMap = exdData->getField< uint32_t >( row, 0 ); + level = exdData->getField< uint32_t >( row, 1 ); + targetMap = exdData->getField< uint32_t >( row, 2 ); } Sapphire::Data::QuestLinkMarkerIcon::QuestLinkMarkerIcon( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -11233,9 +11371,9 @@ Sapphire::Data::SpearfishingItem::SpearfishingItem( uint32_t row_id, Sapphire::D description = exdData->getField< std::string >( row, 0 ); item = exdData->getField< int32_t >( row, 1 ); gatheringItemLevel = exdData->getField< uint16_t >( row, 2 ); - fishingRecordType = exdData->getField< uint8_t >( row, 4 ); - territoryType = exdData->getField< uint16_t >( row, 5 ); - isVisible = exdData->getField< bool >( row, 7 ); + fishingRecordType = exdData->getField< uint8_t >( row, 5 ); + territoryType = exdData->getField< uint16_t >( row, 6 ); + isVisible = exdData->getField< bool >( row, 8 ); } Sapphire::Data::SpearfishingNotebook::SpearfishingNotebook( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -11327,130 +11465,130 @@ 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 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1441 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1442 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1443 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1444 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1445 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1446 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1447 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1448 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1449 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1450 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1451 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1452 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1453 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1454 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1455 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1456 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1457 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1458 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1459 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1460 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1461 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1462 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1463 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1464 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1465 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1466 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1467 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1468 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1469 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1470 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1471 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1472 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1473 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1474 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1475 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1476 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1477 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1478 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1479 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1480 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1481 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1482 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1483 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1484 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1485 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1486 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1487 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1488 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1489 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1490 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1491 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1492 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1493 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1494 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1495 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1496 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1497 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1498 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1499 ) ); - achievementUnlock.push_back( exdData->getField< int32_t >( row, 1500 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1561 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1562 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1563 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1564 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1565 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1566 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1567 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1568 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1569 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1570 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1571 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1572 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1573 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1574 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1575 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1576 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1577 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1578 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1579 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1580 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1581 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1582 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1583 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1584 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1585 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1586 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1587 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1588 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1589 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1590 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1591 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1592 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1593 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1594 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1595 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1596 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1597 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1598 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1599 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1600 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1601 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1602 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1603 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1604 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1605 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1606 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1607 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1608 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1609 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1610 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1611 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1612 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1613 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1614 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1615 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1616 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1617 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1618 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1619 ) ); - patchNumber.push_back( exdData->getField< uint16_t >( row, 1620 ) ); - useCurrencyType = exdData->getField< uint8_t >( row, 1621 ); - questUnlock = exdData->getField< uint32_t >( row, 1622 ); - completeText = exdData->getField< int32_t >( row, 1623 ); - notCompleteText = exdData->getField< int32_t >( row, 1624 ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1741 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1742 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1743 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1744 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1745 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1746 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1747 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1748 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1749 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1750 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1751 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1752 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1753 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1754 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1755 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1756 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1757 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1758 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1759 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1760 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1761 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1762 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1763 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1764 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1765 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1766 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1767 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1768 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1769 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1770 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1771 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1772 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1773 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1774 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1775 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1776 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1777 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1778 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1779 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1780 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1781 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1782 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1783 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1784 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1785 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1786 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1787 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1788 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1789 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1790 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1791 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1792 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1793 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1794 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1795 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1796 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1797 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1798 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1799 ) ); + achievementUnlock.push_back( exdData->getField< int32_t >( row, 1800 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1981 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1982 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1983 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1984 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1985 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1986 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1987 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1988 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1989 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1990 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1991 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1992 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1993 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1994 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1995 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1996 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1997 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1998 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 1999 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2000 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2001 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2002 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2003 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2004 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2005 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2006 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2007 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2008 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2009 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2010 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2011 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2012 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2013 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2014 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2015 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2016 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2017 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2018 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2019 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2020 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2021 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2022 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2023 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2024 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2025 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2026 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2027 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2028 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2029 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2030 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2031 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2032 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2033 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2034 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2035 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2036 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2037 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2038 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2039 ) ); + patchNumber.push_back( exdData->getField< uint16_t >( row, 2040 ) ); + useCurrencyType = exdData->getField< uint8_t >( row, 2041 ); + questUnlock = exdData->getField< uint32_t >( row, 2042 ); + completeText = exdData->getField< int32_t >( row, 2043 ); + notCompleteText = exdData->getField< int32_t >( row, 2044 ); } Sapphire::Data::SpecialShopItemCategory::SpecialShopItemCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -13495,6 +13633,7 @@ Sapphire::Data::TerritoryType::TerritoryType( uint32_t row_id, Sapphire::Data::E isPvpZone = exdData->getField< bool >( row, 28 ); exVersion = exdData->getField< uint8_t >( row, 29 ); mountSpeed = exdData->getField< uint8_t >( row, 33 ); + notoriousMonsterTerritory = exdData->getField< uint16_t >( row, 42 ); } Sapphire::Data::TerritoryTypeTelepo::TerritoryTypeTelepo( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -13873,6 +14012,11 @@ Sapphire::Data::UIConst::UIConst( uint32_t row_id, Sapphire::Data::ExdDataGenera auto row = exdData->m_UIConstDat.get_row( row_id ); } +Sapphire::Data::UILevelLookup::UILevelLookup( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_UILevelLookupDat.get_row( row_id ); +} + Sapphire::Data::VaseFlower::VaseFlower( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_VaseFlowerDat.get_row( row_id ); @@ -13952,7 +14096,7 @@ Sapphire::Data::WarpCondition::WarpCondition( uint32_t row_id, Sapphire::Data::E completeParam = exdData->getField< uint8_t >( row, 1 ); requiredQuest1 = exdData->getField< uint32_t >( row, 2 ); requiredQuest2 = exdData->getField< uint32_t >( row, 3 ); - dRequiredQuest3 = exdData->getField< uint32_t >( row, 4 ); + requiredQuest3 = exdData->getField< uint32_t >( row, 4 ); requiredQuest4 = exdData->getField< uint32_t >( row, 5 ); questReward = exdData->getField< uint16_t >( row, 6 ); classLevel = exdData->getField< uint16_t >( row, 7 ); @@ -14300,6 +14444,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_ChannelingDat = setupDatAccess( "Channeling", xiv::exd::Language::none ); m_CharaCardBaseDat = setupDatAccess( "CharaCardBase", xiv::exd::Language::en ); m_CharaCardDecorationDat = setupDatAccess( "CharaCardDecoration", xiv::exd::Language::en ); + m_CharaCardDesignCategoryDat = setupDatAccess( "CharaCardDesignCategory", xiv::exd::Language::en ); m_CharaCardDesignPresetDat = setupDatAccess( "CharaCardDesignPreset", xiv::exd::Language::en ); m_CharaCardDesignTypeDat = setupDatAccess( "CharaCardDesignType", xiv::exd::Language::none ); m_CharaCardHeaderDat = setupDatAccess( "CharaCardHeader", xiv::exd::Language::en ); @@ -14353,9 +14498,11 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_ContentExActionDat = setupDatAccess( "ContentExAction", xiv::exd::Language::none ); m_ContentFinderConditionDat = setupDatAccess( "ContentFinderCondition", xiv::exd::Language::en ); m_ContentFinderConditionTransientDat = setupDatAccess( "ContentFinderConditionTransient", xiv::exd::Language::en ); + m_ContentFinderParamTableDat = setupDatAccess( "ContentFinderParamTable", xiv::exd::Language::none ); m_ContentGaugeDat = setupDatAccess( "ContentGauge", xiv::exd::Language::en ); m_ContentGaugeColorDat = setupDatAccess( "ContentGaugeColor", xiv::exd::Language::none ); m_ContentMemberTypeDat = setupDatAccess( "ContentMemberType", xiv::exd::Language::none ); + m_ContentNpcDat = setupDatAccess( "ContentNpc", xiv::exd::Language::none ); m_ContentNpcTalkDat = setupDatAccess( "ContentNpcTalk", xiv::exd::Language::none ); m_ContentRandomSelectDat = setupDatAccess( "ContentRandomSelect", xiv::exd::Language::none ); m_ContentRouletteDat = setupDatAccess( "ContentRoulette", xiv::exd::Language::en ); @@ -14377,6 +14524,13 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) 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_CSBonusContentDat = setupDatAccess( "CSBonusContent", xiv::exd::Language::none ); + m_CSBonusContentIdentifierDat = setupDatAccess( "CSBonusContentIdentifier", xiv::exd::Language::none ); + m_CSBonusContentTypeDat = setupDatAccess( "CSBonusContentType", xiv::exd::Language::none ); + m_CSBonusMissionDat = setupDatAccess( "CSBonusMission", xiv::exd::Language::none ); + m_CSBonusMissionTypeDat = setupDatAccess( "CSBonusMissionType", xiv::exd::Language::none ); + m_CSBonusSeasonDat = setupDatAccess( "CSBonusSeason", xiv::exd::Language::none ); + m_CSBonusTextDataDat = setupDatAccess( "CSBonusTextData", xiv::exd::Language::en ); m_CustomTalkDat = setupDatAccess( "CustomTalk", xiv::exd::Language::en ); m_CustomTalkDefineClientDat = setupDatAccess( "CustomTalkDefineClient", xiv::exd::Language::none ); m_CustomTalkNestHandlersDat = setupDatAccess( "CustomTalkNestHandlers", xiv::exd::Language::none ); @@ -14437,6 +14591,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_EquipSlotCategoryDat = setupDatAccess( "EquipSlotCategory", xiv::exd::Language::none ); m_EurekaAetherItemDat = setupDatAccess( "EurekaAetherItem", xiv::exd::Language::en ); m_EurekaAethernetDat = setupDatAccess( "EurekaAethernet", xiv::exd::Language::none ); + m_EurekaDungeonPortalDat = setupDatAccess( "EurekaDungeonPortal", xiv::exd::Language::none ); m_EurekaGrowDataDat = setupDatAccess( "EurekaGrowData", xiv::exd::Language::none ); m_EurekaLogosMixerProbabilityDat = setupDatAccess( "EurekaLogosMixerProbability", xiv::exd::Language::none ); m_EurekaMagiaActionDat = setupDatAccess( "EurekaMagiaAction", xiv::exd::Language::none ); @@ -14479,6 +14634,8 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_FCReputationDat = setupDatAccess( "FCReputation", xiv::exd::Language::en ); m_FCRightsDat = setupDatAccess( "FCRights", xiv::exd::Language::en ); m_FestivalDat = setupDatAccess( "Festival", xiv::exd::Language::none ); + m_FGSAddonDat = setupDatAccess( "FGSAddon", xiv::exd::Language::en ); + m_FGSStageUIDat = setupDatAccess( "FGSStageUI", xiv::exd::Language::none ); m_FieldMarkerDat = setupDatAccess( "FieldMarker", xiv::exd::Language::en ); m_FishingBaitParameterDat = setupDatAccess( "FishingBaitParameter", xiv::exd::Language::none ); m_FishingNoteInfoDat = setupDatAccess( "FishingNoteInfo", xiv::exd::Language::none ); @@ -14540,6 +14697,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_GFateClimbing2ContentDat = setupDatAccess( "GFateClimbing2Content", xiv::exd::Language::none ); m_GFateClimbing2TotemTypeDat = setupDatAccess( "GFateClimbing2TotemType", xiv::exd::Language::none ); m_GFateRideShootingDat = setupDatAccess( "GFateRideShooting", xiv::exd::Language::none ); + m_GFateTypeDat = setupDatAccess( "GFateType", xiv::exd::Language::none ); m_GilShopDat = setupDatAccess( "GilShop", xiv::exd::Language::en ); m_GilShopItemDat = setupDatAccess( "GilShopItem", xiv::exd::Language::none ); m_GimmickAccessorDat = setupDatAccess( "GimmickAccessor", xiv::exd::Language::none ); @@ -14639,6 +14797,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_JournalCategoryDat = setupDatAccess( "JournalCategory", xiv::exd::Language::en ); m_JournalGenreDat = setupDatAccess( "JournalGenre", xiv::exd::Language::en ); m_JournalSectionDat = setupDatAccess( "JournalSection", xiv::exd::Language::en ); + m_KineDriverOffGroupDat = setupDatAccess( "KineDriverOffGroup", xiv::exd::Language::none ); m_KnockbackDat = setupDatAccess( "Knockback", xiv::exd::Language::none ); m_LegacyQuestDat = setupDatAccess( "LegacyQuest", xiv::exd::Language::en ); m_LeveDat = setupDatAccess( "Leve", xiv::exd::Language::en ); @@ -14688,6 +14847,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_MinionRaceDat = setupDatAccess( "MinionRace", xiv::exd::Language::en ); m_MinionRulesDat = setupDatAccess( "MinionRules", xiv::exd::Language::en ); m_MinionSkillTypeDat = setupDatAccess( "MinionSkillType", xiv::exd::Language::en ); + m_MirageStoreSetItemDat = setupDatAccess( "MirageStoreSetItem", xiv::exd::Language::none ); m_MJIAnimalsDat = setupDatAccess( "MJIAnimals", xiv::exd::Language::none ); m_MJIBuildingDat = setupDatAccess( "MJIBuilding", xiv::exd::Language::none ); m_MJIBuildingPlaceDat = setupDatAccess( "MJIBuildingPlace", xiv::exd::Language::none ); @@ -14717,6 +14877,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_MJILivelyActorDat = setupDatAccess( "MJILivelyActor", xiv::exd::Language::none ); m_MJIMinionPopAreasDat = setupDatAccess( "MJIMinionPopAreas", xiv::exd::Language::none ); m_MJINameDat = setupDatAccess( "MJIName", xiv::exd::Language::en ); + m_MJINekomimiRequestDat = setupDatAccess( "MJINekomimiRequest", xiv::exd::Language::none ); m_MJIProgressDat = setupDatAccess( "MJIProgress", xiv::exd::Language::en ); m_MJIRankDat = setupDatAccess( "MJIRank", xiv::exd::Language::none ); m_MJIRecipeDat = setupDatAccess( "MJIRecipe", xiv::exd::Language::none ); @@ -14760,6 +14921,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_NotebookDivisionDat = setupDatAccess( "NotebookDivision", xiv::exd::Language::en ); m_NotebookDivisionCategoryDat = setupDatAccess( "NotebookDivisionCategory", xiv::exd::Language::en ); m_NotoriousMonsterDat = setupDatAccess( "NotoriousMonster", xiv::exd::Language::none ); + m_NotoriousMonsterTerritoryDat = setupDatAccess( "NotoriousMonsterTerritory", xiv::exd::Language::none ); m_NpcEquipDat = setupDatAccess( "NpcEquip", xiv::exd::Language::none ); m_NpcYellDat = setupDatAccess( "NpcYell", xiv::exd::Language::en ); m_OmenDat = setupDatAccess( "Omen", xiv::exd::Language::none ); @@ -14949,6 +15111,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_UDS_PropertyDat = setupDatAccess( "UDS_Property", xiv::exd::Language::none ); m_UIColorDat = setupDatAccess( "UIColor", xiv::exd::Language::none ); m_UIConstDat = setupDatAccess( "UIConst", xiv::exd::Language::none ); + m_UILevelLookupDat = setupDatAccess( "UILevelLookup", xiv::exd::Language::none ); m_VaseFlowerDat = setupDatAccess( "VaseFlower", xiv::exd::Language::none ); m_VFXDat = setupDatAccess( "VFX", xiv::exd::Language::none ); m_VVDDataDat = setupDatAccess( "VVDData", xiv::exd::Language::none ); diff --git a/src/common/Exd/ExdDataGenerated.h b/src/common/Exd/ExdDataGenerated.h index c25f70cc..d114bccc 100644 --- a/src/common/Exd/ExdDataGenerated.h +++ b/src/common/Exd/ExdDataGenerated.h @@ -134,6 +134,7 @@ struct Carry; struct Channeling; struct CharaCardBase; struct CharaCardDecoration; +struct CharaCardDesignCategory; struct CharaCardDesignPreset; struct CharaCardDesignType; struct CharaCardHeader; @@ -187,9 +188,11 @@ struct ContentEventItem; struct ContentExAction; struct ContentFinderCondition; struct ContentFinderConditionTransient; +struct ContentFinderParamTable; struct ContentGauge; struct ContentGaugeColor; struct ContentMemberType; +struct ContentNpc; struct ContentNpcTalk; struct ContentRandomSelect; struct ContentRoulette; @@ -211,6 +214,13 @@ struct CreditBackImage; struct CreditCast; struct CreditList; struct CreditListText; +struct CSBonusContent; +struct CSBonusContentIdentifier; +struct CSBonusContentType; +struct CSBonusMission; +struct CSBonusMissionType; +struct CSBonusSeason; +struct CSBonusTextData; struct CustomTalk; struct CustomTalkDefineClient; struct CustomTalkNestHandlers; @@ -271,6 +281,7 @@ struct EquipRaceCategory; struct EquipSlotCategory; struct EurekaAetherItem; struct EurekaAethernet; +struct EurekaDungeonPortal; struct EurekaGrowData; struct EurekaLogosMixerProbability; struct EurekaMagiaAction; @@ -313,6 +324,8 @@ struct FCRank; struct FCReputation; struct FCRights; struct Festival; +struct FGSAddon; +struct FGSStageUI; struct FieldMarker; struct FishingBaitParameter; struct FishingNoteInfo; @@ -374,6 +387,7 @@ struct GFateClimbing2; struct GFateClimbing2Content; struct GFateClimbing2TotemType; struct GFateRideShooting; +struct GFateType; struct GilShop; struct GilShopItem; struct GimmickAccessor; @@ -473,6 +487,7 @@ struct JobHudManualPriority; struct JournalCategory; struct JournalGenre; struct JournalSection; +struct KineDriverOffGroup; struct Knockback; struct LegacyQuest; struct Leve; @@ -522,6 +537,7 @@ struct MiniGameTurnBreakStatus; struct MinionRace; struct MinionRules; struct MinionSkillType; +struct MirageStoreSetItem; struct MJIAnimals; struct MJIBuilding; struct MJIBuildingPlace; @@ -551,6 +567,7 @@ struct MJILandmarkPlace; struct MJILivelyActor; struct MJIMinionPopAreas; struct MJIName; +struct MJINekomimiRequest; struct MJIProgress; struct MJIRank; struct MJIRecipe; @@ -594,6 +611,7 @@ struct MYCWarResultNotebook; struct NotebookDivision; struct NotebookDivisionCategory; struct NotoriousMonster; +struct NotoriousMonsterTerritory; struct NpcEquip; struct NpcYell; struct Omen; @@ -783,6 +801,7 @@ struct UDS_Event; struct UDS_Property; struct UIColor; struct UIConst; +struct UILevelLookup; struct VaseFlower; struct VFX; struct VVDData; @@ -2060,7 +2079,7 @@ struct BuddySkill struct Cabinet { - int32_t item; + uint32_t item; uint16_t order; uint8_t category; @@ -2070,6 +2089,7 @@ struct Cabinet struct CabinetCategory { uint8_t menuOrder; + uint8_t hideOrder; int32_t icon; int32_t category; @@ -2122,6 +2142,12 @@ struct CharaCardDecoration CharaCardDecoration( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct CharaCardDesignCategory +{ + + CharaCardDesignCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct CharaCardDesignPreset { uint16_t basePlate; @@ -2801,6 +2827,12 @@ struct ContentFinderConditionTransient ContentFinderConditionTransient( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct ContentFinderParamTable +{ + + ContentFinderParamTable( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct ContentGauge { std::string name; @@ -2829,6 +2861,12 @@ struct ContentMemberType ContentMemberType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct ContentNpc +{ + + ContentNpc( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct ContentNpcTalk { int32_t type; @@ -2907,9 +2945,9 @@ struct ContentsNote struct ContentsTutorial { + std::vector< int32_t > page; std::string name; std::string description; - std::vector< int32_t > page; ContentsTutorial( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -3051,6 +3089,48 @@ struct CreditListText CreditListText( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct CSBonusContent +{ + + CSBonusContent( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + +struct CSBonusContentIdentifier +{ + + CSBonusContentIdentifier( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + +struct CSBonusContentType +{ + + CSBonusContentType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + +struct CSBonusMission +{ + + CSBonusMission( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ); +}; + +struct CSBonusMissionType +{ + + CSBonusMissionType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + +struct CSBonusSeason +{ + + CSBonusSeason( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + +struct CSBonusTextData +{ + + CSBonusTextData( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct CustomTalk { uint32_t iconActor; @@ -3708,6 +3788,13 @@ struct EurekaAethernet EurekaAethernet( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct EurekaDungeonPortal +{ + uint32_t levelId; + + EurekaDungeonPortal( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct EurekaGrowData { uint16_t baseResistance; @@ -3783,7 +3870,7 @@ struct EventIconPriority struct EventIconPriorityPair { - uint32_t icon1; + uint32_t icon; EventIconPriorityPair( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -4104,6 +4191,18 @@ struct Festival Festival( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct FGSAddon +{ + + FGSAddon( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + +struct FGSStageUI +{ + + FGSStageUI( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct FieldMarker { int32_t vFX; @@ -4698,6 +4797,12 @@ struct GFateRideShooting GFateRideShooting( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct GFateType +{ + + GFateType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct GilShop { std::string name; @@ -4733,7 +4838,7 @@ struct GimmickAccessor struct GimmickJump { uint16_t fallDamage; - int8_t height; + uint16_t height; uint32_t loopMotion; uint32_t endMotion; bool startClient; @@ -4978,7 +5083,6 @@ struct HousingFurniture uint32_t customTalk; uint32_t item; bool destroyOnRemoval; - bool tooltip; HousingFurniture( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -5466,6 +5570,7 @@ struct Item bool alwaysCollectable; uint16_t aetherialReduce; uint8_t levelEquip; + uint8_t requiredPvpRank; uint8_t equipRestriction; uint8_t classJobCategory; uint8_t grandCompany; @@ -5730,6 +5835,12 @@ struct JournalSection JournalSection( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct KineDriverOffGroup +{ + + KineDriverOffGroup( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct Knockback { uint8_t distance; @@ -6167,10 +6278,18 @@ struct MinionSkillType MinionSkillType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct MirageStoreSetItem +{ + + MirageStoreSetItem( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct MJIAnimals { uint32_t bNpcBase; uint8_t size; + uint8_t rarity; + uint8_t sort; std::vector< uint32_t > reward; int32_t icon; @@ -6264,7 +6383,11 @@ struct MJICropSeed struct MJIDisposalShopItem { + uint8_t item; + uint8_t currency; + uint16_t count; uint8_t category; + uint8_t sort; MJIDisposalShopItem( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -6307,9 +6430,11 @@ struct MJIGatheringItem { uint32_t item; uint8_t sort; + uint8_t tool; int16_t x; int16_t y; uint16_t radius; + uint8_t map; MJIGatheringItem( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -6325,6 +6450,7 @@ struct MJIGatheringObject struct MJIGatheringTool { + uint8_t item; MJIGatheringTool( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -6351,6 +6477,7 @@ struct MJIItemPouch uint32_t item; int32_t category; uint8_t crop; + uint8_t sort; MJIItemPouch( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -6358,6 +6485,7 @@ struct MJIItemPouch struct MJIKeyItem { int32_t item; + uint8_t sort; MJIKeyItem( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -6369,6 +6497,8 @@ struct MJILandmark uint16_t sGB2; uint16_t sGB3; uint16_t sGB4; + uint16_t sGB5; + uint16_t sGB6; std::vector< uint16_t > material; std::vector< uint8_t > amount; uint32_t name; @@ -6416,6 +6546,12 @@ struct MJIName MJIName( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct MJINekomimiRequest +{ + + MJINekomimiRequest( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct MJIProgress { std::string vision; @@ -6872,6 +7008,13 @@ struct NotoriousMonster NotoriousMonster( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct NotoriousMonsterTerritory +{ + std::vector< uint16_t > notoriousMonsters; + + NotoriousMonsterTerritory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct NpcEquip { uint64_t modelMainHand; @@ -7370,7 +7513,6 @@ struct Quest uint16_t classJobLevel1; uint8_t previousQuestJoin; std::vector< uint32_t > previousQuest; - uint8_t previousQuest0Sequence; uint8_t questLockJoin; std::vector< uint32_t > questLock; uint16_t header; @@ -7554,6 +7696,9 @@ struct QuestEventAreaEntranceInfo struct QuestLinkMarker { + uint32_t sourceMap; + uint32_t level; + uint32_t targetMap; QuestLinkMarker( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -8490,6 +8635,7 @@ struct TerritoryType bool isPvpZone; uint8_t exVersion; uint8_t mountSpeed; + uint16_t notoriousMonsterTerritory; TerritoryType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -8866,6 +9012,12 @@ struct UIConst UIConst( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct UILevelLookup +{ + + UILevelLookup( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct VaseFlower { uint32_t item; @@ -8941,7 +9093,7 @@ struct WarpCondition uint8_t completeParam; uint32_t requiredQuest1; uint32_t requiredQuest2; - uint32_t dRequiredQuest3; + uint32_t requiredQuest3; uint32_t requiredQuest4; uint16_t questReward; uint16_t classLevel; @@ -9290,6 +9442,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_ChannelingDat; xiv::exd::Exd m_CharaCardBaseDat; xiv::exd::Exd m_CharaCardDecorationDat; + xiv::exd::Exd m_CharaCardDesignCategoryDat; xiv::exd::Exd m_CharaCardDesignPresetDat; xiv::exd::Exd m_CharaCardDesignTypeDat; xiv::exd::Exd m_CharaCardHeaderDat; @@ -9343,9 +9496,11 @@ struct ZoneSharedGroup xiv::exd::Exd m_ContentExActionDat; xiv::exd::Exd m_ContentFinderConditionDat; xiv::exd::Exd m_ContentFinderConditionTransientDat; + xiv::exd::Exd m_ContentFinderParamTableDat; xiv::exd::Exd m_ContentGaugeDat; xiv::exd::Exd m_ContentGaugeColorDat; xiv::exd::Exd m_ContentMemberTypeDat; + xiv::exd::Exd m_ContentNpcDat; xiv::exd::Exd m_ContentNpcTalkDat; xiv::exd::Exd m_ContentRandomSelectDat; xiv::exd::Exd m_ContentRouletteDat; @@ -9367,6 +9522,13 @@ struct ZoneSharedGroup xiv::exd::Exd m_CreditCastDat; xiv::exd::Exd m_CreditListDat; xiv::exd::Exd m_CreditListTextDat; + xiv::exd::Exd m_CSBonusContentDat; + xiv::exd::Exd m_CSBonusContentIdentifierDat; + xiv::exd::Exd m_CSBonusContentTypeDat; + xiv::exd::Exd m_CSBonusMissionDat; + xiv::exd::Exd m_CSBonusMissionTypeDat; + xiv::exd::Exd m_CSBonusSeasonDat; + xiv::exd::Exd m_CSBonusTextDataDat; xiv::exd::Exd m_CustomTalkDat; xiv::exd::Exd m_CustomTalkDefineClientDat; xiv::exd::Exd m_CustomTalkNestHandlersDat; @@ -9427,6 +9589,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_EquipSlotCategoryDat; xiv::exd::Exd m_EurekaAetherItemDat; xiv::exd::Exd m_EurekaAethernetDat; + xiv::exd::Exd m_EurekaDungeonPortalDat; xiv::exd::Exd m_EurekaGrowDataDat; xiv::exd::Exd m_EurekaLogosMixerProbabilityDat; xiv::exd::Exd m_EurekaMagiaActionDat; @@ -9469,6 +9632,8 @@ struct ZoneSharedGroup xiv::exd::Exd m_FCReputationDat; xiv::exd::Exd m_FCRightsDat; xiv::exd::Exd m_FestivalDat; + xiv::exd::Exd m_FGSAddonDat; + xiv::exd::Exd m_FGSStageUIDat; xiv::exd::Exd m_FieldMarkerDat; xiv::exd::Exd m_FishingBaitParameterDat; xiv::exd::Exd m_FishingNoteInfoDat; @@ -9530,6 +9695,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_GFateClimbing2ContentDat; xiv::exd::Exd m_GFateClimbing2TotemTypeDat; xiv::exd::Exd m_GFateRideShootingDat; + xiv::exd::Exd m_GFateTypeDat; xiv::exd::Exd m_GilShopDat; xiv::exd::Exd m_GilShopItemDat; xiv::exd::Exd m_GimmickAccessorDat; @@ -9629,6 +9795,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_JournalCategoryDat; xiv::exd::Exd m_JournalGenreDat; xiv::exd::Exd m_JournalSectionDat; + xiv::exd::Exd m_KineDriverOffGroupDat; xiv::exd::Exd m_KnockbackDat; xiv::exd::Exd m_LegacyQuestDat; xiv::exd::Exd m_LeveDat; @@ -9678,6 +9845,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_MinionRaceDat; xiv::exd::Exd m_MinionRulesDat; xiv::exd::Exd m_MinionSkillTypeDat; + xiv::exd::Exd m_MirageStoreSetItemDat; xiv::exd::Exd m_MJIAnimalsDat; xiv::exd::Exd m_MJIBuildingDat; xiv::exd::Exd m_MJIBuildingPlaceDat; @@ -9707,6 +9875,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_MJILivelyActorDat; xiv::exd::Exd m_MJIMinionPopAreasDat; xiv::exd::Exd m_MJINameDat; + xiv::exd::Exd m_MJINekomimiRequestDat; xiv::exd::Exd m_MJIProgressDat; xiv::exd::Exd m_MJIRankDat; xiv::exd::Exd m_MJIRecipeDat; @@ -9750,6 +9919,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_NotebookDivisionDat; xiv::exd::Exd m_NotebookDivisionCategoryDat; xiv::exd::Exd m_NotoriousMonsterDat; + xiv::exd::Exd m_NotoriousMonsterTerritoryDat; xiv::exd::Exd m_NpcEquipDat; xiv::exd::Exd m_NpcYellDat; xiv::exd::Exd m_OmenDat; @@ -9939,6 +10109,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_UDS_PropertyDat; xiv::exd::Exd m_UIColorDat; xiv::exd::Exd m_UIConstDat; + xiv::exd::Exd m_UILevelLookupDat; xiv::exd::Exd m_VaseFlowerDat; xiv::exd::Exd m_VFXDat; xiv::exd::Exd m_VVDDataDat; @@ -10081,6 +10252,7 @@ struct ZoneSharedGroup using ChannelingPtr = std::shared_ptr< Channeling >; using CharaCardBasePtr = std::shared_ptr< CharaCardBase >; using CharaCardDecorationPtr = std::shared_ptr< CharaCardDecoration >; + using CharaCardDesignCategoryPtr = std::shared_ptr< CharaCardDesignCategory >; using CharaCardDesignPresetPtr = std::shared_ptr< CharaCardDesignPreset >; using CharaCardDesignTypePtr = std::shared_ptr< CharaCardDesignType >; using CharaCardHeaderPtr = std::shared_ptr< CharaCardHeader >; @@ -10134,9 +10306,11 @@ struct ZoneSharedGroup using ContentExActionPtr = std::shared_ptr< ContentExAction >; using ContentFinderConditionPtr = std::shared_ptr< ContentFinderCondition >; using ContentFinderConditionTransientPtr = std::shared_ptr< ContentFinderConditionTransient >; + using ContentFinderParamTablePtr = std::shared_ptr< ContentFinderParamTable >; using ContentGaugePtr = std::shared_ptr< ContentGauge >; using ContentGaugeColorPtr = std::shared_ptr< ContentGaugeColor >; using ContentMemberTypePtr = std::shared_ptr< ContentMemberType >; + using ContentNpcPtr = std::shared_ptr< ContentNpc >; using ContentNpcTalkPtr = std::shared_ptr< ContentNpcTalk >; using ContentRandomSelectPtr = std::shared_ptr< ContentRandomSelect >; using ContentRoulettePtr = std::shared_ptr< ContentRoulette >; @@ -10158,6 +10332,13 @@ struct ZoneSharedGroup using CreditCastPtr = std::shared_ptr< CreditCast >; using CreditListPtr = std::shared_ptr< CreditList >; using CreditListTextPtr = std::shared_ptr< CreditListText >; + using CSBonusContentPtr = std::shared_ptr< CSBonusContent >; + using CSBonusContentIdentifierPtr = std::shared_ptr< CSBonusContentIdentifier >; + using CSBonusContentTypePtr = std::shared_ptr< CSBonusContentType >; + using CSBonusMissionPtr = std::shared_ptr< CSBonusMission >; + using CSBonusMissionTypePtr = std::shared_ptr< CSBonusMissionType >; + using CSBonusSeasonPtr = std::shared_ptr< CSBonusSeason >; + using CSBonusTextDataPtr = std::shared_ptr< CSBonusTextData >; using CustomTalkPtr = std::shared_ptr< CustomTalk >; using CustomTalkDefineClientPtr = std::shared_ptr< CustomTalkDefineClient >; using CustomTalkNestHandlersPtr = std::shared_ptr< CustomTalkNestHandlers >; @@ -10218,6 +10399,7 @@ struct ZoneSharedGroup using EquipSlotCategoryPtr = std::shared_ptr< EquipSlotCategory >; using EurekaAetherItemPtr = std::shared_ptr< EurekaAetherItem >; using EurekaAethernetPtr = std::shared_ptr< EurekaAethernet >; + using EurekaDungeonPortalPtr = std::shared_ptr< EurekaDungeonPortal >; using EurekaGrowDataPtr = std::shared_ptr< EurekaGrowData >; using EurekaLogosMixerProbabilityPtr = std::shared_ptr< EurekaLogosMixerProbability >; using EurekaMagiaActionPtr = std::shared_ptr< EurekaMagiaAction >; @@ -10260,6 +10442,8 @@ struct ZoneSharedGroup using FCReputationPtr = std::shared_ptr< FCReputation >; using FCRightsPtr = std::shared_ptr< FCRights >; using FestivalPtr = std::shared_ptr< Festival >; + using FGSAddonPtr = std::shared_ptr< FGSAddon >; + using FGSStageUIPtr = std::shared_ptr< FGSStageUI >; using FieldMarkerPtr = std::shared_ptr< FieldMarker >; using FishingBaitParameterPtr = std::shared_ptr< FishingBaitParameter >; using FishingNoteInfoPtr = std::shared_ptr< FishingNoteInfo >; @@ -10321,6 +10505,7 @@ struct ZoneSharedGroup using GFateClimbing2ContentPtr = std::shared_ptr< GFateClimbing2Content >; using GFateClimbing2TotemTypePtr = std::shared_ptr< GFateClimbing2TotemType >; using GFateRideShootingPtr = std::shared_ptr< GFateRideShooting >; + using GFateTypePtr = std::shared_ptr< GFateType >; using GilShopPtr = std::shared_ptr< GilShop >; using GilShopItemPtr = std::shared_ptr< GilShopItem >; using GimmickAccessorPtr = std::shared_ptr< GimmickAccessor >; @@ -10420,6 +10605,7 @@ struct ZoneSharedGroup using JournalCategoryPtr = std::shared_ptr< JournalCategory >; using JournalGenrePtr = std::shared_ptr< JournalGenre >; using JournalSectionPtr = std::shared_ptr< JournalSection >; + using KineDriverOffGroupPtr = std::shared_ptr< KineDriverOffGroup >; using KnockbackPtr = std::shared_ptr< Knockback >; using LegacyQuestPtr = std::shared_ptr< LegacyQuest >; using LevePtr = std::shared_ptr< Leve >; @@ -10469,6 +10655,7 @@ struct ZoneSharedGroup using MinionRacePtr = std::shared_ptr< MinionRace >; using MinionRulesPtr = std::shared_ptr< MinionRules >; using MinionSkillTypePtr = std::shared_ptr< MinionSkillType >; + using MirageStoreSetItemPtr = std::shared_ptr< MirageStoreSetItem >; using MJIAnimalsPtr = std::shared_ptr< MJIAnimals >; using MJIBuildingPtr = std::shared_ptr< MJIBuilding >; using MJIBuildingPlacePtr = std::shared_ptr< MJIBuildingPlace >; @@ -10498,6 +10685,7 @@ struct ZoneSharedGroup using MJILivelyActorPtr = std::shared_ptr< MJILivelyActor >; using MJIMinionPopAreasPtr = std::shared_ptr< MJIMinionPopAreas >; using MJINamePtr = std::shared_ptr< MJIName >; + using MJINekomimiRequestPtr = std::shared_ptr< MJINekomimiRequest >; using MJIProgressPtr = std::shared_ptr< MJIProgress >; using MJIRankPtr = std::shared_ptr< MJIRank >; using MJIRecipePtr = std::shared_ptr< MJIRecipe >; @@ -10541,6 +10729,7 @@ struct ZoneSharedGroup using NotebookDivisionPtr = std::shared_ptr< NotebookDivision >; using NotebookDivisionCategoryPtr = std::shared_ptr< NotebookDivisionCategory >; using NotoriousMonsterPtr = std::shared_ptr< NotoriousMonster >; + using NotoriousMonsterTerritoryPtr = std::shared_ptr< NotoriousMonsterTerritory >; using NpcEquipPtr = std::shared_ptr< NpcEquip >; using NpcYellPtr = std::shared_ptr< NpcYell >; using OmenPtr = std::shared_ptr< Omen >; @@ -10730,6 +10919,7 @@ struct ZoneSharedGroup using UDS_PropertyPtr = std::shared_ptr< UDS_Property >; using UIColorPtr = std::shared_ptr< UIColor >; using UIConstPtr = std::shared_ptr< UIConst >; + using UILevelLookupPtr = std::shared_ptr< UILevelLookup >; using VaseFlowerPtr = std::shared_ptr< VaseFlower >; using VFXPtr = std::shared_ptr< VFX >; using VVDDataPtr = std::shared_ptr< VVDData >; @@ -10872,6 +11062,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_ChannelingIdList; std::set< uint32_t > m_CharaCardBaseIdList; std::set< uint32_t > m_CharaCardDecorationIdList; + std::set< uint32_t > m_CharaCardDesignCategoryIdList; std::set< uint32_t > m_CharaCardDesignPresetIdList; std::set< uint32_t > m_CharaCardDesignTypeIdList; std::set< uint32_t > m_CharaCardHeaderIdList; @@ -10925,9 +11116,11 @@ struct ZoneSharedGroup std::set< uint32_t > m_ContentExActionIdList; std::set< uint32_t > m_ContentFinderConditionIdList; std::set< uint32_t > m_ContentFinderConditionTransientIdList; + std::set< uint32_t > m_ContentFinderParamTableIdList; std::set< uint32_t > m_ContentGaugeIdList; std::set< uint32_t > m_ContentGaugeColorIdList; std::set< uint32_t > m_ContentMemberTypeIdList; + std::set< uint32_t > m_ContentNpcIdList; std::set< uint32_t > m_ContentNpcTalkIdList; std::set< uint32_t > m_ContentRandomSelectIdList; std::set< uint32_t > m_ContentRouletteIdList; @@ -10949,6 +11142,13 @@ struct ZoneSharedGroup std::set< uint32_t > m_CreditCastIdList; std::set< uint32_t > m_CreditListIdList; std::set< uint32_t > m_CreditListTextIdList; + std::set< uint32_t > m_CSBonusContentIdList; + std::set< uint32_t > m_CSBonusContentIdentifierIdList; + std::set< uint32_t > m_CSBonusContentTypeIdList; + std::set< uint32_t > m_CSBonusMissionIdList; + std::set< uint32_t > m_CSBonusMissionTypeIdList; + std::set< uint32_t > m_CSBonusSeasonIdList; + std::set< uint32_t > m_CSBonusTextDataIdList; std::set< uint32_t > m_CustomTalkIdList; std::set< uint32_t > m_CustomTalkDefineClientIdList; std::set< uint32_t > m_CustomTalkNestHandlersIdList; @@ -11009,6 +11209,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_EquipSlotCategoryIdList; std::set< uint32_t > m_EurekaAetherItemIdList; std::set< uint32_t > m_EurekaAethernetIdList; + std::set< uint32_t > m_EurekaDungeonPortalIdList; std::set< uint32_t > m_EurekaGrowDataIdList; std::set< uint32_t > m_EurekaLogosMixerProbabilityIdList; std::set< uint32_t > m_EurekaMagiaActionIdList; @@ -11051,6 +11252,8 @@ struct ZoneSharedGroup std::set< uint32_t > m_FCReputationIdList; std::set< uint32_t > m_FCRightsIdList; std::set< uint32_t > m_FestivalIdList; + std::set< uint32_t > m_FGSAddonIdList; + std::set< uint32_t > m_FGSStageUIIdList; std::set< uint32_t > m_FieldMarkerIdList; std::set< uint32_t > m_FishingBaitParameterIdList; std::set< uint32_t > m_FishingNoteInfoIdList; @@ -11112,6 +11315,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_GFateClimbing2ContentIdList; std::set< uint32_t > m_GFateClimbing2TotemTypeIdList; std::set< uint32_t > m_GFateRideShootingIdList; + std::set< uint32_t > m_GFateTypeIdList; std::set< uint32_t > m_GilShopIdList; std::set< uint32_t > m_GilShopItemIdList; std::set< uint32_t > m_GimmickAccessorIdList; @@ -11211,6 +11415,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_JournalCategoryIdList; std::set< uint32_t > m_JournalGenreIdList; std::set< uint32_t > m_JournalSectionIdList; + std::set< uint32_t > m_KineDriverOffGroupIdList; std::set< uint32_t > m_KnockbackIdList; std::set< uint32_t > m_LegacyQuestIdList; std::set< uint32_t > m_LeveIdList; @@ -11260,6 +11465,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_MinionRaceIdList; std::set< uint32_t > m_MinionRulesIdList; std::set< uint32_t > m_MinionSkillTypeIdList; + std::set< uint32_t > m_MirageStoreSetItemIdList; std::set< uint32_t > m_MJIAnimalsIdList; std::set< uint32_t > m_MJIBuildingIdList; std::set< uint32_t > m_MJIBuildingPlaceIdList; @@ -11289,6 +11495,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_MJILivelyActorIdList; std::set< uint32_t > m_MJIMinionPopAreasIdList; std::set< uint32_t > m_MJINameIdList; + std::set< uint32_t > m_MJINekomimiRequestIdList; std::set< uint32_t > m_MJIProgressIdList; std::set< uint32_t > m_MJIRankIdList; std::set< uint32_t > m_MJIRecipeIdList; @@ -11332,6 +11539,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_NotebookDivisionIdList; std::set< uint32_t > m_NotebookDivisionCategoryIdList; std::set< uint32_t > m_NotoriousMonsterIdList; + std::set< uint32_t > m_NotoriousMonsterTerritoryIdList; std::set< uint32_t > m_NpcEquipIdList; std::set< uint32_t > m_NpcYellIdList; std::set< uint32_t > m_OmenIdList; @@ -11521,6 +11729,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_UDS_PropertyIdList; std::set< uint32_t > m_UIColorIdList; std::set< uint32_t > m_UIConstIdList; + std::set< uint32_t > m_UILevelLookupIdList; std::set< uint32_t > m_VaseFlowerIdList; std::set< uint32_t > m_VFXIdList; std::set< uint32_t > m_VVDDataIdList; @@ -12223,6 +12432,12 @@ const std::set< uint32_t >& getCharaCardDecorationIdList() loadIdList( m_CharaCardDecorationDat, m_CharaCardDecorationIdList ); return m_CharaCardDecorationIdList; } +const std::set< uint32_t >& getCharaCardDesignCategoryIdList() +{ + if( m_CharaCardDesignCategoryIdList.size() == 0 ) + loadIdList( m_CharaCardDesignCategoryDat, m_CharaCardDesignCategoryIdList ); + return m_CharaCardDesignCategoryIdList; +} const std::set< uint32_t >& getCharaCardDesignPresetIdList() { if( m_CharaCardDesignPresetIdList.size() == 0 ) @@ -12541,6 +12756,12 @@ const std::set< uint32_t >& getContentFinderConditionTransientIdList() loadIdList( m_ContentFinderConditionTransientDat, m_ContentFinderConditionTransientIdList ); return m_ContentFinderConditionTransientIdList; } +const std::set< uint32_t >& getContentFinderParamTableIdList() +{ + if( m_ContentFinderParamTableIdList.size() == 0 ) + loadIdList( m_ContentFinderParamTableDat, m_ContentFinderParamTableIdList ); + return m_ContentFinderParamTableIdList; +} const std::set< uint32_t >& getContentGaugeIdList() { if( m_ContentGaugeIdList.size() == 0 ) @@ -12559,6 +12780,12 @@ const std::set< uint32_t >& getContentMemberTypeIdList() loadIdList( m_ContentMemberTypeDat, m_ContentMemberTypeIdList ); return m_ContentMemberTypeIdList; } +const std::set< uint32_t >& getContentNpcIdList() +{ + if( m_ContentNpcIdList.size() == 0 ) + loadIdList( m_ContentNpcDat, m_ContentNpcIdList ); + return m_ContentNpcIdList; +} const std::set< uint32_t >& getContentNpcTalkIdList() { if( m_ContentNpcTalkIdList.size() == 0 ) @@ -12685,6 +12912,48 @@ const std::set< uint32_t >& getCreditListTextIdList() loadIdList( m_CreditListTextDat, m_CreditListTextIdList ); return m_CreditListTextIdList; } +const std::set< uint32_t >& getCSBonusContentIdList() +{ + if( m_CSBonusContentIdList.size() == 0 ) + loadIdList( m_CSBonusContentDat, m_CSBonusContentIdList ); + return m_CSBonusContentIdList; +} +const std::set< uint32_t >& getCSBonusContentIdentifierIdList() +{ + if( m_CSBonusContentIdentifierIdList.size() == 0 ) + loadIdList( m_CSBonusContentIdentifierDat, m_CSBonusContentIdentifierIdList ); + return m_CSBonusContentIdentifierIdList; +} +const std::set< uint32_t >& getCSBonusContentTypeIdList() +{ + if( m_CSBonusContentTypeIdList.size() == 0 ) + loadIdList( m_CSBonusContentTypeDat, m_CSBonusContentTypeIdList ); + return m_CSBonusContentTypeIdList; +} +const std::set< uint32_t >& getCSBonusMissionIdList() +{ + if( m_CSBonusMissionIdList.size() == 0 ) + loadIdList( m_CSBonusMissionDat, m_CSBonusMissionIdList ); + return m_CSBonusMissionIdList; +} +const std::set< uint32_t >& getCSBonusMissionTypeIdList() +{ + if( m_CSBonusMissionTypeIdList.size() == 0 ) + loadIdList( m_CSBonusMissionTypeDat, m_CSBonusMissionTypeIdList ); + return m_CSBonusMissionTypeIdList; +} +const std::set< uint32_t >& getCSBonusSeasonIdList() +{ + if( m_CSBonusSeasonIdList.size() == 0 ) + loadIdList( m_CSBonusSeasonDat, m_CSBonusSeasonIdList ); + return m_CSBonusSeasonIdList; +} +const std::set< uint32_t >& getCSBonusTextDataIdList() +{ + if( m_CSBonusTextDataIdList.size() == 0 ) + loadIdList( m_CSBonusTextDataDat, m_CSBonusTextDataIdList ); + return m_CSBonusTextDataIdList; +} const std::set< uint32_t >& getCustomTalkIdList() { if( m_CustomTalkIdList.size() == 0 ) @@ -13045,6 +13314,12 @@ const std::set< uint32_t >& getEurekaAethernetIdList() loadIdList( m_EurekaAethernetDat, m_EurekaAethernetIdList ); return m_EurekaAethernetIdList; } +const std::set< uint32_t >& getEurekaDungeonPortalIdList() +{ + if( m_EurekaDungeonPortalIdList.size() == 0 ) + loadIdList( m_EurekaDungeonPortalDat, m_EurekaDungeonPortalIdList ); + return m_EurekaDungeonPortalIdList; +} const std::set< uint32_t >& getEurekaGrowDataIdList() { if( m_EurekaGrowDataIdList.size() == 0 ) @@ -13297,6 +13572,18 @@ const std::set< uint32_t >& getFestivalIdList() loadIdList( m_FestivalDat, m_FestivalIdList ); return m_FestivalIdList; } +const std::set< uint32_t >& getFGSAddonIdList() +{ + if( m_FGSAddonIdList.size() == 0 ) + loadIdList( m_FGSAddonDat, m_FGSAddonIdList ); + return m_FGSAddonIdList; +} +const std::set< uint32_t >& getFGSStageUIIdList() +{ + if( m_FGSStageUIIdList.size() == 0 ) + loadIdList( m_FGSStageUIDat, m_FGSStageUIIdList ); + return m_FGSStageUIIdList; +} const std::set< uint32_t >& getFieldMarkerIdList() { if( m_FieldMarkerIdList.size() == 0 ) @@ -13663,6 +13950,12 @@ const std::set< uint32_t >& getGFateRideShootingIdList() loadIdList( m_GFateRideShootingDat, m_GFateRideShootingIdList ); return m_GFateRideShootingIdList; } +const std::set< uint32_t >& getGFateTypeIdList() +{ + if( m_GFateTypeIdList.size() == 0 ) + loadIdList( m_GFateTypeDat, m_GFateTypeIdList ); + return m_GFateTypeIdList; +} const std::set< uint32_t >& getGilShopIdList() { if( m_GilShopIdList.size() == 0 ) @@ -14257,6 +14550,12 @@ const std::set< uint32_t >& getJournalSectionIdList() loadIdList( m_JournalSectionDat, m_JournalSectionIdList ); return m_JournalSectionIdList; } +const std::set< uint32_t >& getKineDriverOffGroupIdList() +{ + if( m_KineDriverOffGroupIdList.size() == 0 ) + loadIdList( m_KineDriverOffGroupDat, m_KineDriverOffGroupIdList ); + return m_KineDriverOffGroupIdList; +} const std::set< uint32_t >& getKnockbackIdList() { if( m_KnockbackIdList.size() == 0 ) @@ -14551,6 +14850,12 @@ const std::set< uint32_t >& getMinionSkillTypeIdList() loadIdList( m_MinionSkillTypeDat, m_MinionSkillTypeIdList ); return m_MinionSkillTypeIdList; } +const std::set< uint32_t >& getMirageStoreSetItemIdList() +{ + if( m_MirageStoreSetItemIdList.size() == 0 ) + loadIdList( m_MirageStoreSetItemDat, m_MirageStoreSetItemIdList ); + return m_MirageStoreSetItemIdList; +} const std::set< uint32_t >& getMJIAnimalsIdList() { if( m_MJIAnimalsIdList.size() == 0 ) @@ -14725,6 +15030,12 @@ const std::set< uint32_t >& getMJINameIdList() loadIdList( m_MJINameDat, m_MJINameIdList ); return m_MJINameIdList; } +const std::set< uint32_t >& getMJINekomimiRequestIdList() +{ + if( m_MJINekomimiRequestIdList.size() == 0 ) + loadIdList( m_MJINekomimiRequestDat, m_MJINekomimiRequestIdList ); + return m_MJINekomimiRequestIdList; +} const std::set< uint32_t >& getMJIProgressIdList() { if( m_MJIProgressIdList.size() == 0 ) @@ -14983,6 +15294,12 @@ const std::set< uint32_t >& getNotoriousMonsterIdList() loadIdList( m_NotoriousMonsterDat, m_NotoriousMonsterIdList ); return m_NotoriousMonsterIdList; } +const std::set< uint32_t >& getNotoriousMonsterTerritoryIdList() +{ + if( m_NotoriousMonsterTerritoryIdList.size() == 0 ) + loadIdList( m_NotoriousMonsterTerritoryDat, m_NotoriousMonsterTerritoryIdList ); + return m_NotoriousMonsterTerritoryIdList; +} const std::set< uint32_t >& getNpcEquipIdList() { if( m_NpcEquipIdList.size() == 0 ) @@ -16117,6 +16434,12 @@ const std::set< uint32_t >& getUIConstIdList() loadIdList( m_UIConstDat, m_UIConstIdList ); return m_UIConstIdList; } +const std::set< uint32_t >& getUILevelLookupIdList() +{ + if( m_UILevelLookupIdList.size() == 0 ) + loadIdList( m_UILevelLookupDat, m_UILevelLookupIdList ); + return m_UILevelLookupIdList; +} const std::set< uint32_t >& getVaseFlowerIdList() { if( m_VaseFlowerIdList.size() == 0 ) diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index c8954b51..a6b7cd13 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -42,41 +42,41 @@ enum ClientLobbyIpcType : enum ServerZoneIpcType : uint16_t { - Ping = 0x378, // updated 6.48 - Init = 0x2ac, // updated 6.48 + Ping = 0x1D9, // updated 6.58 hotfix 2 + Init = 0x12A, // updated 6.58 hotfix 2 - ActorFreeSpawn = 0x112, // updated 6.48 + ActorFreeSpawn = 0x195, // updated 6.58 hotfix 2 - InitZone = 0x71, // updated 6.48 - PrepareZoning = 0x188, // updated 6.48 + InitZone = 0x02D1, // updated 6.58 hotfix 2 + PrepareZoning = 0x0124, // updated 6.58 hotfix 2 - EffectResult = 0x2a3, // updated 6.48 - EffectResultBasic = 0xfa, // updated 6.48 + EffectResult = 0x0336, // updated 6.58 hotfix 2 + EffectResultBasic = 0x023A, // updated 6.58 hotfix 2 - ActorControl = 0xd4, // updated 6.48 - ActorControlTarget = 0xef, // updated 6.48 - ActorControlSelf = 0x3c1, // updated 6.48 - ActorCast = 0xc8, // updated 6.48 - ActorSetPos = 0x32c, // updated 6.48 - ActorMove = 0x1aa, // updated 6.48 - ActorGauge = 0x2a4, // updated 6.48 + ActorControl = 0x0148, // updated 6.58 hotfix 2 + ActorControlTarget = 0x032C, // updated 6.58 hotfix 2 + ActorControlSelf = 0x025D, // updated 6.58 hotfix 2 + ActorCast = 0x01BB, // updated 6.58 hotfix 2 + ActorSetPos = 0x029D, // updated 6.58 hotfix 2 + ActorMove = 0x011C, // updated 6.58 hotfix 2 + ActorGauge = 0x03B3, // updated 6.58 hotfix 2 /*! * @brief Used when resting */ - UpdateHpMpTp = 0x1fb, // updated 6.48 - UpdateClassInfo = 0x3e3, // updated 6.48 + UpdateHpMpTp = 0x007D, // updated 6.58 hotfix 2 + UpdateClassInfo = 0x0172, // updated 6.58 hotfix 2 /////////////////////////////////////////////////// ChatBanned = 0xF06B, - Playtime = 0x313, // updated 6.48 - Logout = 0x116, // updated 6.48 - CFNotify = 0x69, // updated 6.48 + Playtime = 0x03DE, // updated 6.58 hotfix 2 + Logout = 0x0378, // updated 6.58 hotfix 2 + CFNotify = 0x0279, // updated 6.58 hotfix 2 CFMemberStatus = 0x0079, CFDutyInfo = 0x1be, // updated 6.48 CFPlayerInNeed = 0xF07F, - CFPreferredRole = 0x160, // updated 6.48 + CFPreferredRole = 0x282, // updated 6.58 hotfix 2 CFCancel = 0x1bb, // updated 6.48 SocialRequestError = 0xF0AD, @@ -93,26 +93,26 @@ enum ServerZoneIpcType : WorldVisitList = 0xF0FE, // added 4.5 - SocialList = 0xb1, // updated 6.48 + SocialList = 0x1F2, // updated 6.58 hotfix 2 - ExamineSearchInfo = 0x357, // updated 6.48 - UpdateSearchInfo = 0x115, // updated 6.48 - InitSearchInfo = 0x70, // updated 6.48 + ExamineSearchInfo = 0x014A, // updated 6.58 hotfix 2 + UpdateSearchInfo = 0x00CF, // updated 6.58 hotfix 2 + InitSearchInfo = 0x329, // updated 6.58 hotfix 2 ExamineSearchComment = 0x199, // updated 6.48 ServerNoticeShort = 0x0333, // updated 5.58h - ServerNotice = 0x2b1, // updated 6.48 - SystemLogMessage = 0x3c8, // updated 6.48 - SetOnlineStatus = 0x17a, // updated 6.48 + ServerNotice = 0x33B, // updated 6.58 hotfix 2 + SystemLogMessage = 0x03A9, // updated 6.58 hotfix 2 + SetOnlineStatus = 0x285, // updated 6.58 hotfix 2 - CountdownInitiate = 0x399, // updated 6.48 - CountdownCancel = 0x342, // updated 6.48 + CountdownInitiate = 0x376, // updated 6.58 hotfix 2 + CountdownCancel = 0x2B7, // updated 6.58 hotfix 2 PlayerAddedToBlacklist = 0xe2, // updated 6.48 PlayerRemovedFromBlacklist = 0xd0, // updated 6.48 - BlackList = 0x233, // updated 6.48 + BlackList = 0x38A, // updated 6.58 hotfix 2 - LinkshellList = 0x1f8, // updated 6.48 + LinkshellList = 0x2B2, // updated 6.58 hotfix 2 CrossWorldLinkshellList = 0x3cc, // updated 6.48 FellowshipList = 0x1c5, // updated 6.48 @@ -125,111 +125,111 @@ enum ServerZoneIpcType : MarketTaxRates = 0x01F8, // updated 5.35h - MarketBoardSearchResult = 0x3d6, // updated 6.48 - MarketBoardItemListingCount = 0x306, // updated 6.48 - MarketBoardItemListingHistory = 0x2f4, // updated 6.48 - MarketBoardItemListing = 0x1db, // updated 6.48 - MarketBoardPurchase = 0x1f0, // updated 6.48 - ItemMarketBoardInfo = 0x11b, // updated 6.48 + MarketBoardSearchResult = 0x0161, // updated 6.58 hotfix 2 + MarketBoardItemListingCount = 0x0286, // updated 6.58 hotfix 2 + MarketBoardItemListingHistory = 0x0229, // updated 6.58 hotfix 2 + MarketBoardItemListing = 0x03E3, // updated 6.58 hotfix 2 + MarketBoardPurchase = 0x0143, // updated 6.58 hotfix 2 + ItemMarketBoardInfo = 0x01BC, // updated 6.58 hotfix 2 CharaFreeCompanyTag = 0x013B, // updated 4.5 FreeCompanyBoardMsg = 0x03DB, // updated 5.58h - FreeCompanyInfo = 0x30f, // updated 6.48 - FreeCompanyDialog = 0x1b4, // updated 6.48 + FreeCompanyInfo = 0x02D5, // updated 6.58 hotfix 2 + FreeCompanyDialog = 0x029F, // updated 6.58 hotfix 2 ExamineFreeCompanyInfo = 0x158, // updated 6.48 FreeCompanyUpdateShortMessage = 0xF157, // added 5.0 - StatusEffectList = 0x1dd, // updated 6.48 - EurekaStatusEffectList = 0x192, // updated 6.48 - BossStatusEffectList = 0x2cb, // updated 6.48 - StatusEffectList2 = 0x166, // updated 6.48 - StatusEffectList3 = 0x31f, // updated 6.48 - Effect = 0x354, // updated 6.48 - AoeEffect8 = 0x18f, // updated 6.48 - AoeEffect16 = 0x38f, // updated 6.48 - AoeEffect24 = 0xd1, // updated 6.48 - AoeEffect32 = 0x340, // updated 6.48 - PersistantEffect = 0x31f, // updated 6.48 + StatusEffectList = 0x0383, // updated 6.58 hotfix 2 + EurekaStatusEffectList = 0x3A8, // updated 6.58 hotfix 2 + BossStatusEffectList = 0x28C, // updated 6.58 hotfix 2 + StatusEffectList2 = 0x0369, // updated 6.58 hotfix 2 + StatusEffectList3 = 0x0163, // updated 6.58 hotfix 2 + Effect = 0x037D, // updated 6.58 hotfix 2 + AoeEffect8 = 0x0F4, // updated 6.58 hotfix 2 + AoeEffect16 = 0x121, // updated 6.58 hotfix 2 + AoeEffect24 = 0x2E3, // updated 6.58 hotfix 2 + AoeEffect32 = 0x1FB, // updated 6.58 hotfix 2 + PersistantEffect = 0x163, // updated 6.58 hotfix 2 - PlaceFieldMarker = 0x194, // updated 6.48 - PlaceFieldMarkerPreset = 0x221, // updated 6.48 + PlaceFieldMarker = 0x02E4, // updated 6.58 hotfix 2 + PlaceFieldMarkerPreset = 0x030A, // updated 6.58 hotfix 2 - GCAffiliation = 0x280, // updated 6.48 + GCAffiliation = 0x35D, // updated 6.58 hotfix 2 - PlayerSpawn = 0x10e, // updated 6.48 - NpcSpawn = 0x91, // updated 6.48 - NpcSpawn2 = 0x2b6, // updated 6.48 + PlayerSpawn = 0x039C, // updated 6.58 hotfix 2 + NpcSpawn = 0x00A7, // updated 6.58 hotfix 2 + NpcSpawn2 = 0x338, // updated 6.58 hotfix 2? SomeCustomiseChangePacketProbably = 0x00CD, // added 5.18 PartyList = 0x16f, // updated 6.48 PartyMessage = 0x336, // updated 6.48 - HateRank = 0x33f, // updated 6.48 - HateList = 0x356, // updated 6.48 - ObjectSpawn = 0x190, // updated 6.48 - ObjectDespawn = 0xd2, // updated 6.48 + HateRank = 0x2A7, // updated 6.58 hotfix 2 + HateList = 0x26B, // updated 6.58 hotfix 2 + ObjectSpawn = 0x03B8, // updated 6.58 hotfix 2 + ObjectDespawn = 0x1D8, // updated 6.58 hotfix 2 SilentSetClassJob = 0xF18E, // updated 5.0 - seems to be the case, not sure if it's actually used for anything - PlayerSetup = 0x20e, // updated 6.48 - PlayerStats = 0x2f3, // updated 6.48 - ActorOwner = 0x20e, // updated 6.48 - PlayerStateFlags = 0x2ed, // updated 6.48 - PlayerClassInfo = 0xfb, // updated 6.48 + PlayerSetup = 0x035F, // updated 6.58 hotfix 2 + PlayerStats = 0x034F, // updated 6.58 hotfix 2 + ActorOwner = 0x2c3, // updated 6.58 hotfix 2? + PlayerStateFlags = 0x1B6, // updated 6.58 hotfix 2 + PlayerClassInfo = 0x238, // updated 6.58 hotfix 2 PlayerUpdateLook = 0xa8, // updated 6.48 - CharaVisualEffect = 0x2fc, // updated 6.48 + CharaVisualEffect = 0x0C1, // updated 6.58 hotfix 2 - ModelEquip = 0x82, // updated 6.48 - Examine = 0x200, // updated 6.48 + ModelEquip = 0x27D, // updated 6.58 hotfix 2 + Examine = 0x02C0, // updated 6.58 hotfix 2 CharaNameReq = 0x267, // updated 6.48 // nb: see #565 on github UpdateRetainerItemSalePrice = 0xF19F, // updated 5.0 RetainerSaleHistory = 0x23d, // updated 6.48 - RetainerInformation = 0x2fe, // updated 6.48 + RetainerInformation = 0x00ED, // updated 6.58 hotfix 2 SetLevelSync = 0x1186, // not updated for 4.4, not sure what it is anymore - ItemInfo = 0x3a4, // updated 6.48 - ContainerInfo = 0x208, // updated 6.48 - InventoryTransactionFinish = 0x298, // updated 6.48 - InventoryTransaction = 0x3db, // updated 6.48 - CurrencyCrystalInfo = 0x389, // updated 6.48 + ItemInfo = 0x02F0, // updated 6.58 hotfix 2 + ContainerInfo = 0x0069, // updated 6.58 hotfix 2 + InventoryTransactionFinish = 0x009C, // updated 6.58 hotfix 2 + InventoryTransaction = 0x02BD, // updated 6.58 hotfix 2 + CurrencyCrystalInfo = 0x02DE, // updated 6.58 hotfix 2 - InventoryActionAck = 0x134, // updated 6.48 - UpdateInventorySlot = 0xa4, // updated 6.48 + InventoryActionAck = 0x00DD, // updated 6.58 hotfix 2 + UpdateInventorySlot = 0x034D, // updated 6.58 hotfix 2 - HuntingLogEntry = 0xb9, // updated 6.48 + HuntingLogEntry = 0x388, // updated 6.58 hotfix 2 - EventPlay = 0x2db, // updated 6.48 - EventPlay4 = 0xe8, // updated 6.48 - EventPlay8 = 0xfe, // updated 6.48 - EventPlay16 = 0x8f, // updated 6.48 - EventPlay32 = 0x374, // updated 6.48 - EventPlay64 = 0x27f, // updated 6.48 - EventPlay128 = 0x365, // updated 6.48 - EventPlay255 = 0xdb, // updated 6.48 - EventStart = 0x2be, // updated 6.48 - EventFinish = 0x289, // updated 6.48 + EventPlay = 0x0155, // updated 6.58 hotfix 2 + EventPlay4 = 0x00D0, // updated 6.58 hotfix 2 + EventPlay8 = 0x022B, // updated 6.58 hotfix 2 + EventPlay16 = 0x00D2, // updated 6.58 hotfix 2 + EventPlay32 = 0x02CF, // updated 6.58 hotfix 2 + EventPlay64 = 0x01D4, // updated 6.58 hotfix 2 + EventPlay128 = 0x039F, // updated 6.58 hotfix 2 + EventPlay255 = 0x0073, // updated 6.58 hotfix 2 + EventStart = 0x0146, // updated 6.58 hotfix 2 + EventFinish = 0x0339, // updated 6.58 hotfix 2 - EventContinue = 0xd9, // updated 6.48 + EventReturn = 0x11d, // updated 6.45 EventLinkshell = 0x1169, - QuestActiveList = 0x108, // updated 6.48 + QuestActiveList = 0x247, // updated 6.58 hotfix 2 QuestUpdate = 0x2f0, // updated 6.48 - QuestCompleteList = 0x17f, // updated 6.48 + QuestCompleteList = 0x352, // updated 6.58 hotfix 2 QuestFinish = 0xf4, // updated 6.48 - MSQTrackerComplete = 0x20a, // updated 6.48 + MSQTrackerComplete = 0x1A9, // updated 6.58 hotfix 2 MSQTrackerProgress = 0xF1CD, // updated 4.5 ? this actually looks like the two opcodes have been combined, see #474 QuestMessage = 0x0220, // updated 5.58h - QuestTracker = 0x2ec, // updated 6.48 + QuestTracker = 0x27C, // updated 6.58 hotfix 2 - Mount = 0x242, // updated 6.48 + Mount = 0x09F, // updated 6.58 hotfix 2 - DirectorVars = 0x114, // updated 6.48 + DirectorVars = 0x3A6, // updated 6.58 hotfix 2 SomeDirectorUnk1 = 0x0084, // updated 5.18 SomeDirectorUnk2 = 0xF0C1, // updated 5.18 SomeDirectorUnk4 = 0x03DD, // updated 5.58h @@ -241,23 +241,23 @@ enum ServerZoneIpcType : CFAvailableContents = 0xF1FD, // updated 4.2 - WeatherChange = 0x21c, // updated 6.48 + WeatherChange = 0x021D, // updated 6.58 hotfix 2 PlayerTitleList = 0x17c, // updated 6.48 Discovery = 0x14f, // updated 6.48 EorzeaTimeOffset = 0x1a2, // updated 6.48 - EquipDisplayFlags = 0x24e, // updated 6.48 + EquipDisplayFlags = 0x33A, // updated 6.58 hotfix 2 MiniCactpotInit = 0x0286, // added 5.31 - ShopMessage = 0x0287, // updated 5.58h + ShopMessage = 0x016F, // updated 6.58 hotfix 2 LootMessage = 0x219, // updated 6.48 - ResultDialog = 0x21f, // updated 6.48 - DesynthResult = 0x296, // updated 6.48 + ResultDialog = 0x0362, // updated 6.58 hotfix 2 + DesynthResult = 0x007F, // updated 6.58 hotfix 2 /// Housing ////////////////////////////////////// - LandSetInitialize = 0x228, // updated 6.48 + LandSetInitialize = 0x1C9, // updated 6.58 hotfix 2 LandUpdate = 0x26c, // updated 6.48 LandAvailability = 0x258, // updated 6.48 YardObjectSpawn = 0x2c0, // updated 6.48 @@ -267,13 +267,13 @@ enum ServerZoneIpcType : LandRename = 0x255, // updated 6.48 HousingEstateGreeting = 0x253, // updated 6.48 HousingUpdateLandFlagsSlot = 0x3a1, // updated 6.48 - HousingLandFlags = 0x197, // updated 6.48 + HousingLandFlags = 0x330, // updated 6.58 hotfix 2 HousingShowEstateGuestAccess = 0x2f2, // updated 6.48 - HousingObjectInitialize = 0x39e, // updated 6.48 + HousingObjectInitialize = 0x1AA, // updated 6.58 hotfix 2 HousingInternalObjectSpawn = 0x31c, // updated 6.48 - HousingWardInfo = 0x395, // updated 6.48 + HousingWardInfo = 0x327, // updated 6.58 hotfix 2? HousingObjectMove = 0x21b, // updated 6.48 HousingObjectDye = 0x2a6, // updated 6.48 @@ -292,8 +292,8 @@ enum ServerZoneIpcType : DutyGauge = 0x02E5, // updated 5.58h // daily quest info -> without them sent, login will take longer... - DailyQuests = 0x90, // updated 6.48 - DailyQuestRepeatFlags = 0x382, // updated 6.48 + DailyQuests = 0x2EF, // updated 6.58 hotfix 2 + DailyQuestRepeatFlags = 0x134, // updated 6.58 hotfix 2 MapUpdate = 0xa3, // updated 6.48 MapUpdate4 = 0x345, // updated 6.48 @@ -316,19 +316,19 @@ enum ServerZoneIpcType : MahjongEndGame = 0x02C6, // finished oorasu(all-last) round; shows a result screen. /// Airship & Submarine ////////////////////////////////////// - AirshipTimers = 0x34f, // updated 6.48 - AirshipStatus = 0x16b, // updated 6.48 - AirshipStatusList = 0x2e4, // updated 6.48 - AirshipExplorationResult = 0x359, // updated 6.48 + AirshipTimers = 0x0123, // updated 6.58 hotfix 2 + AirshipStatus = 0x0291, // updated 6.58 hotfix 2 + AirshipStatusList = 0x023B, // updated 6.58 hotfix 2 + AirshipExplorationResult = 0x01BD, // updated 6.58 hotfix 2 - SubmarineTimers = 0x3af, // updated 6.48 - SubmarineProgressionStatus = 0x152, // updated 6.48 - SubmarineStatusList = 0xc4, // updated 6.48 - SubmarineExplorationResult = 0x376, // updated 6.48 + SubmarineTimers = 0x0185, // updated 6.58 hotfix 2 + SubmarineProgressionStatus = 0x02DD, // updated 6.58 hotfix 2 + SubmarineStatusList = 0x03E2, // updated 6.58 hotfix 2 + SubmarineExplorationResult = 0x02AA, // updated 6.58 hotfix 2 - EnvironmentControl = 0x137, // updated 6.48 + EnvironmentControl = 0x02FC, // updated 6.58 hotfix 2 RSVData = 0x212, // updated 6.48 - IslandWorkshopSupplyDemand = 0xf9, // updated 6.48 + IslandWorkshopSupplyDemand = 0x013C, // updated 6.58 hotfix 2 }; /** @@ -337,10 +337,10 @@ enum ServerZoneIpcType : enum ClientZoneIpcType : uint16_t { - PingHandler = 0x238, // updated 6.48 - InitHandler = 0x3b6, // updated 6.48 + PingHandler = 0x2AE, // updated 6.58 hotfix 2 + InitHandler = 0x1CE, // updated 6.58 hotfix 2 - FinishLoadingHandler = 0x2ac, // updated 6.48 + FinishLoadingHandler = 0x12A, // updated 6.58 hotfix 2 CFCommenceHandler = 0x0381, // updated 5.58h @@ -348,7 +348,7 @@ enum ClientZoneIpcType : CFRegisterDuty = 0x01BD, // updated 5.58h CFRegisterRoulette = 0x037A, // updated 5.58h PlayTimeHandler = 0x02B7, // updated 5.58h - LogoutHandler = 0x1ad, // updated 6.48 + LogoutHandler = 0x384, // updated 6.58 hotfix 2 CancelLogout = 0x01e3, // updated 6.31h CFDutyInfoHandler = 0xF078, // updated 4.2 @@ -356,31 +356,31 @@ enum ClientZoneIpcType : SocialResponseHandler = 0x023B, // updated 5.58h CreateCrossWorldLS = 0x9999, // updated 5.58h - ChatHandler = 0x1df, // updated 6.48 + ChatHandler = 0x246, // updated 6.58 hotfix 2 PartyChatHandler = 0x0065, PartySetLeaderHandler = 0x036C, // updated 5.58h LeavePartyHandler = 0x019D, // updated 5.58h KickPartyMemberHandler = 0x0262, // updated 5.58h DisbandPartyHandler = 0x0276, // updated 5.58h - SocialListHandler = 0x206, // updated 6.40 - SetSearchInfoHandler = 0x230, // updated 6.48 - ReqSearchInfoHandler = 0x03b0, // updated 6.31h + SocialListHandler = 0x10B, // updated 6.58 hotfix 2 + SetSearchInfoHandler = 0x01A0, // updated 6.58 hotfix 2 + ReqSearchInfoHandler = 0x0235, // updated 6.58 hotfix 2 ReqExamineSearchCommentHandler = 0x00E7, // updated 5.0 ReqRemovePlayerFromBlacklist = 0x00B4, // updated 5.58h - BlackListHandler = 0x153, // updated 6.48 + BlackListHandler = 0x284, // updated 6.58 hotfix 2 PlayerSearchHandler = 0x037D, // updated 5.58h - LinkshellListHandler = 0x03B6, // updated 5.58h + LinkshellListHandler = 0x0302, // updated 6.58 hotfix 2 MarketBoardRequestItemListingInfo = 0x00F4, // updated 5.58h MarketBoardRequestItemListings = 0x0122, // updated 5.58h MarketBoardSearch = 0x0082, // updated 5.58h - MarketBoardPurchaseHandler = 0x15b, // updated 6.48 + MarketBoardPurchaseHandler = 0x0322, // updated 6.58 hotfix 2 ReqExamineFcInfo = 0xF37B, // updated 5.58h (prepended F. Conflicts with FinishLoadingHandler 6.38) - FcInfoReqHandler = 0x9999, // unknown + FcInfoReqHandler = 0x33B, // updated 6.58 hotfix 2 FreeCompanyUpdateShortMessageHandler = 0x0123, // added 5.0 @@ -388,35 +388,35 @@ enum ClientZoneIpcType : ReqJoinNoviceNetwork = 0x0129, // updated 4.2 - ReqCountdownInitiate = 0x03e1, // updated 6.31h + ReqCountdownInitiate = 0x03E3, // updated 6.58 hotfix 2 ReqCountdownCancel = 0x023a, // updated 6.31h ZoneLineHandler = 0x34e, // updated 6.48 - ClientTrigger = 0x186, // updated 6.48 + ClientTrigger = 0x035C, // updated 6.58 hotfix 2 DiscoveryHandler = 0x038B, // updated 5.58h - SkillHandler = 0xa7, // updated 6.48 - GMCommand1 = 0x2f9, // updated 6.48 + SkillHandler = 0x07C, // updated 6.58 hotfix 2 + GMCommand1 = 0x152, // updated 6.58 hotfix 2 GMCommand2 = 0x299, // updated 6.48 - AoESkillHandler = 0x65, // updated 6.48 + AoESkillHandler = 0x0FC, // updated 6.58 hotfix 2 - UpdatePositionHandler = 0x3b5, // updated 6.48 + UpdatePositionHandler = 0x0256, // updated 6.58 hotfix 2 - InventoryModifyHandler = 0x2da, // updated 6.48 + InventoryModifyHandler = 0x023E, // updated 6.58 hotfix 2 InventoryEquipRecommendedItems = 0x01C9, // updated 5.58h ReqPlaceHousingItem = 0x02D4, // updated 5.58h BuildPresetHandler = 0x0223, // updated 5.58h - TalkEventHandler = 0x1a8, // updated 6.48 + TalkEventHandler = 0x23A, // updated 6.58 hotfix 2 EmoteEventHandler = 0x00B0, // updated 5.58h WithinRangeEventHandler = 0x1b9, // updated 6.48 OutOfRangeEventHandler = 0x263, // updated 6.48 - EnterTeriEventHandler = 0x370, // updated 6.48 + EnterTeriEventHandler = 0x105, // updated 6.58 hotfix 2 ShopEventHandler = 0x0384, // updated 5.58h - ReturnEventHandler = 0xef, // updated 6.48 - TradeReturnEventHandler = 0x1fb, // updated 6.48 + ReturnEventHandler = 0x07D, // updated 6.58 hotfix 2 + TradeReturnEventHandler = 0x37D, // updated 6.58 hotfix 2 TradeReturnEventHandler2 = 0x354, // updated 6.48 EventYield2Handler = 0x021D, // updated 5.58h EventYield16Handler = 0x0207, // updated 5.58h @@ -424,7 +424,7 @@ enum ClientZoneIpcType : LinkshellEventHandler = 0x9999, // unknown LinkshellEventHandler1 = 0x9999, // unknown - ReqEquipDisplayFlagsChange = 0x03BC, // updated 6.30h + ReqEquipDisplayFlagsChange = 0x0150, // updated 6.58 hotfix 2 LandRenameHandler = 0x028E, // updated 5.58h HousingUpdateHouseGreeting = 0x0343, // updated 5.58h @@ -434,7 +434,7 @@ enum ClientZoneIpcType : SetSharedEstateSettings = 0x00D2, // updated 5.58h - UpdatePositionInstance = 0xa5, // updated 6.48 + UpdatePositionInstance = 0x0227, // updated 6.58 hotfix 2 PerformNoteHandler = 0x0243, // updated 5.58h diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index 590354af..cdafb856 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -686,32 +686,41 @@ namespace Sapphire::Network::Packets::Server uint16_t activeMinion; uint8_t u23; uint8_t u24; - uint8_t spawnIndex; + uint8_t spawnIndex; // need to recheck the position of this field in the range of u23-u25 + + //uint16_t u25c; + uint8_t u25cl; // spilted to prevent extra padding byte + uint8_t u25ch; + uint8_t state; uint8_t persistentEmote; uint8_t modelType; uint8_t subtype; uint8_t voice; - uint16_t u25c; uint8_t enemyType; + uint8_t u28; uint8_t level; uint8_t classJob; uint8_t u26d; - uint16_t u27a; + + //uint16_t u27a; + uint8_t u27al; // spilted to prevent extra padding byte + uint8_t u27ah; + uint8_t mountHead; uint8_t mountBody; uint8_t mountFeet; uint8_t mountColor; uint8_t scale; uint8_t elementData[6]; - uint8_t unknown5_5; Common::StatusEffect effect[30]; Common::FFXIVARR_POSITION3 pos; uint32_t models[10]; + uint8_t unknown6_58[10]; char name[32]; uint8_t look[26]; char fcTag[6]; - uint32_t unk30[2]; + uint8_t padding[6]; }; /** @@ -784,6 +793,7 @@ namespace Sapphire::Network::Packets::Server Common::StatusEffect effect[30]; Common::FFXIVARR_POSITION3 pos; uint32_t models[10]; + uint8_t unknown6_58[10]; char name[32]; uint8_t look[26]; char fcTag[6]; @@ -953,10 +963,9 @@ namespace Sapphire::Network::Packets::Server */ struct FFXIVIpcPlayerSetup : FFXIVIpcBasePacket< PlayerSetup > { - // plain C types for a bit until the packet is actually fixed. - // makes conversion between different editors easier. uint64_t contentId; uint64_t crest; + uint64_t unknown10; uint32_t charId; uint32_t restedExp; uint32_t companionCurrentExp; @@ -978,10 +987,6 @@ namespace Sapphire::Network::Packets::Server uint16_t unknownPvp52[4]; uint16_t pvpSeriesExp; uint16_t playerCommendations; - uint16_t unknown5C; - uint16_t unknown5E; - uint16_t pvpFrontlineWeeklyCampaigns; - uint16_t enhancedAnimaGlassProgress; uint16_t unknown64[8]; uint16_t pvpRivalWingsTotalMatches; uint16_t pvpRivalWingsTotalVictories; @@ -1002,36 +1007,22 @@ namespace Sapphire::Network::Packets::Server uint8_t namedayDay; uint8_t cityState; uint8_t homepoint; - uint8_t unknown83; - uint8_t petHotBar; + uint8_t unknown8D[3]; uint8_t companionRank; uint8_t companionStars; uint8_t companionSp; - uint8_t companionUnk86; + uint8_t companionUnk93; uint8_t companionColor; uint8_t companionFavFeed; uint8_t favAetheryteCount; - uint8_t unknown8C[4]; - uint8_t hasRelicBook; - uint8_t relicBookId; + uint8_t unknown97[5]; uint8_t sightseeing21To80Unlock; uint8_t sightseeingHeavenswardUnlock; - uint8_t unknown94[2]; - uint8_t craftingMasterMask; - uint8_t unknown97[9]; - uint8_t unknownA0[3]; - uint8_t pvpSeriesLevel; - uint8_t pvpMalmstonesClaimed; - uint8_t lastSeasonMalmstonesEarned; - uint8_t lastSeasonMalmstonesClaimed; - uint8_t unknownA7[7]; - uint32_t exp[30]; - uint32_t pvpTotalExp; - uint32_t unknownPvp124; - uint32_t pvpExp; - uint32_t pvpFrontlineOverallRanks[3]; - uint32_t unknown138; - uint16_t levels[30]; + uint8_t unknown9E[26]; + uint32_t exp[Common::CLASSJOB_SLOTS]; + uint32_t unknown138[7]; + uint16_t levels[Common::CLASSJOB_SLOTS]; + /* uint16_t unknown178[8]; uint16_t fishingRecordsFishId[33]; uint16_t fishingRecordsFishLength[33]; @@ -1039,13 +1030,15 @@ namespace Sapphire::Network::Packets::Server uint16_t unknown21C[6]; uint16_t pvpFrontlineWeeklyRanks[3]; uint16_t unknownMask22C[8]; + */ + uint8_t unknown194[218]; uint8_t companionName[21]; uint8_t companionDefRank; uint8_t companionAttRank; uint8_t companionHealRank; uint8_t mountGuideMask[33]; uint8_t ornamentMask[4]; - uint8_t unknown281[16]; + uint8_t unknown281[23]; char name[32]; uint8_t unknown293[16]; uint8_t unknown2A3; @@ -1185,7 +1178,6 @@ namespace Sapphire::Network::Packets::Server uint8_t isSpecialist; uint16_t syncedLevel; // Locks actions, equipment, prob more. Player's current level (synced). uint16_t classLevel; // Locks roles, prob more. Player's actual unsynced level. - uint32_t roleActions[10]; }; /** @@ -2270,7 +2262,7 @@ namespace Sapphire::Network::Packets::Server uint8_t padding[3]; }; - struct FFXIVIpcEventContinue : FFXIVIpcBasePacket< EventContinue > + struct FFXIVIpcEventReturn : FFXIVIpcBasePacket< EventReturn > { uint32_t eventId; uint16_t scene; diff --git a/src/world/Manager/MapMgr.cpp b/src/world/Manager/MapMgr.cpp index 34c3fd58..5d0a5bcf 100644 --- a/src/world/Manager/MapMgr.cpp +++ b/src/world/Manager/MapMgr.cpp @@ -67,7 +67,7 @@ void Sapphire::World::Manager::MapMgr::updateAll( Entity::Player& player ) { auto quest = m_quests[ npcData ]; - if( quest->issuerLocation == eventNpc.first ) + if( quest && quest->issuerLocation == eventNpc.first ) { insertQuest( player, npcData, mapData ); } @@ -176,7 +176,7 @@ void Sapphire::World::Manager::MapMgr::updateAll( Entity::Player& player ) { auto quest = m_quests[ eObjData ]; - if( quest->issuerLocation == eventObj.first ) + if( quest && quest->issuerLocation == eventObj.first ) { insertQuest( player, eObjData, mapData ); } @@ -219,7 +219,7 @@ void Sapphire::World::Manager::MapMgr::updateQuests( Entity::Player& player ) { auto quest = m_quests[ npcData ]; - if( quest->issuerLocation == eventNpc.first ) + if( quest && quest->issuerLocation == eventNpc.first ) { insertQuest( player, npcData, mapData ); } @@ -249,7 +249,7 @@ void Sapphire::World::Manager::MapMgr::updateQuests( Entity::Player& player ) { auto quest = m_quests[ eObjData ]; - if( quest->issuerLocation == eventObj.first ) + if( quest && quest->issuerLocation == eventObj.first ) { insertQuest( player, eObjData, mapData ); } @@ -269,7 +269,7 @@ void Sapphire::World::Manager::MapMgr::insertQuest( Entity::Player& player, uint auto quest = m_quests[ questId ]; - if( isQuestVisible( player, questId, quest ) ) + if( quest && isQuestVisible( player, questId, quest ) ) { auto script = scriptMgr.getNativeScriptHandler().getScript< Sapphire::ScriptAPI::EventScript >( questId ); @@ -423,15 +423,7 @@ bool Sapphire::World::Manager::MapMgr::isQuestVisible( Entity::Player& player, u if( !player.isQuestCompleted( questPtr->previousQuest[ i ] ) ) { - if( i == 0 && questPtr->previousQuest0Sequence != 0 ) - { - if( player.getQuestSeq( questPtr->previousQuest[ i ] ) < questPtr->previousQuest0Sequence ) - return false; - } - else - { - return false; - } + return false; } } } diff --git a/src/world/Network/Handlers/EventHandlers.cpp b/src/world/Network/Handlers/EventHandlers.cpp index 893ae18f..5ae93050 100644 --- a/src/world/Network/Handlers/EventHandlers.cpp +++ b/src/world/Network/Handlers/EventHandlers.cpp @@ -320,7 +320,7 @@ void Sapphire::Network::GameConnection::eventYieldHandler( const Packets::FFXIVA scriptMgr.onEventYield( player, eventId, scene, param ); - auto response = makeZonePacket< FFXIVIpcEventContinue >( player.getId() ); + auto response = makeZonePacket< FFXIVIpcEventReturn >( player.getId() ); response->data().eventId = eventId; response->data().scene = scene; player.queuePacket( response );