1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-27 22:57:45 +00:00

Merge pull request #709 from collett8192/update_5.45hotfix

Update to 5.45 hotfix.
This commit is contained in:
Adam 2021-02-23 09:52:48 +11:00 committed by GitHub
commit b1ab980d01
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 1606 additions and 867 deletions

View file

@ -51,11 +51,11 @@ namespace Sapphire::Common
enum InventoryOperation : uint16_t enum InventoryOperation : uint16_t
{ {
Discard = 0x013C, Discard = 0x0117,
Move = 0x013D, Move = 0x0118,
Swap = 0x013E, Swap = 0x0119,
Split = 0x013F, Split = 0x011A,
Merge = 0x0141, Merge = 0x011C,
}; };
enum ClientLanguage : uint8_t enum ClientLanguage : uint8_t
@ -161,44 +161,27 @@ namespace Sapphire::Common
enum class EquipSlotCategory : uint8_t enum class EquipSlotCategory : uint8_t
{ {
// main slots MainHand = 1,
OffHand = 2,
CharaMainHand = 0, Head = 3,
CharaOffHand = 1, Body = 4,
CharaHead = 2, Hands = 5,
CharaBody = 3, Waist = 6,
CharaHands = 4, Legs = 7,
CharaWaist = 5, Feet = 8,
CharaLegs = 6, Ears = 9,
CharaFeet = 7, Neck = 10,
CharaEars = 8, Wrist = 11,
CharaNeck = 9, Ring = 12,
CharaWrist = 10, MainTwoHandedWeapon = 13,
CharaRing = 11, //MainOrOffHand = 14, // unused
CharaSoulCrystal = 12, BodyDisallowHead = 15,
BodyDisallowHandsLegsFeet = 16,
/* following slots not seem to exist any more. SoulCrystal = 17,
when multi-slot gear is moved into equipment slot, normal slot listed above is used. LegsDisallowFeet = 18,
client will move any incompatible gears into armory but no InventoryModifiyHandler is sent. BodyDisallowAll = 19,
server need to move those silently in order to sync with client. BodyDisallowHands = 20,
*/ BodyDisallowLegsFeet = 21,
/*! Cannot equip gear to offhand slot */
//MainTwoHandedWeapon = 13,
/*! Can be equipped in either main or offhand slot */
//MainOrOffHand = 14, // unused
/*! Cannot equip gear to head */
//BodyDisallowHead = 15,
/*! Cannot equip gear to hands, legs and feet slots */
//BodyDisallowHandsLegsFeet = 16,
/*! Cannot equip gear to feet slot */
//LegsDisallowFeet = 18,
/*! Cannot equp gear to head, hands, legs, feet slots */
//BodyDisallowAll = 19,
/*! Cannot equip gear to hands slot */
//BodyDisallowHands = 20,
/*! Cannot equip gear to legs & feet slots */
//BodyDisallowLegsFeet = 21,
}; };
enum InventoryType : uint16_t enum InventoryType : uint16_t

File diff suppressed because it is too large Load diff

View file

@ -167,6 +167,8 @@ struct ContentRoulette;
struct ContentRouletteOpenRule; struct ContentRouletteOpenRule;
struct ContentRouletteRoleBonus; struct ContentRouletteRoleBonus;
struct ContentsNote; struct ContentsNote;
struct ContentsTutorial;
struct ContentsTutorialPage;
struct ContentTalk; struct ContentTalk;
struct ContentTalkParam; struct ContentTalkParam;
struct ContentType; struct ContentType;
@ -179,7 +181,6 @@ struct CreditBackImage;
struct CreditCast; struct CreditCast;
struct CreditList; struct CreditList;
struct CreditListText; struct CreditListText;
struct Currency;
struct CustomTalk; struct CustomTalk;
struct CustomTalkDynamicIcon; struct CustomTalkDynamicIcon;
struct CustomTalkNestHandlers; struct CustomTalkNestHandlers;
@ -368,6 +369,7 @@ struct HugeCraftworksRank;
struct HWDAnnounce; struct HWDAnnounce;
struct HWDCrafterSupply; struct HWDCrafterSupply;
struct HWDCrafterSupplyReward; struct HWDCrafterSupplyReward;
struct HWDCrafterSupplyTerm;
struct HWDDevLayerControl; struct HWDDevLayerControl;
struct HWDDevLevelUI; struct HWDDevLevelUI;
struct HWDDevLively; struct HWDDevLively;
@ -466,6 +468,7 @@ struct MountSpeed;
struct MountTransient; struct MountTransient;
struct MoveTimeline; struct MoveTimeline;
struct MoveVfx; struct MoveVfx;
struct MovieStaffList;
struct MovieSubtitle; struct MovieSubtitle;
struct MovieSubtitle500; struct MovieSubtitle500;
struct MovieSubtitleVoyage; struct MovieSubtitleVoyage;
@ -546,6 +549,7 @@ struct RelicItem;
struct RelicNote; struct RelicNote;
struct RelicNoteCategory; struct RelicNoteCategory;
struct Resident; struct Resident;
struct ResistanceWeaponAdjust;
struct RetainerTask; struct RetainerTask;
struct RetainerTaskLvRange; struct RetainerTaskLvRange;
struct RetainerTaskNormal; struct RetainerTaskNormal;
@ -626,6 +630,8 @@ struct Weather;
struct WeatherGroup; struct WeatherGroup;
struct WeatherRate; struct WeatherRate;
struct WeatherReportReplace; struct WeatherReportReplace;
struct WebGuidance;
struct WebURL;
struct WeddingBGM; struct WeddingBGM;
struct WeeklyBingoOrderData; struct WeeklyBingoOrderData;
struct WeeklyBingoRewardData; struct WeeklyBingoRewardData;
@ -983,6 +989,7 @@ struct AirshipExplorationParamType
struct AirshipExplorationPart struct AirshipExplorationPart
{ {
uint8_t slot;
uint8_t rank; uint8_t rank;
uint8_t components; uint8_t components;
int16_t surveillance; int16_t surveillance;
@ -990,6 +997,7 @@ struct AirshipExplorationPart
int16_t speed; int16_t speed;
int16_t range; int16_t range;
int16_t favor; int16_t favor;
uint16_t _class;
uint8_t repairMaterials; uint8_t repairMaterials;
AirshipExplorationPart( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); AirshipExplorationPart( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
@ -1112,9 +1120,22 @@ struct AozActionTransient
uint32_t icon; uint32_t icon;
std::string stats; std::string stats;
std::string description; std::string description;
uint8_t locationKey;
uint16_t location; uint16_t location;
uint32_t startQuest; uint32_t requiredForQuest;
uint32_t nextQuest; uint32_t previousQuest;
bool targetsEnemy;
bool targetsSelfOrAlly;
bool causeSlow;
bool causePetrify;
bool causeParalysis;
bool causeInterrupt;
bool causeBlind;
bool causeStun;
bool causeSleep;
bool causeBind;
bool causeHeavy;
bool causeDeath;
AozActionTransient( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); AozActionTransient( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -1122,6 +1143,7 @@ struct AozActionTransient
struct AOZArrangement struct AOZArrangement
{ {
uint16_t aOZContentBriefingBNpc; uint16_t aOZContentBriefingBNpc;
uint16_t position;
AOZArrangement( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ); AOZArrangement( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -1129,6 +1151,7 @@ struct AOZArrangement
struct AOZBoss struct AOZBoss
{ {
uint16_t boss; uint16_t boss;
uint16_t position;
AOZBoss( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); AOZBoss( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -1160,6 +1183,7 @@ struct AOZContentBriefingBNpc
uint32_t bNpcName; uint32_t bNpcName;
uint32_t targetSmall; uint32_t targetSmall;
uint32_t targetLarge; uint32_t targetLarge;
bool hideStats;
uint8_t endurance; uint8_t endurance;
uint8_t fire; uint8_t fire;
uint8_t ice; uint8_t ice;
@ -1171,16 +1195,16 @@ struct AOZContentBriefingBNpc
uint8_t piercing; uint8_t piercing;
uint8_t blunt; uint8_t blunt;
uint8_t magic; uint8_t magic;
bool slowResistance; bool slowVuln;
bool petrificationResistance; bool petrificationVuln;
bool paralysisResistance; bool paralysisVuln;
bool silenceResistance; bool interruptionVuln;
bool blindResistance; bool blindVuln;
bool stunResistance; bool stunVuln;
bool sleepResistance; bool sleepVuln;
bool bindResistance; bool bindVuln;
bool heavyResistance; bool heavyVuln;
bool instaDeathResistance; bool flatOrDeathVuln;
AOZContentBriefingBNpc( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); AOZContentBriefingBNpc( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -1646,6 +1670,7 @@ struct BuddyEquip
uint16_t iconHead; uint16_t iconHead;
uint16_t iconBody; uint16_t iconBody;
uint16_t iconLegs; uint16_t iconLegs;
uint8_t order;
BuddyEquip( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); BuddyEquip( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -1924,6 +1949,7 @@ struct ClassJob
int8_t expArrayIndex; int8_t expArrayIndex;
int8_t battleClassIndex; int8_t battleClassIndex;
uint8_t jobIndex; uint8_t jobIndex;
int8_t dohDolJobIndex;
uint16_t modifierHitPoints; uint16_t modifierHitPoints;
uint16_t modifierManaPoints; uint16_t modifierManaPoints;
uint16_t modifierStrength; uint16_t modifierStrength;
@ -2294,6 +2320,8 @@ struct ContentFinderCondition
bool addedIn53; bool addedIn53;
bool allowUndersized; bool allowUndersized;
bool allowReplacement; bool allowReplacement;
bool allowExplorerMode;
bool unknown54;
bool highEndDuty; bool highEndDuty;
bool dutyRecorderAllowed; bool dutyRecorderAllowed;
std::string name; std::string name;
@ -2304,13 +2332,13 @@ struct ContentFinderCondition
uint32_t image; uint32_t image;
uint32_t icon; uint32_t icon;
bool levelingRoulette; bool levelingRoulette;
bool level5060Roulette; bool level506070Roulette;
bool mSQRoulette; bool mSQRoulette;
bool guildHestRoulette; bool guildHestRoulette;
bool expertRoulette; bool expertRoulette;
bool trialRoulette; bool trialRoulette;
bool dailyFrontlineChallenge; bool dailyFrontlineChallenge;
bool level70Roulette; bool level80Roulette;
bool mentorRoulette; bool mentorRoulette;
bool allianceRoulette; bool allianceRoulette;
bool normalRaidRoulette; bool normalRaidRoulette;
@ -2349,6 +2377,7 @@ struct ContentMemberType
uint8_t healersPerParty; uint8_t healersPerParty;
uint8_t meleesPerParty; uint8_t meleesPerParty;
uint8_t rangedPerParty; uint8_t rangedPerParty;
uint8_t unknown54;
ContentMemberType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); ContentMemberType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -2371,22 +2400,23 @@ struct ContentRandomSelect
struct ContentRoulette struct ContentRoulette
{ {
std::string name; std::string name;
std::string category;
std::string description; std::string description;
std::string dutyType; std::string dutyType;
bool isInDutyFinder; bool isInDutyFinder;
bool openRule; uint8_t openRule;
bool requiredLevel; uint8_t requiredLevel;
uint8_t itemLevelRequired; uint16_t itemLevelRequired;
uint16_t icon; uint32_t icon;
uint32_t contentRouletteRoleBonus; uint8_t contentRouletteRoleBonus;
uint8_t rewardTomeA; uint16_t rewardTomeA;
uint16_t rewardTomeB; uint16_t rewardTomeB;
uint16_t rewardTomeC; uint16_t rewardTomeC;
uint16_t sortKey; uint8_t sortKey;
uint8_t contentMemberType; uint8_t contentMemberType;
bool requireAllDuties; bool requireAllDuties;
bool contentRouletteOpenRule; uint8_t contentRouletteOpenRule;
uint8_t instanceContent; uint16_t instanceContent;
ContentRoulette( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); ContentRoulette( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -2426,6 +2456,23 @@ struct ContentsNote
ContentsNote( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); ContentsNote( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
struct ContentsTutorial
{
std::string name;
std::string description;
std::vector< int32_t > page;
ContentsTutorial( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
};
struct ContentsTutorialPage
{
int32_t image;
std::string description;
ContentsTutorialPage( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
};
struct ContentTalk struct ContentTalk
{ {
uint8_t contentTalkParam; uint8_t contentTalkParam;
@ -2521,6 +2568,7 @@ struct Credit
struct CreditBackImage struct CreditBackImage
{ {
bool unknown54;
uint32_t backImage; uint32_t backImage;
CreditBackImage( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ); CreditBackImage( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData );
@ -2550,14 +2598,6 @@ struct CreditListText
CreditListText( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); CreditListText( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
struct Currency
{
uint32_t item;
uint32_t limit;
Currency( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
};
struct CustomTalk struct CustomTalk
{ {
uint32_t iconActor; uint32_t iconActor;
@ -2566,6 +2606,7 @@ struct CustomTalk
std::vector< std::string > scriptInstruction; std::vector< std::string > scriptInstruction;
std::vector< uint32_t > scriptArg; std::vector< uint32_t > scriptArg;
bool text; bool text;
bool unknown54;
CustomTalk( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); CustomTalk( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -2996,6 +3037,7 @@ struct Emote
uint8_t emoteMode; uint8_t emoteMode;
bool hasCancelEmote; bool hasCancelEmote;
bool drawsWeapon; bool drawsWeapon;
uint16_t order;
int32_t textCommand; int32_t textCommand;
uint16_t icon; uint16_t icon;
uint16_t logMessageTargeted; uint16_t logMessageTargeted;
@ -3676,7 +3718,7 @@ struct GatheringItem
{ {
int32_t item; int32_t item;
uint16_t gatheringItemLevel; uint16_t gatheringItemLevel;
uint32_t isHidden; bool isHidden;
GatheringItem( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); GatheringItem( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -3767,7 +3809,8 @@ struct GatheringPointBonus
uint32_t conditionValue; uint32_t conditionValue;
uint8_t bonusType; uint8_t bonusType;
uint16_t bonusValue; uint16_t bonusValue;
bool addedIn53; bool unknown53;
uint32_t unknown54;
GatheringPointBonus( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); GatheringPointBonus( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -4169,6 +4212,7 @@ struct GroupPoseFrame
{ {
int32_t image; int32_t image;
std::string gridText; std::string gridText;
int32_t unknown54;
std::string text; std::string text;
GroupPoseFrame( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); GroupPoseFrame( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
@ -4178,6 +4222,8 @@ struct GroupPoseStamp
{ {
int32_t stampIcon; int32_t stampIcon;
int32_t category; int32_t category;
int32_t unknown540;
bool unknown541;
std::string name; std::string name;
GroupPoseStamp( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); GroupPoseStamp( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
@ -4493,6 +4539,9 @@ struct HWDCrafterSupply
std::vector< uint16_t > baseCollectableReward; std::vector< uint16_t > baseCollectableReward;
std::vector< uint16_t > midCollectableReward; std::vector< uint16_t > midCollectableReward;
std::vector< uint16_t > highCollectableReward; std::vector< uint16_t > highCollectableReward;
std::vector< uint16_t > baseCollectableRewardPostPhase;
std::vector< uint16_t > midCollectableRewardPostPhase;
std::vector< uint16_t > highCollectableRewardPostPhase;
std::vector< uint8_t > termName; std::vector< uint8_t > termName;
HWDCrafterSupply( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); HWDCrafterSupply( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
@ -4507,6 +4556,13 @@ struct HWDCrafterSupplyReward
HWDCrafterSupplyReward( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); HWDCrafterSupplyReward( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
struct HWDCrafterSupplyTerm
{
std::string name;
HWDCrafterSupplyTerm( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
};
struct HWDDevLayerControl struct HWDDevLayerControl
{ {
@ -4621,14 +4677,13 @@ struct IKDFishParam
{ {
uint32_t fish; uint32_t fish;
uint8_t iKDContentBonus; uint8_t iKDContentBonus;
uint8_t unknown54;
IKDFishParam( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); IKDFishParam( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
struct IKDRoute struct IKDRoute
{ {
std::vector< uint32_t > spot;
uint8_t timeDefine;
uint32_t image; uint32_t image;
uint32_t territoryType; uint32_t territoryType;
std::string name; std::string name;
@ -4713,6 +4768,8 @@ struct InstanceContent
uint32_t instanceContentBuff; uint32_t instanceContentBuff;
int32_t reqInstance; int32_t reqInstance;
int16_t partyCondition; int16_t partyCondition;
uint16_t unknown540;
uint16_t unknown541;
InstanceContent( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); InstanceContent( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -4729,6 +4786,8 @@ struct InstanceContentCSBonus
{ {
uint16_t instance; uint16_t instance;
uint32_t item; uint32_t item;
uint8_t unknown540;
uint8_t unknown541;
InstanceContentCSBonus( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); InstanceContentCSBonus( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -4771,7 +4830,7 @@ struct Item
bool isUnique; bool isUnique;
bool isUntradable; bool isUntradable;
bool isIndisposable; bool isIndisposable;
bool isEquippable; bool lot;
uint32_t priceMid; uint32_t priceMid;
uint32_t priceLow; uint32_t priceLow;
bool canBeHq; bool canBeHq;
@ -4786,6 +4845,7 @@ struct Item
bool isCollectable; bool isCollectable;
bool alwaysCollectable; bool alwaysCollectable;
uint16_t aetherialReduce; uint16_t aetherialReduce;
uint16_t unknown54;
uint8_t levelEquip; uint8_t levelEquip;
uint8_t equipRestriction; uint8_t equipRestriction;
uint8_t classJobCategory; uint8_t classJobCategory;
@ -5179,6 +5239,8 @@ struct LotteryExchangeShop
{ {
std::vector< int32_t > itemAccepted; std::vector< int32_t > itemAccepted;
std::vector< uint32_t > amountAccepted; std::vector< uint32_t > amountAccepted;
std::vector< uint8_t > unknown540;
std::vector< uint8_t > unknown541;
std::string lua; std::string lua;
std::vector< uint32_t > logMessage; std::vector< uint32_t > logMessage;
@ -5311,7 +5373,7 @@ struct Materia
{ {
std::vector< int32_t > item; std::vector< int32_t > item;
uint8_t baseParam; uint8_t baseParam;
std::vector< uint8_t > value; std::vector< int16_t > value;
Materia( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); Materia( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -5342,6 +5404,7 @@ struct MateriaTomestoneRate
struct MiniGameRA struct MiniGameRA
{ {
int32_t icon; int32_t icon;
int32_t image;
int32_t bGM; int32_t bGM;
MiniGameRA( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); MiniGameRA( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
@ -5623,6 +5686,15 @@ struct MoveVfx
MoveVfx( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); MoveVfx( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
struct MovieStaffList
{
uint32_t image;
float startTime;
float endTime;
MovieStaffList( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
};
struct MovieSubtitle struct MovieSubtitle
{ {
float startTime; float startTime;
@ -5669,6 +5741,9 @@ struct MYCTemporaryItemUICategory
struct MYCWarResultNotebook struct MYCWarResultNotebook
{ {
uint8_t number; uint8_t number;
uint8_t unknown540;
uint8_t unknown541;
int32_t quest;
int32_t icon; int32_t icon;
int32_t image; int32_t image;
uint8_t rarity; uint8_t rarity;
@ -5752,7 +5827,8 @@ struct NpcYell
float balloonTime; float balloonTime;
bool isBalloonSlow; bool isBalloonSlow;
bool battleTalkTime; bool battleTalkTime;
float text; uint8_t unknown54;
std::string text;
NpcYell( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); NpcYell( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -5812,7 +5888,8 @@ struct Orchestrion
struct OrchestrionCategory struct OrchestrionCategory
{ {
std::string name; std::string name;
uint8_t hideCategory; uint8_t hideOrder;
uint32_t icon;
uint8_t order; uint8_t order;
OrchestrionCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); OrchestrionCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
@ -5878,6 +5955,9 @@ struct PartyContent
bool name; bool name;
uint32_t textDataStart; uint32_t textDataStart;
uint32_t textDataEnd; uint32_t textDataEnd;
std::vector< uint32_t > lGBEventObject0;
std::vector< uint32_t > lGBEventRange;
std::vector< uint32_t > lGBEventObject1;
uint16_t contentFinderCondition; uint16_t contentFinderCondition;
uint32_t image; uint32_t image;
@ -6064,6 +6144,9 @@ struct PublicContent
uint32_t textDataEnd; uint32_t textDataEnd;
uint16_t contentFinderCondition; uint16_t contentFinderCondition;
uint16_t additionalData; uint16_t additionalData;
int32_t unknown540;
uint16_t unknown541;
uint16_t unknown542;
PublicContent( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); PublicContent( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -6232,6 +6315,7 @@ struct Quest
bool hideOfferIcon; bool hideOfferIcon;
uint8_t eventIconType; uint8_t eventIconType;
uint16_t sortKey; uint16_t sortKey;
bool unknown54;
Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -6278,7 +6362,7 @@ struct QuestClassJobSupply
struct QuestDerivedClass struct QuestDerivedClass
{ {
uint32_t quest; uint8_t classJob;
QuestDerivedClass( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); QuestDerivedClass( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -6373,6 +6457,7 @@ struct Race
int32_t rSEFHands; int32_t rSEFHands;
int32_t rSEFLegs; int32_t rSEFLegs;
int32_t rSEFFeet; int32_t rSEFFeet;
uint8_t unknown54;
uint8_t exPac; uint8_t exPac;
Race( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); Race( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
@ -6474,6 +6559,7 @@ struct RecipeLevelTable
uint16_t difficulty; uint16_t difficulty;
uint32_t quality; uint32_t quality;
uint16_t durability; uint16_t durability;
uint16_t conditionsFlag;
RecipeLevelTable( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); RecipeLevelTable( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -6585,6 +6671,16 @@ struct Resident
Resident( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ); Resident( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData );
}; };
struct ResistanceWeaponAdjust
{
uint16_t maxTotalStats;
uint16_t maxEachStat;
std::vector< uint8_t > baseParam;
uint32_t image;
ResistanceWeaponAdjust( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
};
struct RetainerTask struct RetainerTask
{ {
bool isRandom; bool isRandom;
@ -6717,6 +6813,9 @@ struct ScenarioTree
{ {
uint8_t type; uint8_t type;
uint16_t image; uint16_t image;
uint32_t unknown540;
std::string unknown541;
int32_t unknown542;
ScenarioTree( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); ScenarioTree( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -6861,7 +6960,7 @@ struct SpecialShop
std::vector< int32_t > unknown; std::vector< int32_t > unknown;
std::vector< int32_t > achievementUnlock; std::vector< int32_t > achievementUnlock;
std::vector< uint16_t > patchNumber; std::vector< uint16_t > patchNumber;
bool useCurrencyType; uint8_t useCurrencyType;
uint32_t questUnlock; uint32_t questUnlock;
int32_t completeText; int32_t completeText;
int32_t notCompleteText; int32_t notCompleteText;
@ -6901,7 +7000,7 @@ struct Status
uint8_t maxStacks; uint8_t maxStacks;
uint8_t category; uint8_t category;
uint8_t hitEffect; uint8_t hitEffect;
uint8_t vFX; uint16_t vFX;
bool lockMovement; bool lockMovement;
bool lockActions; bool lockActions;
bool lockControl; bool lockControl;
@ -6994,6 +7093,7 @@ struct SubmarinePart
int16_t speed; int16_t speed;
int16_t range; int16_t range;
int16_t favor; int16_t favor;
uint16_t _class;
uint8_t repairMaterials; uint8_t repairMaterials;
SubmarinePart( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); SubmarinePart( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
@ -7056,6 +7156,7 @@ struct TerritoryType
uint8_t exVersion; uint8_t exVersion;
uint8_t addedIn53; uint8_t addedIn53;
uint8_t mountSpeed; uint8_t mountSpeed;
bool unknown54;
TerritoryType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); TerritoryType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -7171,6 +7272,7 @@ struct Transformation
uint16_t endVFX; uint16_t endVFX;
uint32_t action6; uint32_t action6;
uint16_t action7; uint16_t action7;
bool unknown54;
Transformation( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); Transformation( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -7273,6 +7375,13 @@ struct TripleTriadCardResident
uint8_t tripleTriadCardType; uint8_t tripleTriadCardType;
uint16_t saleValue; uint16_t saleValue;
uint8_t sortKey; uint8_t sortKey;
uint16_t order;
uint8_t uIPriority;
bool unknown54;
uint8_t acquisitionType;
uint32_t acquisition;
uint32_t location;
uint32_t quest;
TripleTriadCardResident( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); TripleTriadCardResident( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -7294,6 +7403,8 @@ struct TripleTriadCompetition
struct TripleTriadRule struct TripleTriadRule
{ {
std::string name; std::string name;
std::string description;
bool unknown54;
TripleTriadRule( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); TripleTriadRule( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
@ -7435,6 +7546,24 @@ struct WeatherReportReplace
WeatherReportReplace( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); WeatherReportReplace( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
}; };
struct WebGuidance
{
int32_t image;
uint8_t url;
std::string name;
std::string unknown54;
std::string description;
WebGuidance( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
};
struct WebURL
{
std::string uRL;
WebURL( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
};
struct WeddingBGM struct WeddingBGM
{ {
uint16_t song; uint16_t song;
@ -7733,6 +7862,8 @@ struct ZoneSharedGroup
xiv::exd::Exd m_ContentRouletteOpenRuleDat; xiv::exd::Exd m_ContentRouletteOpenRuleDat;
xiv::exd::Exd m_ContentRouletteRoleBonusDat; xiv::exd::Exd m_ContentRouletteRoleBonusDat;
xiv::exd::Exd m_ContentsNoteDat; xiv::exd::Exd m_ContentsNoteDat;
xiv::exd::Exd m_ContentsTutorialDat;
xiv::exd::Exd m_ContentsTutorialPageDat;
xiv::exd::Exd m_ContentTalkDat; xiv::exd::Exd m_ContentTalkDat;
xiv::exd::Exd m_ContentTalkParamDat; xiv::exd::Exd m_ContentTalkParamDat;
xiv::exd::Exd m_ContentTypeDat; xiv::exd::Exd m_ContentTypeDat;
@ -7745,7 +7876,6 @@ struct ZoneSharedGroup
xiv::exd::Exd m_CreditCastDat; xiv::exd::Exd m_CreditCastDat;
xiv::exd::Exd m_CreditListDat; xiv::exd::Exd m_CreditListDat;
xiv::exd::Exd m_CreditListTextDat; xiv::exd::Exd m_CreditListTextDat;
xiv::exd::Exd m_CurrencyDat;
xiv::exd::Exd m_CustomTalkDat; xiv::exd::Exd m_CustomTalkDat;
xiv::exd::Exd m_CustomTalkDynamicIconDat; xiv::exd::Exd m_CustomTalkDynamicIconDat;
xiv::exd::Exd m_CustomTalkNestHandlersDat; xiv::exd::Exd m_CustomTalkNestHandlersDat;
@ -7934,6 +8064,7 @@ struct ZoneSharedGroup
xiv::exd::Exd m_HWDAnnounceDat; xiv::exd::Exd m_HWDAnnounceDat;
xiv::exd::Exd m_HWDCrafterSupplyDat; xiv::exd::Exd m_HWDCrafterSupplyDat;
xiv::exd::Exd m_HWDCrafterSupplyRewardDat; xiv::exd::Exd m_HWDCrafterSupplyRewardDat;
xiv::exd::Exd m_HWDCrafterSupplyTermDat;
xiv::exd::Exd m_HWDDevLayerControlDat; xiv::exd::Exd m_HWDDevLayerControlDat;
xiv::exd::Exd m_HWDDevLevelUIDat; xiv::exd::Exd m_HWDDevLevelUIDat;
xiv::exd::Exd m_HWDDevLivelyDat; xiv::exd::Exd m_HWDDevLivelyDat;
@ -8032,6 +8163,7 @@ struct ZoneSharedGroup
xiv::exd::Exd m_MountTransientDat; xiv::exd::Exd m_MountTransientDat;
xiv::exd::Exd m_MoveTimelineDat; xiv::exd::Exd m_MoveTimelineDat;
xiv::exd::Exd m_MoveVfxDat; xiv::exd::Exd m_MoveVfxDat;
xiv::exd::Exd m_MovieStaffListDat;
xiv::exd::Exd m_MovieSubtitleDat; xiv::exd::Exd m_MovieSubtitleDat;
xiv::exd::Exd m_MovieSubtitle500Dat; xiv::exd::Exd m_MovieSubtitle500Dat;
xiv::exd::Exd m_MovieSubtitleVoyageDat; xiv::exd::Exd m_MovieSubtitleVoyageDat;
@ -8112,6 +8244,7 @@ struct ZoneSharedGroup
xiv::exd::Exd m_RelicNoteDat; xiv::exd::Exd m_RelicNoteDat;
xiv::exd::Exd m_RelicNoteCategoryDat; xiv::exd::Exd m_RelicNoteCategoryDat;
xiv::exd::Exd m_ResidentDat; xiv::exd::Exd m_ResidentDat;
xiv::exd::Exd m_ResistanceWeaponAdjustDat;
xiv::exd::Exd m_RetainerTaskDat; xiv::exd::Exd m_RetainerTaskDat;
xiv::exd::Exd m_RetainerTaskLvRangeDat; xiv::exd::Exd m_RetainerTaskLvRangeDat;
xiv::exd::Exd m_RetainerTaskNormalDat; xiv::exd::Exd m_RetainerTaskNormalDat;
@ -8192,6 +8325,8 @@ struct ZoneSharedGroup
xiv::exd::Exd m_WeatherGroupDat; xiv::exd::Exd m_WeatherGroupDat;
xiv::exd::Exd m_WeatherRateDat; xiv::exd::Exd m_WeatherRateDat;
xiv::exd::Exd m_WeatherReportReplaceDat; xiv::exd::Exd m_WeatherReportReplaceDat;
xiv::exd::Exd m_WebGuidanceDat;
xiv::exd::Exd m_WebURLDat;
xiv::exd::Exd m_WeddingBGMDat; xiv::exd::Exd m_WeddingBGMDat;
xiv::exd::Exd m_WeeklyBingoOrderDataDat; xiv::exd::Exd m_WeeklyBingoOrderDataDat;
xiv::exd::Exd m_WeeklyBingoRewardDataDat; xiv::exd::Exd m_WeeklyBingoRewardDataDat;
@ -8350,6 +8485,8 @@ struct ZoneSharedGroup
using ContentRouletteOpenRulePtr = std::shared_ptr< ContentRouletteOpenRule >; using ContentRouletteOpenRulePtr = std::shared_ptr< ContentRouletteOpenRule >;
using ContentRouletteRoleBonusPtr = std::shared_ptr< ContentRouletteRoleBonus >; using ContentRouletteRoleBonusPtr = std::shared_ptr< ContentRouletteRoleBonus >;
using ContentsNotePtr = std::shared_ptr< ContentsNote >; using ContentsNotePtr = std::shared_ptr< ContentsNote >;
using ContentsTutorialPtr = std::shared_ptr< ContentsTutorial >;
using ContentsTutorialPagePtr = std::shared_ptr< ContentsTutorialPage >;
using ContentTalkPtr = std::shared_ptr< ContentTalk >; using ContentTalkPtr = std::shared_ptr< ContentTalk >;
using ContentTalkParamPtr = std::shared_ptr< ContentTalkParam >; using ContentTalkParamPtr = std::shared_ptr< ContentTalkParam >;
using ContentTypePtr = std::shared_ptr< ContentType >; using ContentTypePtr = std::shared_ptr< ContentType >;
@ -8362,7 +8499,6 @@ struct ZoneSharedGroup
using CreditCastPtr = std::shared_ptr< CreditCast >; using CreditCastPtr = std::shared_ptr< CreditCast >;
using CreditListPtr = std::shared_ptr< CreditList >; using CreditListPtr = std::shared_ptr< CreditList >;
using CreditListTextPtr = std::shared_ptr< CreditListText >; using CreditListTextPtr = std::shared_ptr< CreditListText >;
using CurrencyPtr = std::shared_ptr< Currency >;
using CustomTalkPtr = std::shared_ptr< CustomTalk >; using CustomTalkPtr = std::shared_ptr< CustomTalk >;
using CustomTalkDynamicIconPtr = std::shared_ptr< CustomTalkDynamicIcon >; using CustomTalkDynamicIconPtr = std::shared_ptr< CustomTalkDynamicIcon >;
using CustomTalkNestHandlersPtr = std::shared_ptr< CustomTalkNestHandlers >; using CustomTalkNestHandlersPtr = std::shared_ptr< CustomTalkNestHandlers >;
@ -8551,6 +8687,7 @@ struct ZoneSharedGroup
using HWDAnnouncePtr = std::shared_ptr< HWDAnnounce >; using HWDAnnouncePtr = std::shared_ptr< HWDAnnounce >;
using HWDCrafterSupplyPtr = std::shared_ptr< HWDCrafterSupply >; using HWDCrafterSupplyPtr = std::shared_ptr< HWDCrafterSupply >;
using HWDCrafterSupplyRewardPtr = std::shared_ptr< HWDCrafterSupplyReward >; using HWDCrafterSupplyRewardPtr = std::shared_ptr< HWDCrafterSupplyReward >;
using HWDCrafterSupplyTermPtr = std::shared_ptr< HWDCrafterSupplyTerm >;
using HWDDevLayerControlPtr = std::shared_ptr< HWDDevLayerControl >; using HWDDevLayerControlPtr = std::shared_ptr< HWDDevLayerControl >;
using HWDDevLevelUIPtr = std::shared_ptr< HWDDevLevelUI >; using HWDDevLevelUIPtr = std::shared_ptr< HWDDevLevelUI >;
using HWDDevLivelyPtr = std::shared_ptr< HWDDevLively >; using HWDDevLivelyPtr = std::shared_ptr< HWDDevLively >;
@ -8649,6 +8786,7 @@ struct ZoneSharedGroup
using MountTransientPtr = std::shared_ptr< MountTransient >; using MountTransientPtr = std::shared_ptr< MountTransient >;
using MoveTimelinePtr = std::shared_ptr< MoveTimeline >; using MoveTimelinePtr = std::shared_ptr< MoveTimeline >;
using MoveVfxPtr = std::shared_ptr< MoveVfx >; using MoveVfxPtr = std::shared_ptr< MoveVfx >;
using MovieStaffListPtr = std::shared_ptr< MovieStaffList >;
using MovieSubtitlePtr = std::shared_ptr< MovieSubtitle >; using MovieSubtitlePtr = std::shared_ptr< MovieSubtitle >;
using MovieSubtitle500Ptr = std::shared_ptr< MovieSubtitle500 >; using MovieSubtitle500Ptr = std::shared_ptr< MovieSubtitle500 >;
using MovieSubtitleVoyagePtr = std::shared_ptr< MovieSubtitleVoyage >; using MovieSubtitleVoyagePtr = std::shared_ptr< MovieSubtitleVoyage >;
@ -8729,6 +8867,7 @@ struct ZoneSharedGroup
using RelicNotePtr = std::shared_ptr< RelicNote >; using RelicNotePtr = std::shared_ptr< RelicNote >;
using RelicNoteCategoryPtr = std::shared_ptr< RelicNoteCategory >; using RelicNoteCategoryPtr = std::shared_ptr< RelicNoteCategory >;
using ResidentPtr = std::shared_ptr< Resident >; using ResidentPtr = std::shared_ptr< Resident >;
using ResistanceWeaponAdjustPtr = std::shared_ptr< ResistanceWeaponAdjust >;
using RetainerTaskPtr = std::shared_ptr< RetainerTask >; using RetainerTaskPtr = std::shared_ptr< RetainerTask >;
using RetainerTaskLvRangePtr = std::shared_ptr< RetainerTaskLvRange >; using RetainerTaskLvRangePtr = std::shared_ptr< RetainerTaskLvRange >;
using RetainerTaskNormalPtr = std::shared_ptr< RetainerTaskNormal >; using RetainerTaskNormalPtr = std::shared_ptr< RetainerTaskNormal >;
@ -8809,6 +8948,8 @@ struct ZoneSharedGroup
using WeatherGroupPtr = std::shared_ptr< WeatherGroup >; using WeatherGroupPtr = std::shared_ptr< WeatherGroup >;
using WeatherRatePtr = std::shared_ptr< WeatherRate >; using WeatherRatePtr = std::shared_ptr< WeatherRate >;
using WeatherReportReplacePtr = std::shared_ptr< WeatherReportReplace >; using WeatherReportReplacePtr = std::shared_ptr< WeatherReportReplace >;
using WebGuidancePtr = std::shared_ptr< WebGuidance >;
using WebURLPtr = std::shared_ptr< WebURL >;
using WeddingBGMPtr = std::shared_ptr< WeddingBGM >; using WeddingBGMPtr = std::shared_ptr< WeddingBGM >;
using WeeklyBingoOrderDataPtr = std::shared_ptr< WeeklyBingoOrderData >; using WeeklyBingoOrderDataPtr = std::shared_ptr< WeeklyBingoOrderData >;
using WeeklyBingoRewardDataPtr = std::shared_ptr< WeeklyBingoRewardData >; using WeeklyBingoRewardDataPtr = std::shared_ptr< WeeklyBingoRewardData >;
@ -8967,6 +9108,8 @@ struct ZoneSharedGroup
std::set< uint32_t > m_ContentRouletteOpenRuleIdList; std::set< uint32_t > m_ContentRouletteOpenRuleIdList;
std::set< uint32_t > m_ContentRouletteRoleBonusIdList; std::set< uint32_t > m_ContentRouletteRoleBonusIdList;
std::set< uint32_t > m_ContentsNoteIdList; std::set< uint32_t > m_ContentsNoteIdList;
std::set< uint32_t > m_ContentsTutorialIdList;
std::set< uint32_t > m_ContentsTutorialPageIdList;
std::set< uint32_t > m_ContentTalkIdList; std::set< uint32_t > m_ContentTalkIdList;
std::set< uint32_t > m_ContentTalkParamIdList; std::set< uint32_t > m_ContentTalkParamIdList;
std::set< uint32_t > m_ContentTypeIdList; std::set< uint32_t > m_ContentTypeIdList;
@ -8979,7 +9122,6 @@ struct ZoneSharedGroup
std::set< uint32_t > m_CreditCastIdList; std::set< uint32_t > m_CreditCastIdList;
std::set< uint32_t > m_CreditListIdList; std::set< uint32_t > m_CreditListIdList;
std::set< uint32_t > m_CreditListTextIdList; std::set< uint32_t > m_CreditListTextIdList;
std::set< uint32_t > m_CurrencyIdList;
std::set< uint32_t > m_CustomTalkIdList; std::set< uint32_t > m_CustomTalkIdList;
std::set< uint32_t > m_CustomTalkDynamicIconIdList; std::set< uint32_t > m_CustomTalkDynamicIconIdList;
std::set< uint32_t > m_CustomTalkNestHandlersIdList; std::set< uint32_t > m_CustomTalkNestHandlersIdList;
@ -9168,6 +9310,7 @@ struct ZoneSharedGroup
std::set< uint32_t > m_HWDAnnounceIdList; std::set< uint32_t > m_HWDAnnounceIdList;
std::set< uint32_t > m_HWDCrafterSupplyIdList; std::set< uint32_t > m_HWDCrafterSupplyIdList;
std::set< uint32_t > m_HWDCrafterSupplyRewardIdList; std::set< uint32_t > m_HWDCrafterSupplyRewardIdList;
std::set< uint32_t > m_HWDCrafterSupplyTermIdList;
std::set< uint32_t > m_HWDDevLayerControlIdList; std::set< uint32_t > m_HWDDevLayerControlIdList;
std::set< uint32_t > m_HWDDevLevelUIIdList; std::set< uint32_t > m_HWDDevLevelUIIdList;
std::set< uint32_t > m_HWDDevLivelyIdList; std::set< uint32_t > m_HWDDevLivelyIdList;
@ -9266,6 +9409,7 @@ struct ZoneSharedGroup
std::set< uint32_t > m_MountTransientIdList; std::set< uint32_t > m_MountTransientIdList;
std::set< uint32_t > m_MoveTimelineIdList; std::set< uint32_t > m_MoveTimelineIdList;
std::set< uint32_t > m_MoveVfxIdList; std::set< uint32_t > m_MoveVfxIdList;
std::set< uint32_t > m_MovieStaffListIdList;
std::set< uint32_t > m_MovieSubtitleIdList; std::set< uint32_t > m_MovieSubtitleIdList;
std::set< uint32_t > m_MovieSubtitle500IdList; std::set< uint32_t > m_MovieSubtitle500IdList;
std::set< uint32_t > m_MovieSubtitleVoyageIdList; std::set< uint32_t > m_MovieSubtitleVoyageIdList;
@ -9346,6 +9490,7 @@ struct ZoneSharedGroup
std::set< uint32_t > m_RelicNoteIdList; std::set< uint32_t > m_RelicNoteIdList;
std::set< uint32_t > m_RelicNoteCategoryIdList; std::set< uint32_t > m_RelicNoteCategoryIdList;
std::set< uint32_t > m_ResidentIdList; std::set< uint32_t > m_ResidentIdList;
std::set< uint32_t > m_ResistanceWeaponAdjustIdList;
std::set< uint32_t > m_RetainerTaskIdList; std::set< uint32_t > m_RetainerTaskIdList;
std::set< uint32_t > m_RetainerTaskLvRangeIdList; std::set< uint32_t > m_RetainerTaskLvRangeIdList;
std::set< uint32_t > m_RetainerTaskNormalIdList; std::set< uint32_t > m_RetainerTaskNormalIdList;
@ -9426,6 +9571,8 @@ struct ZoneSharedGroup
std::set< uint32_t > m_WeatherGroupIdList; std::set< uint32_t > m_WeatherGroupIdList;
std::set< uint32_t > m_WeatherRateIdList; std::set< uint32_t > m_WeatherRateIdList;
std::set< uint32_t > m_WeatherReportReplaceIdList; std::set< uint32_t > m_WeatherReportReplaceIdList;
std::set< uint32_t > m_WebGuidanceIdList;
std::set< uint32_t > m_WebURLIdList;
std::set< uint32_t > m_WeddingBGMIdList; std::set< uint32_t > m_WeddingBGMIdList;
std::set< uint32_t > m_WeeklyBingoOrderDataIdList; std::set< uint32_t > m_WeeklyBingoOrderDataIdList;
std::set< uint32_t > m_WeeklyBingoRewardDataIdList; std::set< uint32_t > m_WeeklyBingoRewardDataIdList;
@ -10309,6 +10456,18 @@ const std::set< uint32_t >& getContentsNoteIdList()
loadIdList( m_ContentsNoteDat, m_ContentsNoteIdList ); loadIdList( m_ContentsNoteDat, m_ContentsNoteIdList );
return m_ContentsNoteIdList; return m_ContentsNoteIdList;
} }
const std::set< uint32_t >& getContentsTutorialIdList()
{
if( m_ContentsTutorialIdList.size() == 0 )
loadIdList( m_ContentsTutorialDat, m_ContentsTutorialIdList );
return m_ContentsTutorialIdList;
}
const std::set< uint32_t >& getContentsTutorialPageIdList()
{
if( m_ContentsTutorialPageIdList.size() == 0 )
loadIdList( m_ContentsTutorialPageDat, m_ContentsTutorialPageIdList );
return m_ContentsTutorialPageIdList;
}
const std::set< uint32_t >& getContentTalkIdList() const std::set< uint32_t >& getContentTalkIdList()
{ {
if( m_ContentTalkIdList.size() == 0 ) if( m_ContentTalkIdList.size() == 0 )
@ -10381,12 +10540,6 @@ const std::set< uint32_t >& getCreditListTextIdList()
loadIdList( m_CreditListTextDat, m_CreditListTextIdList ); loadIdList( m_CreditListTextDat, m_CreditListTextIdList );
return m_CreditListTextIdList; return m_CreditListTextIdList;
} }
const std::set< uint32_t >& getCurrencyIdList()
{
if( m_CurrencyIdList.size() == 0 )
loadIdList( m_CurrencyDat, m_CurrencyIdList );
return m_CurrencyIdList;
}
const std::set< uint32_t >& getCustomTalkIdList() const std::set< uint32_t >& getCustomTalkIdList()
{ {
if( m_CustomTalkIdList.size() == 0 ) if( m_CustomTalkIdList.size() == 0 )
@ -11515,6 +11668,12 @@ const std::set< uint32_t >& getHWDCrafterSupplyRewardIdList()
loadIdList( m_HWDCrafterSupplyRewardDat, m_HWDCrafterSupplyRewardIdList ); loadIdList( m_HWDCrafterSupplyRewardDat, m_HWDCrafterSupplyRewardIdList );
return m_HWDCrafterSupplyRewardIdList; return m_HWDCrafterSupplyRewardIdList;
} }
const std::set< uint32_t >& getHWDCrafterSupplyTermIdList()
{
if( m_HWDCrafterSupplyTermIdList.size() == 0 )
loadIdList( m_HWDCrafterSupplyTermDat, m_HWDCrafterSupplyTermIdList );
return m_HWDCrafterSupplyTermIdList;
}
const std::set< uint32_t >& getHWDDevLayerControlIdList() const std::set< uint32_t >& getHWDDevLayerControlIdList()
{ {
if( m_HWDDevLayerControlIdList.size() == 0 ) if( m_HWDDevLayerControlIdList.size() == 0 )
@ -12103,6 +12262,12 @@ const std::set< uint32_t >& getMoveVfxIdList()
loadIdList( m_MoveVfxDat, m_MoveVfxIdList ); loadIdList( m_MoveVfxDat, m_MoveVfxIdList );
return m_MoveVfxIdList; return m_MoveVfxIdList;
} }
const std::set< uint32_t >& getMovieStaffListIdList()
{
if( m_MovieStaffListIdList.size() == 0 )
loadIdList( m_MovieStaffListDat, m_MovieStaffListIdList );
return m_MovieStaffListIdList;
}
const std::set< uint32_t >& getMovieSubtitleIdList() const std::set< uint32_t >& getMovieSubtitleIdList()
{ {
if( m_MovieSubtitleIdList.size() == 0 ) if( m_MovieSubtitleIdList.size() == 0 )
@ -12583,6 +12748,12 @@ const std::set< uint32_t >& getResidentIdList()
loadIdList( m_ResidentDat, m_ResidentIdList ); loadIdList( m_ResidentDat, m_ResidentIdList );
return m_ResidentIdList; return m_ResidentIdList;
} }
const std::set< uint32_t >& getResistanceWeaponAdjustIdList()
{
if( m_ResistanceWeaponAdjustIdList.size() == 0 )
loadIdList( m_ResistanceWeaponAdjustDat, m_ResistanceWeaponAdjustIdList );
return m_ResistanceWeaponAdjustIdList;
}
const std::set< uint32_t >& getRetainerTaskIdList() const std::set< uint32_t >& getRetainerTaskIdList()
{ {
if( m_RetainerTaskIdList.size() == 0 ) if( m_RetainerTaskIdList.size() == 0 )
@ -13063,6 +13234,18 @@ const std::set< uint32_t >& getWeatherReportReplaceIdList()
loadIdList( m_WeatherReportReplaceDat, m_WeatherReportReplaceIdList ); loadIdList( m_WeatherReportReplaceDat, m_WeatherReportReplaceIdList );
return m_WeatherReportReplaceIdList; return m_WeatherReportReplaceIdList;
} }
const std::set< uint32_t >& getWebGuidanceIdList()
{
if( m_WebGuidanceIdList.size() == 0 )
loadIdList( m_WebGuidanceDat, m_WebGuidanceIdList );
return m_WebGuidanceIdList;
}
const std::set< uint32_t >& getWebURLIdList()
{
if( m_WebURLIdList.size() == 0 )
loadIdList( m_WebURLDat, m_WebURLIdList );
return m_WebURLIdList;
}
const std::set< uint32_t >& getWeddingBGMIdList() const std::set< uint32_t >& getWeddingBGMIdList()
{ {
if( m_WeddingBGMIdList.size() == 0 ) if( m_WeddingBGMIdList.size() == 0 )

View file

@ -43,67 +43,67 @@ namespace Sapphire::Network::Packets
*/ */
enum ServerZoneIpcType : uint16_t enum ServerZoneIpcType : uint16_t
{ {
Ping = 0x0219, // updated 5.35 hotfix Ping = 0x0183, // updated 5.45 hotfix
Init = 0x0185, // updated 5.35 hotfix Init = 0x01EA, // updated 5.45 hotfix
ActorFreeSpawn = 0x0239, // updated 5.35 hotfix ActorFreeSpawn = 0x0185, // updated 5.45 hotfix
InitZone = 0x03CD, // updated 5.35 hotfix InitZone = 0x0233, // updated 5.45 hotfix
EffectResult = 0x01C2, // updated 5.35 hotfix EffectResult = 0x01D7, // updated 5.45 hotfix
ActorControl = 0x02A4, // updated 5.35 hotfix ActorControl = 0x00C2, // updated 5.45 hotfix
ActorControlSelf = 0x02C8, // updated 5.35 hotfix ActorControlSelf = 0x03D5, // updated 5.45 hotfix
ActorControlTarget = 0x0209, // updated 5.35 hotfix ActorControlTarget = 0x0171, // updated 5.45 hotfix
/*! /*!
* @brief Used when resting * @brief Used when resting
*/ */
UpdateHpMpTp = 0x0319, // updated 5.35 hotfix UpdateHpMpTp = 0x019B, // updated 5.45 hotfix
/////////////////////////////////////////////////// ///////////////////////////////////////////////////
ChatBanned = 0xF06B, ChatBanned = 0xF06B,
Playtime = 0x03A4, // updated 5.35 hotfix Playtime = 0x0302, // updated 5.45 hotfix
Logout = 0x02AD, // updated 5.35 hotfix Logout = 0x012A, // updated 5.45 hotfix
CFNotify = 0x02C4, // updated 5.35 hotfix CFNotify = 0x026E, // updated 5.45 hotfix
CFMemberStatus = 0x0079, CFMemberStatus = 0x0079,
CFDutyInfo = 0x0193, // updated 5.35 hotfix CFDutyInfo = 0x0145, // updated 5.45 hotfix
CFPlayerInNeed = 0xF07F, CFPlayerInNeed = 0xF07F,
CFPreferredRole = 0x0196, // updated 5.35 hotfix CFPreferredRole = 0x012E, // updated 5.45 hotfix
CFCancel = 0x00EC, // updated 5.35 hotfix CFCancel = 0x0312, // updated 5.45 hotfix
SocialRequestError = 0xF0AD, SocialRequestError = 0xF0AD,
CFRegistered = 0x010C, // updated 5.35 hotfix CFRegistered = 0x01FB, // updated 5.45 hotfix
SocialRequestResponse = 0x01C7, // updated 5.35 hotfix SocialRequestResponse = 0x03A5, // updated 5.45 hotfix
SocialMessage = 0x0308, // updated 5.35 hotfix SocialMessage = 0x030C, // updated 5.45 hotfix
SocialMessage2 = 0x037C, // updated 5.35 hotfix SocialMessage2 = 0x00BB, // updated 5.45 hotfix
CancelAllianceForming = 0x00C6, // updated 4.2 CancelAllianceForming = 0x00C6, // updated 4.2
LogMessage = 0x00D0, LogMessage = 0x00D0,
Chat = 0x0349, // updated 5.35 hotfix Chat = 0x01BA, // updated 5.45 hotfix
PartyChat = 0x0065, PartyChat = 0x0065,
WorldVisitList = 0xF0FE, // added 4.5 WorldVisitList = 0xF0FE, // added 4.5
SocialList = 0x0216, // updated 5.35 hotfix SocialList = 0x0315, // updated 5.45 hotfix
ExamineSearchInfo = 0x03C3, // updated 5.35 hotfix ExamineSearchInfo = 0x035F, // updated 5.45 hotfix
UpdateSearchInfo = 0x0121, // updated 5.35 hotfix UpdateSearchInfo = 0x0310, // updated 5.45 hotfix
InitSearchInfo = 0x036F, // updated 5.35 hotfix InitSearchInfo = 0x01ED, // updated 5.45 hotfix
ExamineSearchComment = 0x0102, // updated 4.1 ExamineSearchComment = 0x0102, // updated 4.1
ServerNoticeShort = 0x017A, // updated 5.35 hotfix ServerNoticeShort = 0x03B4, // updated 5.45 hotfix
ServerNotice = 0x02F8, // updated 5.35 hotfix ServerNotice = 0x0354, // updated 5.45 hotfix
SetOnlineStatus = 0x03D7, // updated 5.35 hotfix SetOnlineStatus = 0x0166, // updated 5.45 hotfix
CountdownInitiate = 0x0237, // updated 5.25 CountdownInitiate = 0x0237, // updated 5.25
CountdownCancel = 0x00D9, // updated 5.18 CountdownCancel = 0x00D9, // updated 5.18
PlayerAddedToBlacklist = 0x033F, // updated 5.1 PlayerAddedToBlacklist = 0x033F, // updated 5.1
PlayerRemovedFromBlacklist = 0x0385, // updated 5.1 PlayerRemovedFromBlacklist = 0x0385, // updated 5.1
BlackList = 0x02DB, // updated 5.35 hotfix BlackList = 0x02BD, // updated 5.45 hotfix
LinkshellList = 0x01F0, // updated 5.35 hotfix LinkshellList = 0x021A, // updated 5.45 hotfix
MailDeleteRequest = 0xF12B, // updated 5.0 MailDeleteRequest = 0xF12B, // updated 5.0
@ -114,87 +114,87 @@ namespace Sapphire::Network::Packets
MarketTaxRates = 0x01F8, // updated 5.35 hotfix MarketTaxRates = 0x01F8, // updated 5.35 hotfix
MarketBoardSearchResult = 0x032C, // updated 5.35 hotfix MarketBoardSearchResult = 0x01D6, // updated 5.45 hotfix
MarketBoardItemListingCount = 0x038F, // updated 5.35 hotfix MarketBoardItemListingCount = 0x00C0, // updated 5.45 hotfix
MarketBoardItemListingHistory = 0x0186, // updated 5.35 hotfix MarketBoardItemListingHistory = 0x01C3, // updated 5.45 hotfix
MarketBoardItemListing = 0x025F, // updated 5.35 hotfix MarketBoardItemListing = 0x016B, // updated 5.45 hotfix
CharaFreeCompanyTag = 0x013B, // updated 4.5 CharaFreeCompanyTag = 0x013B, // updated 4.5
FreeCompanyBoardMsg = 0x013C, // updated 4.5 FreeCompanyBoardMsg = 0x013C, // updated 4.5
FreeCompanyInfo = 0xF13D, // updated 4.5 FreeCompanyInfo = 0x03D0, // updated 5.45 hotfix
ExamineFreeCompanyInfo = 0xF13E, // updated 4.5 ExamineFreeCompanyInfo = 0xF13E, // updated 4.5
FreeCompanyUpdateShortMessage = 0xF157, // added 5.0 FreeCompanyUpdateShortMessage = 0xF157, // added 5.0
StatusEffectList = 0x0382, // updated 5.35 hotfix StatusEffectList = 0x0243, // updated 5.45 hotfix
EurekaStatusEffectList = 0x0167, // updated 5.18 EurekaStatusEffectList = 0x0167, // updated 5.18
BossStatusEffectList = 0x0312, // added 5.1 BossStatusEffectList = 0x0312, // added 5.1
Effect = 0x0192, // updated 5.35 hotfix Effect = 0x027F, // updated 5.45 hotfix
AoeEffect8 = 0x012C, // updated 5.35 hotfix AoeEffect8 = 0x009B, // updated 5.45 hotfix
AoeEffect16 = 0x01B9, // updated 5.35 hotfix AoeEffect16 = 0x028C, // updated 5.45 hotfix
AoeEffect24 = 0x02B4, // updated 5.35 hotfix AoeEffect24 = 0x02AD, // updated 5.45 hotfix
AoeEffect32 = 0x00A4, // updated 5.35 hotfix AoeEffect32 = 0x00A7, // updated 5.45 hotfix
PersistantEffect = 0x0317, // updated 5.35 hotfix PersistantEffect = 0x0244, // updated 5.45 hotfix
GCAffiliation = 0x0105, // updated 5.35 hotfix GCAffiliation = 0x0155, // updated 5.45 hotfix
PlayerSpawn = 0x0179, // updated 5.35 hotfix PlayerSpawn = 0x01AB, // updated 5.45 hotfix
NpcSpawn = 0x03A8, // updated 5.35 hotfix NpcSpawn = 0x02C9, // updated 5.45 hotfix
NpcSpawn2 = 0x01CB, // ( Bigger statuseffectlist? ) updated 5.3 NpcSpawn2 = 0x01CB, // ( Bigger statuseffectlist? ) updated 5.3
ActorMove = 0x01BF, // updated 5.35 hotfix ActorMove = 0x006B, // updated 5.45 hotfix
ActorSetPos = 0x03DF, // updated 5.35 hotfix ActorSetPos = 0x00C6, // updated 5.45 hotfix
ActorCast = 0x0302, // updated 5.35 hotfix ActorCast = 0x034C, // updated 5.45 hotfix
SomeCustomiseChangePacketProbably = 0x00CD, // added 5.18 SomeCustomiseChangePacketProbably = 0x00CD, // added 5.18
PartyList = 0x02B2, // updated 5.35 hotfix PartyList = 0x00F5, // updated 5.45 hotfix
PartyMessage = 0x00AE, // updated 5.35 hotfix PartyMessage = 0x01BC, // updated 5.45 hotfix
HateRank = 0x02CC, // updated 5.35 hotfix HateRank = 0x0217, // updated 5.45 hotfix
HateList = 0x0198, // updated 5.35 hotfix HateList = 0x00E5, // updated 5.45 hotfix
ObjectSpawn = 0x02B8, // updated 5.35 hotfix ObjectSpawn = 0x0336, // updated 5.45 hotfix
ObjectDespawn = 0x00C0, // updated 5.35 hotfix ObjectDespawn = 0x02D0, // updated 5.45 hotfix
UpdateClassInfo = 0x0235, // updated 5.35 hotfix UpdateClassInfo = 0x0179, // updated 5.45 hotfix
SilentSetClassJob = 0x018E, // updated 5.0 - seems to be the case, not sure if it's actually used for anything SilentSetClassJob = 0xF18E, // updated 5.0 - seems to be the case, not sure if it's actually used for anything
PlayerSetup = 0x0290, // updated 5.35 hotfix PlayerSetup = 0x01E9, // updated 5.45 hotfix
PlayerStats = 0x023B, // updated 5.35 hotfix PlayerStats = 0x01CC, // updated 5.45 hotfix
ActorOwner = 0x00E8, // updated 5.35 hotfix ActorOwner = 0x0153, // updated 5.45 hotfix
PlayerStateFlags = 0x00F8, // updated 5.35 hotfix PlayerStateFlags = 0x02DC, // updated 5.45 hotfix
PlayerClassInfo = 0x02C3, // updated 5.35 hotfix PlayerClassInfo = 0x02F0, // updated 5.45 hotfix
CharaVisualEffect = 0x02E2, // updated 5.35 hotfix CharaVisualEffect = 0x026A, // updated 5.45 hotfix
ModelEquip = 0x0277, // updated 5.35 hotfix ModelEquip = 0x024A, // updated 5.45 hotfix
Examine = 0x00BC, // updated 5.35 hotfix Examine = 0x0261, // updated 5.45 hotfix
CharaNameReq = 0x008E, // updated 5.35 hotfix CharaNameReq = 0x0380, // updated 5.45 hotfix
// nb: see #565 on github // nb: see #565 on github
UpdateRetainerItemSalePrice = 0xF19F, // updated 5.0 UpdateRetainerItemSalePrice = 0xF19F, // updated 5.0
RetainerSaleHistory = 0x020E, // updated 5.21 hotfix RetainerSaleHistory = 0x020E, // updated 5.21 hotfix
RetainerInformation = 0x01F9, // updated 5.35 hotfix RetainerInformation = 0x026B, // updated 5.45 hotfix
SetLevelSync = 0x1186, // not updated for 4.4, not sure what it is anymore SetLevelSync = 0x1186, // not updated for 4.4, not sure what it is anymore
ItemInfo = 0x0214, // updated 5.35 hotfix ItemInfo = 0x0175, // updated 5.45 hotfix
ContainerInfo = 0x00C5, // updated 5.35 hotfix ContainerInfo = 0x0193, // updated 5.45 hotfix
InventoryTransactionFinish = 0x02F0, // updated 5.35 hotfix InventoryTransactionFinish = 0x00BD, // updated 5.45 hotfix
InventoryTransaction = 0x01FD, // updated 5.35 hotfix InventoryTransaction = 0x02EE, // updated 5.45 hotfix
CurrencyCrystalInfo = 0x0379, // updated 5.35 hotfix CurrencyCrystalInfo = 0x0363, // updated 5.45 hotfix
InventoryActionAck = 0x03E4, // updated 5.35 hotfix InventoryActionAck = 0x02FA, // updated 5.45 hotfix
UpdateInventorySlot = 0x036A, // updated 5.35 hotfix UpdateInventorySlot = 0x017D, // updated 5.45 hotfix
HuntingLogEntry = 0x0146, // updated 5.35 hotfix HuntingLogEntry = 0x0232, // updated 5.45 hotfix
EventPlay = 0x00F3, // updated 5.35 hotfix EventPlay = 0x0276, // updated 5.45 hotfix
EventPlay4 = 0x00AC, // updated 5.35 hotfix EventPlay4 = 0x028D, // updated 5.45 hotfix
EventPlay8 = 0x023F, // updated 5.35 hotfix EventPlay8 = 0x0318, // updated 5.45 hotfix
EventPlay16 = 0x025B, // updated 5.35 hotfix EventPlay16 = 0x020D, // updated 5.45 hotfix
EventPlay32 = 0x029A, // updated 5.35 hotfix EventPlay32 = 0x03B5, // updated 5.45 hotfix
EventPlay64 = 0x02C1, // updated 5.35 hotfix EventPlay64 = 0x039E, // updated 5.45 hotfix
EventPlay128 = 0x038A, // updated 5.35 hotfix EventPlay128 = 0x02F4, // updated 5.45 hotfix
EventPlay255 = 0x034B, // updated 5.35 hotfix EventPlay255 = 0x009D, // updated 5.45 hotfix
EventYield = 0x037D, // updated 5.35 hotfix EventYield = 0x0268, // updated 5.45 hotfix
//EventYield4 = 0x0000, //EventYield4 = 0x0000,
//EventYield8 = 0x0000, //EventYield8 = 0x0000,
//EventYield16 = 0x0000, //EventYield16 = 0x0000,
@ -203,29 +203,29 @@ namespace Sapphire::Network::Packets
//EventYield128 = 0x0000, //EventYield128 = 0x0000,
//EventYield255 = 0x0000, //EventYield255 = 0x0000,
EventStart = 0x009A, // updated 5.35 hotfix EventStart = 0x02DE, // updated 5.45 hotfix
EventFinish = 0x007E, // updated 5.35 hotfix EventFinish = 0x01A3, // updated 5.45 hotfix
EventLinkshell = 0x1169, EventLinkshell = 0x1169,
QuestActiveList = 0x0117, // updated 5.35 hotfix QuestActiveList = 0x015A, // updated 5.45 hotfix
QuestUpdate = 0x0073, // updated 5.35 hotfix QuestUpdate = 0x037B, // updated 5.45 hotfix
QuestCompleteList = 0x0240, // updated 5.35 hotfix QuestCompleteList = 0x0287, // updated 5.45 hotfix
QuestFinish = 0x00E9, // updated 5.35 hotfix QuestFinish = 0x0066, // updated 5.45 hotfix
MSQTrackerComplete = 0xF1D6, // updated 5.0 MSQTrackerComplete = 0xF1D6, // updated 5.0
MSQTrackerProgress = 0xF1CD, // updated 4.5 ? this actually looks like the two opcodes have been combined, see #474 MSQTrackerProgress = 0xF1CD, // updated 4.5 ? this actually looks like the two opcodes have been combined, see #474
QuestMessage = 0x0381, // updated 5.35 hotfix QuestMessage = 0x017B, // updated 5.45 hotfix
QuestTracker = 0x018B, // updated 5.35 hotfix QuestTracker = 0x01E8, // updated 5.45 hotfix
Mount = 0x01B5, // updated 5.35 hotfix Mount = 0x0122, // updated 5.45 hotfix
DirectorVars = 0x011D, // updated 5.35 hotfix DirectorVars = 0x0252, // updated 5.45 hotfix
SomeDirectorUnk1 = 0x0084, // updated 5.18 SomeDirectorUnk1 = 0x0084, // updated 5.18
SomeDirectorUnk2 = 0xF0C1, // updated 5.18 SomeDirectorUnk2 = 0xF0C1, // updated 5.18
SomeDirectorUnk4 = 0x0202, // updated 5.35 hotfix SomeDirectorUnk4 = 0x0071, // updated 5.45 hotfix
SomeDirectorUnk8 = 0x028A, // updated 5.18 SomeDirectorUnk8 = 0x028A, // updated 5.18
SomeDirectorUnk16 = 0x028C, // updated 5.18 SomeDirectorUnk16 = 0x028C, // updated 5.18
DirectorPopUp = 0xF162, // updated 5.18 - display dialogue pop-ups in duties and FATEs, for example, Teraflare's countdown DirectorPopUp = 0xF162, // updated 5.18 - display dialogue pop-ups in duties and FATEs, for example, Teraflare's countdown
@ -234,55 +234,58 @@ namespace Sapphire::Network::Packets
CFAvailableContents = 0xF1FD, // updated 4.2 CFAvailableContents = 0xF1FD, // updated 4.2
WeatherChange = 0x027B, // updated 5.35 hotfix WeatherChange = 0x0167, // updated 5.45 hotfix
PlayerTitleList = 0x0251, // updated 5.35 hotfix PlayerTitleList = 0x00F3, // updated 5.45 hotfix
Discovery = 0x031B, // updated 5.35 hotfix Discovery = 0x0247, // updated 5.45 hotfix
EorzeaTimeOffset = 0x01D4, // updated 5.35 hotfix EorzeaTimeOffset = 0x00C5, // updated 5.45 hotfix
EquipDisplayFlags = 0x00BE, // updated 5.35 hotfix EquipDisplayFlags = 0x0316, // updated 5.45 hotfix
MiniCactpotInit = 0x0286, // added 5.31 MiniCactpotInit = 0x0286, // added 5.31
ShopMessage = 0x0197, // updated 5.35 hotfix ShopMessage = 0x02FC, // updated 5.45 hotfix
LootMessage = 0x01B7, // updated 5.35 hotfix LootMessage = 0x03B8, // updated 5.45 hotfix
ResultDialog = 0x0296, // updated 5.45 hotfix
DesynthResult = 0x0323, // updated 5.45 hotfix
/// Housing ////////////////////////////////////// /// Housing //////////////////////////////////////
LandSetInitialize = 0x0095, // updated 5.35 hotfix LandSetInitialize = 0x03E2, // updated 5.45 hotfix
LandUpdate = 0x00BF, // updated 5.35 hotfix LandUpdate = 0x027E, // updated 5.45 hotfix
YardObjectSpawn = 0x01CA, // updated 5.35 hotfix YardObjectSpawn = 0x010E, // updated 5.45 hotfix
HousingIndoorInitialize = 0x01FF, // updated 5.35 hotfix HousingIndoorInitialize = 0x01A9, // updated 5.45 hotfix
LandPriceUpdate = 0x0380, // updated 5.35 hotfix LandPriceUpdate = 0x0379, // updated 5.45 hotfix
LandInfoSign = 0x023D, // updated 5.35 hotfix LandInfoSign = 0x0398, // updated 5.45 hotfix
LandRename = 0x0140, // updated 5.35 hotfix LandRename = 0x00F6, // updated 5.45 hotfix
HousingEstateGreeting = 0x00C7, // updated 5.35 hotfix HousingEstateGreeting = 0x037D, // updated 5.45 hotfix
HousingUpdateLandFlagsSlot = 0x027E, // updated 5.35 hotfix HousingUpdateLandFlagsSlot = 0x03AF, // updated 5.45 hotfix
HousingLandFlags = 0x022F, // updated 5.35 hotfix HousingLandFlags = 0x033B, // updated 5.45 hotfix
HousingShowEstateGuestAccess = 0x03B5, // updated 5.35 hotfix HousingShowEstateGuestAccess = 0x01B3, // updated 5.45 hotfix
HousingObjectInitialize = 0x01AA, // updated 5.35 hotfix HousingObjectInitialize = 0x00B5, // updated 5.45 hotfix
HousingInternalObjectSpawn = 0x0234, // updated 5.35 hotfix HousingInternalObjectSpawn = 0x00BC, // updated 5.45 hotfix
HousingWardInfo = 0x02FD, // updated 5.35 hotfix HousingWardInfo = 0x015E, // updated 5.45 hotfix
HousingObjectMove = 0x022C, // updated 5.35 hotfix HousingObjectMove = 0x03E6, // updated 5.45 hotfix
SharedEstateSettingsResponse = 0x006A, // updated 5.35 hotfix SharedEstateSettingsResponse = 0x03A4, // updated 5.45 hotfix
LandUpdateHouseName = 0x00B1, // updated 5.35 hotfix LandUpdateHouseName = 0x0215, // updated 5.45 hotfix
LandSetMap = 0x0149, // updated 5.35 hotfix LandSetMap = 0x0103, // updated 5.45 hotfix
////////////////////////////////////////////////// //////////////////////////////////////////////////
DuelChallenge = 0x0277, // 4.2; this is responsible for opening the ui DuelChallenge = 0x0277, // 4.2; this is responsible for opening the ui
PerformNote = 0x0286, // updated 4.3 PerformNote = 0x0286, // updated 4.3
PrepareZoning = 0x026C, // updated 5.35 hotfix PrepareZoning = 0x01EE, // updated 5.45 hotfix
ActorGauge = 0x0112, // updated 5.35 hotfix ActorGauge = 0x018E, // updated 5.45 hotfix
DutyGauge = 0x00D2, // updated 5.45 hotfix
// daily quest info -> without them sent, login will take longer... // daily quest info -> without them sent, login will take longer...
DailyQuests = 0x0139, // updated 5.35 hotfix DailyQuests = 0x02C4, // updated 5.45 hotfix
DailyQuestRepeatFlags = 0x024C, // updated 5.35 hotfix DailyQuestRepeatFlags = 0x024D, // updated 5.45 hotfix
/// Doman Mahjong ////////////////////////////////////// /// Doman Mahjong //////////////////////////////////////
MahjongOpenGui = 0x02A4, // only available in mahjong instance MahjongOpenGui = 0x02A4, // only available in mahjong instance
@ -295,6 +298,16 @@ namespace Sapphire::Network::Packets
// 2C3 and 2C4 are currently unknown // 2C3 and 2C4 are currently unknown
MahjongEndRoundDraw = 0x02C5, // self explanatory MahjongEndRoundDraw = 0x02C5, // self explanatory
MahjongEndGame = 0x02C6, // finished oorasu(all-last) round; shows a result screen. MahjongEndGame = 0x02C6, // finished oorasu(all-last) round; shows a result screen.
/// Airship & Submarine //////////////////////////////////////
AirshipExplorationResult = 0x0131, // updated 5.45 hotfix
AirshipStatus = 0x0253, // updated 5.45 hotfix
AirshipStatusList = 0x0391, // updated 5.45 hotfix
AirshipTimers = 0x0206, // updated 5.45 hotfix
SubmarineExplorationResult = 0x00EB, // updated 5.45 hotfix
SubmarineProgressionStatus = 0x0333, // updated 5.45 hotfix
SubmarineStatusList = 0x01F2, // updated 5.45 hotfix
SubmarineTimers = 0x013B, // updated 5.45 hotfix
}; };
/** /**
@ -302,43 +315,43 @@ namespace Sapphire::Network::Packets
*/ */
enum ClientZoneIpcType : uint16_t enum ClientZoneIpcType : uint16_t
{ {
PingHandler = 0x0219, // updated 5.35 hotfix PingHandler = 0x0183, // updated 5.45 hotfix
InitHandler = 0x0185, // updated 5.35 hotfix InitHandler = 0x01EA, // updated 5.45 hotfix
FinishLoadingHandler = 0x01BE, // updated 5.35 hotfix FinishLoadingHandler = 0x023F, // updated 5.45 hotfix
CFCommenceHandler = 0x0118, // updated 5.35 hotfix CFCommenceHandler = 0x0118, // updated 5.35 hotfix
CFCancelHandler = 0x0332, // updated 5.35 hotfix CFCancelHandler = 0x0332, // updated 5.35 hotfix
CFRegisterDuty = 0x0289, // updated 5.35 hotfix CFRegisterDuty = 0x033C, // updated 5.45 hotfix
CFRegisterRoulette = 0x0088, // updated 5.35 hotfix CFRegisterRoulette = 0x0121, // updated 5.45 hotfix
PlayTimeHandler = 0x02A8, // updated 5.35 hotfix PlayTimeHandler = 0x0096, // updated 5.45 hotfix
LogoutHandler = 0x00EC, // updated 5.35 hotfix LogoutHandler = 0x0312, // updated 5.45 hotfix
CancelLogout = 0x03DB, // updated 5.35 hotfix CancelLogout = 0x0307, // updated 5.45 hotfix
CFDutyInfoHandler = 0x0078, // updated 4.2 CFDutyInfoHandler = 0x0078, // updated 4.2
SocialReqSendHandler = 0x0387, // updated 5.35 hotfix SocialReqSendHandler = 0x0288, // updated 5.45 hotfix
SocialResponseHandler = 0x028D, // updated 5.35 hotfix SocialResponseHandler = 0x029B, // updated 5.45 hotfix
CreateCrossWorldLS = 0x00AF, // updated 4.3 CreateCrossWorldLS = 0x00AF, // updated 4.3
ChatHandler = 0x0131, // updated 5.35 hotfix ChatHandler = 0x00A4, // updated 5.45 hotfix
PartyChatHandler = 0x0065, PartyChatHandler = 0x0065,
PartySetLeaderHandler = 0x0208, // updated 5.35 hotfix PartySetLeaderHandler = 0x02EF, // updated 5.45 hotfix
LeavePartyHandler = 0x0337, // updated 5.35 hotfix LeavePartyHandler = 0x017E, // updated 5.45 hotfix
KickPartyMemberHandler = 0x014C, // updated 5.35 hotfix KickPartyMemberHandler = 0x0070, // updated 5.45 hotfix
DisbandPartyHandler = 0x0205, // updated 5.35 hotfix DisbandPartyHandler = 0x037A, // updated 5.45 hotfix
SocialListHandler = 0x0340, // updated 5.35 hotfix SocialListHandler = 0x02B0, // updated 5.45 hotfix
SetSearchInfoHandler = 0x0314, // updated 5.35 hotfix SetSearchInfoHandler = 0x0111, // updated 5.45 hotfix
ReqSearchInfoHandler = 0x01E9, // updated 5.35 hotfix ReqSearchInfoHandler = 0x03AC, // updated 5.45 hotfix
ReqExamineSearchCommentHandler = 0x00E7, // updated 5.0 ReqExamineSearchCommentHandler = 0x00E7, // updated 5.0
ReqRemovePlayerFromBlacklist = 0x00F1, // updated 5.0 ReqRemovePlayerFromBlacklist = 0x00F1, // updated 5.0
BlackListHandler = 0x0079, // updated 5.35 hotfix BlackListHandler = 0x02CD, // updated 5.45 hotfix
PlayerSearchHandler = 0x00F4, // updated 5.0 PlayerSearchHandler = 0x00F4, // updated 5.0
LinkshellListHandler = 0x024B, // updated 5.35 hotfix LinkshellListHandler = 0x0258, // updated 5.45 hotfix
MarketBoardRequestItemListingInfo = 0x0102, // updated 4.5 MarketBoardRequestItemListingInfo = 0x0102, // updated 4.5
MarketBoardRequestItemListings = 0x0103, // updated 4.5 MarketBoardRequestItemListings = 0x0103, // updated 4.5
@ -357,55 +370,55 @@ namespace Sapphire::Network::Packets
ReqCountdownInitiate = 0x025F, // updated 5.35 hotfix ReqCountdownInitiate = 0x025F, // updated 5.35 hotfix
ReqCountdownCancel = 0x0244, // updated 5.25 ReqCountdownCancel = 0x0244, // updated 5.25
ZoneLineHandler = 0x0279, // updated 5.35 hotfix ZoneLineHandler = 0x00BA, // updated 5.45 hotfix
ClientTrigger = 0x03D3, // updated 5.35 hotfix ClientTrigger = 0x0146, // updated 5.45 hotfix
DiscoveryHandler = 0x00E3, // updated 5.35 hotfix DiscoveryHandler = 0x00E3, // updated 5.35 hotfix
PlaceFieldMarkerPreset = 0x023F, // updated 5.25 PlaceFieldMarkerPreset = 0x01D3, // updated 5.45 hotfix
PlaceFieldMarker = 0x01BA, // updated 5.25 PlaceFieldMarker = 0x0392, // updated 5.45 hotfix
SkillHandler = 0x01CD, // updated 5.35 hotfix SkillHandler = 0x0388, // updated 5.45 hotfix
GMCommand1 = 0x02AC, // updated 5.35 hotfix GMCommand1 = 0x01E0, // updated 5.45 hotfix
GMCommand2 = 0x029F, // updated 5.35 hotfix GMCommand2 = 0x0114, // updated 5.45 hotfix
AoESkillHandler = 0x030C, // updated 5.35 hotfix AoESkillHandler = 0x03A0, // updated 5.45 hotfix
UpdatePositionHandler = 0x0236, // updated 5.35 hotfix UpdatePositionHandler = 0x031A, // updated 5.45 hotfix
InventoryModifyHandler = 0x0135, // updated 5.35 hotfix InventoryModifyHandler = 0x0110, // updated 5.45 hotfix
InventoryEquipRecommendedItems = 0x0116, // updated 5.35 hotfix InventoryEquipRecommendedItems = 0x0186, // updated 5.45 hotfix
ReqPlaceHousingItem = 0x02AE, // updated 5.35 hotfix ReqPlaceHousingItem = 0x0360, // updated 5.45 hotfix
BuildPresetHandler = 0x01C2, // updated 5.35 hotfix BuildPresetHandler = 0x01D7, // updated 5.45 hotfix
TalkEventHandler = 0x02A4, // updated 5.35 hotfix TalkEventHandler = 0x00C2, // updated 5.45 hotfix
EmoteEventHandler = 0x02C8, // updated 5.35 hotfix EmoteEventHandler = 0x03D5, // updated 5.45 hotfix
WithinRangeEventHandler = 0x0209, // updated 5.35 hotfix WithinRangeEventHandler = 0x0171, // updated 5.45 hotfix
OutOfRangeEventHandler = 0x0319, // updated 5.35 hotfix OutOfRangeEventHandler = 0x019B, // updated 5.45 hotfix
EnterTeriEventHandler = 0x0192, // updated 5.35 hotfix EnterTeriEventHandler = 0x027F, // updated 5.45 hotfix
ShopEventHandler = 0x01F6, // updated 5.35 hotfix ShopEventHandler = 0x03D4, // updated 5.45 hotfix
EventYieldHandler = 0x0128, // updated 5.35 hotfix EventYieldHandler = 0x0230, // updated 5.45 hotfix
ReturnEventHandler = 0x02B4, // updated 5.35 hotfix ReturnEventHandler = 0x02AD, // updated 5.45 hotfix
TradeReturnEventHandler = 0x00A4, // updated 5.35 hotfix TradeReturnEventHandler = 0x00A7, // updated 5.45 hotfix
TradeMultipleReturnEventHander = 0x035C, // updated 5.35 hotfix TradeMultipleReturnEventHander = 0x035C, // updated 5.35 hotfix
LinkshellEventHandler = 0x016B, // updated 4.5 LinkshellEventHandler = 0x016B, // updated 4.5
LinkshellEventHandler1 = 0x016C, // updated 4.5 LinkshellEventHandler1 = 0x016C, // updated 4.5
ReqEquipDisplayFlagsChange = 0x02F6, // updated 5.35 hotfix ReqEquipDisplayFlagsChange = 0x03B0, // updated 5.45 hotfix
LandRenameHandler = 0x0155, // updated 5.35 hotfix LandRenameHandler = 0x0187, // updated 5.45 hotfix
HousingUpdateHouseGreeting = 0x02EA, // updated 5.35 hotfix HousingUpdateHouseGreeting = 0x0367, // updated 5.45 hotfix
HousingUpdateObjectPosition = 0x00D5, // updated 5.35 hotfix HousingUpdateObjectPosition = 0x0265, // updated 5.45 hotfix
HousingEditExterior = 0x0098, // updated 5.35 hotfix HousingEditExterior = 0x0297, // updated 5.45 hotfix
SetSharedEstateSettings = 0x017B, // updated 5.0 SetSharedEstateSettings = 0x0146, // updated 5.45 hotfix
UpdatePositionInstance = 0x0345, // updated 5.35 hotfix UpdatePositionInstance = 0x034E, // updated 5.45 hotfix
PerformNoteHandler = 0x029B, // updated 4.3 PerformNoteHandler = 0x029B, // updated 4.3
WorldInteractionHandler = 0x00A9, // updated 5.35 hotfix WorldInteractionHandler = 0x02E4, // updated 5.45 hotfix
Dive = 0x02CC, // updated 5.35 hotfix Dive = 0x00F1, // updated 5.45 hotfix
}; };
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////

View file

@ -1046,8 +1046,7 @@ namespace Sapphire::Network::Packets::Server
unsigned char companionDefRank; unsigned char companionDefRank;
unsigned char companionAttRank; unsigned char companionAttRank;
unsigned char companionHealRank; unsigned char companionHealRank;
unsigned char mountGuideMask[23]; unsigned char mountGuideMask[27];
unsigned char maybeReservedMountSlots;
//== //==
char name[32]; char name[32];
unsigned char unknownOword[16]; unsigned char unknownOword[16];
@ -1056,10 +1055,11 @@ namespace Sapphire::Network::Packets::Server
unsigned char aetheryte[21]; unsigned char aetheryte[21];
unsigned char discovery[445]; unsigned char discovery[445];
unsigned char howto[34]; unsigned char howto[34];
unsigned char minions[51]; unsigned char minions[53];
unsigned char chocoboTaxiMask[10]; unsigned char chocoboTaxiMask[10];
unsigned char watchedCutscenes[131]; unsigned char watchedCutscenes[135];
unsigned char companionBardingMask[10]; unsigned char companionBardingMask[10];
unsigned char unknown5_45a; // companionBardingMask[11]?
unsigned char companionEquippedHead; unsigned char companionEquippedHead;
unsigned char companionEquippedBody; unsigned char companionEquippedBody;
unsigned char companionEquippedLegs; unsigned char companionEquippedLegs;
@ -1074,7 +1074,7 @@ namespace Sapphire::Network::Packets::Server
unsigned char unknownPvp5AB[11]; unsigned char unknownPvp5AB[11];
unsigned char unknown5B9[5]; unsigned char unknown5B9[5];
*/ */
unsigned char unknown5_3c[234]; unsigned char unknown5_45b[236];
//== //==
unsigned char pose; unsigned char pose;
/* /*
@ -1092,28 +1092,32 @@ namespace Sapphire::Network::Packets::Server
unsigned char aetherCurrentMask[22]; unsigned char aetherCurrentMask[22];
unsigned char u10[3]; unsigned char u10[3];
*/ */
unsigned char unknown5_3d[292]; unsigned char unknown5_45c[294];
//== //==
unsigned char orchestrionMask[40]; unsigned char orchestrionMask[40]; // this field may already be extended, if it is, the beginning bytes are at the end of unknown5_45c
unsigned char hallOfNoviceCompletion[3]; unsigned char hallOfNoviceCompletion[3];
unsigned char animaCompletion[11]; unsigned char animaCompletion[11];
unsigned char unknown5_3e[33]; unsigned char unknown5_3e[33];
unsigned char unlockedRaids[28]; unsigned char unlockedRaids[28];
unsigned char unlockedDungeons[18]; unsigned char unlockedDungeons[18];
unsigned char unlockedGuildhests[10]; unsigned char unlockedGuildhests[10];
unsigned char unlockedTrials[9]; // 5.35 trial:pvp either 9:5 or 8:6 not confirmed /*
unsigned char unlockedPvp[5]; at least 8 bytes at most 10 bytes in unlockedTrials not confirmed, adjust unlockedPvp so they share a total of 15 bytes and sync with clearedTrials/clearedPvp.
*/
unsigned char unlockedTrials[9];
unsigned char unlockedPvp[6];
//==
unsigned char clearedRaids[28]; unsigned char clearedRaids[28];
unsigned char clearedDungeons[18]; unsigned char clearedDungeons[18];
unsigned char clearedGuildhests[10]; unsigned char clearedGuildhests[10];
unsigned char clearedTrials[9]; unsigned char clearedTrials[9];
unsigned char clearedPvp[5]; unsigned char clearedPvp[6];
/* /*
unsigned short fishingRecordsFishWeight[26]; unsigned short fishingRecordsFishWeight[26];
unsigned int exploratoryMissionNextTimestamp; unsigned int exploratoryMissionNextTimestamp;
unsigned char pvpLevel; unsigned char pvpLevel;
*/ */
unsigned char padding2[8]; unsigned char unknown5_45d[8];
//== //==
}; };

View file

@ -452,8 +452,8 @@ void Lobby::GameConnection::generateEncryptionKey( uint32_t key, const std::stri
m_baseKey[ 2 ] = 0x34; m_baseKey[ 2 ] = 0x34;
m_baseKey[ 3 ] = 0x12; m_baseKey[ 3 ] = 0x12;
memcpy( m_baseKey + 0x04, &key, 4 ); memcpy( m_baseKey + 0x04, &key, 4 );
m_baseKey[ 8 ] = 0x88; m_baseKey[ 8 ] = 0x18;
m_baseKey[ 9 ] = 0x13; m_baseKey[ 9 ] = 0x15;
memcpy( ( char* ) m_baseKey + 0x0C, keyPhrase.c_str(), keyPhrase.size() ); memcpy( ( char* ) m_baseKey + 0x0C, keyPhrase.c_str(), keyPhrase.size() );
Common::Util::md5( m_baseKey, m_encKey, 0x2C ); Common::Util::md5( m_baseKey, m_encKey, 0x2C );
} }

View file

@ -1068,7 +1068,7 @@ namespace Sapphire::Entity
uint8_t m_titleList[48]; uint8_t m_titleList[48];
uint8_t m_howTo[34]; uint8_t m_howTo[34];
uint8_t m_minions[40]; uint8_t m_minions[40];
uint8_t m_mountGuide[22]; uint8_t m_mountGuide[27];
uint8_t m_homePoint; uint8_t m_homePoint;
uint8_t m_startTown; uint8_t m_startTown;
uint16_t m_townWarpFstFlags; uint16_t m_townWarpFstFlags;

View file

@ -580,9 +580,9 @@ Sapphire::ItemPtr Sapphire::Entity::Player::addItem( ItemPtr itemToAdd, bool sil
bool foundFreeSlot = false; bool foundFreeSlot = false;
std::vector< uint16_t > bags = { Bag0, Bag1, Bag2, Bag3 }; std::vector< uint16_t > bags = { Bag0, Bag1, Bag2, Bag3 };
sendDebug( "adding item: {}, equipSlotCategory: {}, stackSize: {}", itemToAdd->getId(), itemInfo->equipSlotCategory, itemInfo->stackSize );
// add the related armoury bag to the applicable bags and try and fill a free slot there before falling back to regular inventory // add the related armoury bag to the applicable bags and try and fill a free slot there before falling back to regular inventory
if( itemInfo->isEquippable && getEquipDisplayFlags() & StoreNewItemsInArmouryChest ) if( itemInfo->equipSlotCategory > 0 && getEquipDisplayFlags() & StoreNewItemsInArmouryChest )
{ {
auto bag = World::Manager::ItemMgr::getCharaEquipSlotCategoryToArmoryId( static_cast< Common::EquipSlotCategory >( itemInfo->equipSlotCategory ) ); auto bag = World::Manager::ItemMgr::getCharaEquipSlotCategoryToArmoryId( static_cast< Common::EquipSlotCategory >( itemInfo->equipSlotCategory ) );
@ -601,7 +601,7 @@ Sapphire::ItemPtr Sapphire::Entity::Player::addItem( ItemPtr itemToAdd, bool sil
auto item = storage->getItem( slot ); auto item = storage->getItem( slot );
// add any items that are stackable // add any items that are stackable
if( canMerge && item && !itemInfo->isEquippable && item->getId() == itemToAdd->getId() ) if( canMerge && item && item->getMaxStackSize() > 1 && item->getId() == itemToAdd->getId() )
{ {
uint32_t count = item->getStackSize(); uint32_t count = item->getStackSize();
uint32_t maxStack = item->getMaxStackSize(); uint32_t maxStack = item->getMaxStackSize();

View file

@ -32,51 +32,51 @@ uint16_t Sapphire::World::Manager::ItemMgr::getCharaEquipSlotCategoryToArmoryId(
switch( slot ) switch( slot )
{ {
case Common::EquipSlotCategory::CharaHead: case Common::EquipSlotCategory::Head:
return Common::ArmoryHead; return Common::ArmoryHead;
case Common::EquipSlotCategory::CharaBody: case Common::EquipSlotCategory::Body:
//case Common::EquipSlotCategory::BodyDisallowHead: case Common::EquipSlotCategory::BodyDisallowHead:
//case Common::EquipSlotCategory::BodyDisallowHandsLegsFeet: case Common::EquipSlotCategory::BodyDisallowHandsLegsFeet:
//case Common::EquipSlotCategory::BodyDisallowAll: case Common::EquipSlotCategory::BodyDisallowAll:
//case Common::EquipSlotCategory::BodyDisallowHands: case Common::EquipSlotCategory::BodyDisallowHands:
//case Common::EquipSlotCategory::BodyDisallowLegsFeet: case Common::EquipSlotCategory::BodyDisallowLegsFeet:
return Common::ArmoryBody; return Common::ArmoryBody;
case Common::EquipSlotCategory::CharaEars: case Common::EquipSlotCategory::Ears:
return Common::ArmoryEar; return Common::ArmoryEar;
case Common::EquipSlotCategory::CharaFeet: case Common::EquipSlotCategory::Feet:
return Common::ArmoryFeet; return Common::ArmoryFeet;
case Common::EquipSlotCategory::CharaHands: case Common::EquipSlotCategory::Hands:
return Common::ArmoryHand; return Common::ArmoryHand;
case Common::EquipSlotCategory::CharaLegs: case Common::EquipSlotCategory::Legs:
//case Common::EquipSlotCategory::LegsDisallowFeet: case Common::EquipSlotCategory::LegsDisallowFeet:
return Common::ArmoryLegs; return Common::ArmoryLegs;
case Common::EquipSlotCategory::CharaMainHand: case Common::EquipSlotCategory::MainHand:
//case Common::EquipSlotCategory::MainTwoHandedWeapon: case Common::EquipSlotCategory::MainTwoHandedWeapon:
//case Common::EquipSlotCategory::MainOrOffHand: //case Common::EquipSlotCategory::MainOrOffHand:
return Common::ArmoryMain; return Common::ArmoryMain;
case Common::EquipSlotCategory::CharaOffHand: case Common::EquipSlotCategory::OffHand:
return Common::ArmoryOff; return Common::ArmoryOff;
case Common::EquipSlotCategory::CharaRing: case Common::EquipSlotCategory::Ring:
return Common::ArmoryRing; return Common::ArmoryRing;
case Common::EquipSlotCategory::CharaWaist: case Common::EquipSlotCategory::Waist:
return Common::ArmoryWaist; return Common::ArmoryWaist;
case Common::EquipSlotCategory::CharaWrist: case Common::EquipSlotCategory::Wrist:
return Common::ArmoryWrist; return Common::ArmoryWrist;
case Common::EquipSlotCategory::CharaNeck: case Common::EquipSlotCategory::Neck:
return Common::ArmoryNeck; return Common::ArmoryNeck;
case Common::EquipSlotCategory::CharaSoulCrystal: case Common::EquipSlotCategory::SoulCrystal:
return Common::ArmorySoulCrystal; return Common::ArmorySoulCrystal;
default: default: