1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-28 15:17:46 +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,
CharaSoulCrystal = 12,
/* following slots not seem to exist any more.
when multi-slot gear is moved into equipment slot, normal slot listed above is used.
client will move any incompatible gears into armory but no InventoryModifiyHandler is sent.
server need to move those silently in order to sync with client.
*/
/*! Cannot equip gear to offhand slot */
//MainTwoHandedWeapon = 13,
/*! Can be equipped in either main or offhand slot */
//MainOrOffHand = 14, // unused //MainOrOffHand = 14, // unused
/*! Cannot equip gear to head */ BodyDisallowHead = 15,
//BodyDisallowHead = 15, BodyDisallowHandsLegsFeet = 16,
/*! Cannot equip gear to hands, legs and feet slots */ SoulCrystal = 17,
//BodyDisallowHandsLegsFeet = 16, LegsDisallowFeet = 18,
/*! Cannot equip gear to feet slot */ BodyDisallowAll = 19,
//LegsDisallowFeet = 18, BodyDisallowHands = 20,
/*! Cannot equp gear to head, hands, legs, feet slots */ BodyDisallowLegsFeet = 21,
//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: