mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-25 05:57:45 +00:00
Merge pull request #566 from NotAdam/develop
5.0 updates, the first of many to come
This commit is contained in:
commit
aa4e213103
14 changed files with 714 additions and 593 deletions
|
@ -21,6 +21,9 @@ namespace Sapphire::Common
|
|||
const int32_t INVALID_GAME_OBJECT_ID = 0xE0000000;
|
||||
const uint64_t INVALID_GAME_OBJECT_ID64 = 0xE0000000;
|
||||
|
||||
const uint16_t MAX_PLAYER_LEVEL = 80;
|
||||
const uint8_t CURRENT_EXPANSION_ID = 3;
|
||||
|
||||
/*!
|
||||
* @brief The maximum length (in ms) of a combo before it is canceled/voided.
|
||||
*
|
||||
|
|
|
@ -6,8 +6,7 @@
|
|||
/* This file has been automatically generated.
|
||||
Changes will be lost upon regeneration.
|
||||
To change the content edit tools/exd_common_gen */
|
||||
namespace Sapphire {
|
||||
namespace Common {
|
||||
namespace Sapphire::Common {
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
//ActionCategory.exd
|
||||
|
@ -173,6 +172,8 @@ enum class ClassJob : uint8_t
|
|||
Samurai = 34,
|
||||
Redmage = 35,
|
||||
Bluemage = 36,
|
||||
Gunbreaker = 37,
|
||||
Dancer = 38,
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -199,14 +200,10 @@ enum class ContentType : uint8_t
|
|||
DisciplesoftheHand = 17,
|
||||
RetainerVentures = 18,
|
||||
GoldSaucer = 19,
|
||||
one = 20,
|
||||
DeepDungeons = 21,
|
||||
two = 22,
|
||||
three = 23,
|
||||
WondrousTails = 24,
|
||||
CustomDeliveries = 25,
|
||||
Eureka = 26,
|
||||
four = 27,
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -217,7 +214,6 @@ enum class EmoteCategory : uint8_t
|
|||
General = 1,
|
||||
Special = 2,
|
||||
Expressions = 3,
|
||||
one = 4,
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -227,7 +223,7 @@ enum class ExVersion : uint8_t
|
|||
ARealmReborn = 0,
|
||||
Heavensward = 1,
|
||||
Stormblood = 2,
|
||||
three = 3,
|
||||
Shadowbringers = 3,
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -369,6 +365,8 @@ enum class ItemUICategory : uint8_t
|
|||
SubmersibleBow = 103,
|
||||
SubmersibleBridge = 104,
|
||||
BlueMagesArm = 105,
|
||||
GunbreakersArm = 106,
|
||||
DancersArm = 107,
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -393,7 +391,7 @@ enum class ItemSearchCategory : uint8_t
|
|||
ConjurersArms = 15,
|
||||
ArcanistsArms = 16,
|
||||
Shields = 17,
|
||||
ThrowingWeapons = 18,
|
||||
DancersArms = 18,
|
||||
CarpentersTools = 19,
|
||||
BlacksmithsTools = 20,
|
||||
ArmorersTools = 21,
|
||||
|
@ -454,13 +452,15 @@ enum class ItemSearchCategory : uint8_t
|
|||
DarkKnightsArms = 76,
|
||||
MachinistsArms = 77,
|
||||
AstrologiansArms = 78,
|
||||
Airship_SubmersibleComponents = 79,
|
||||
AirshipSubmersibleComponents = 79,
|
||||
OrchestrionComponents = 80,
|
||||
GardeningItems = 81,
|
||||
Paintings = 82,
|
||||
SamuraisArms = 83,
|
||||
RedMagesArms = 84,
|
||||
ScholarsArms = 85,
|
||||
GunbreakersArms = 86,
|
||||
ThrowingWeapons = 87,
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -527,6 +527,8 @@ enum class Race : uint8_t
|
|||
Miqote = 4,
|
||||
Roegadyn = 5,
|
||||
AuRa = 6,
|
||||
Hrothgar = 7,
|
||||
Viera = 8,
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -546,6 +548,10 @@ enum class Tribe : uint8_t
|
|||
Hellsguard = 10,
|
||||
Raen = 11,
|
||||
Xaela = 12,
|
||||
Helions = 13,
|
||||
TheLost = 14,
|
||||
Rava = 15,
|
||||
Veena = 16,
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -558,6 +564,7 @@ enum class Town : uint8_t
|
|||
Uldah = 3,
|
||||
Ishgard = 4,
|
||||
Kugane = 7,
|
||||
TheCrystarium = 10,
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -680,7 +687,21 @@ enum class Weather : uint8_t
|
|||
TrueBlue = 113,
|
||||
TrueBlue1 = 114,
|
||||
TrueBlue2 = 115,
|
||||
UmbralTurbulence = 116,
|
||||
TrueBlue3 = 117,
|
||||
EverlastingLight = 118,
|
||||
Gales2 = 119,
|
||||
Termination = 120,
|
||||
Termination1 = 121,
|
||||
Dreams = 122,
|
||||
Dreams1 = 123,
|
||||
Dreams2 = 124,
|
||||
Brilliance = 125,
|
||||
Brilliance1 = 126,
|
||||
Termination2 = 127,
|
||||
Termination3 = 128,
|
||||
EverlastingLight1 = 129,
|
||||
Termination4 = 131,
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
|
@ -703,8 +724,12 @@ enum class HousingAppeal : uint8_t
|
|||
Library = 14,
|
||||
PhotoStudio = 15,
|
||||
HauntedHouse = 16,
|
||||
Atelier = 17,
|
||||
Bathhouse = 18,
|
||||
Garden = 19,
|
||||
FarEastern = 20,
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ Sapphire::Data::Achievement::Achievement( uint32_t row_id, Sapphire::Data::ExdDa
|
|||
data.push_back( exdData->getField< int32_t >( row, 16 ) );
|
||||
data.push_back( exdData->getField< int32_t >( row, 17 ) );
|
||||
order = exdData->getField< uint16_t >( row, 18 );
|
||||
initialHide = exdData->getField< bool >( row, 20 );
|
||||
initialHide = exdData->getField< uint8_t >( row, 20 );
|
||||
}
|
||||
|
||||
Sapphire::Data::AchievementCategory::AchievementCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -71,16 +71,16 @@ Sapphire::Data::Action::Action( uint32_t row_id, Sapphire::Data::ExdDataGenerate
|
|||
cast100ms = exdData->getField< uint16_t >( row, 37 );
|
||||
recast100ms = exdData->getField< uint16_t >( row, 38 );
|
||||
cooldownGroup = exdData->getField< uint8_t >( row, 39 );
|
||||
attackType = exdData->getField< int8_t >( row, 40 );
|
||||
aspect = exdData->getField< uint8_t >( row, 41 );
|
||||
actionProcStatus = exdData->getField< uint8_t >( row, 42 );
|
||||
statusGainSelf = exdData->getField< uint16_t >( row, 43 );
|
||||
unlockLink = exdData->getField< uint32_t >( row, 44 );
|
||||
classJobCategory = exdData->getField< uint8_t >( row, 45 );
|
||||
affectsPosition = exdData->getField< bool >( row, 48 );
|
||||
omen = exdData->getField< uint8_t >( row, 49 );
|
||||
isPvP = exdData->getField< bool >( row, 50 );
|
||||
isPlayerAction = exdData->getField< bool >( row, 62 );
|
||||
attackType = exdData->getField< int8_t >( row, 42 );
|
||||
aspect = exdData->getField< uint8_t >( row, 43 );
|
||||
actionProcStatus = exdData->getField< uint8_t >( row, 44 );
|
||||
statusGainSelf = exdData->getField< uint16_t >( row, 46 );
|
||||
unlockLink = exdData->getField< uint32_t >( row, 47 );
|
||||
classJobCategory = exdData->getField< uint8_t >( row, 48 );
|
||||
affectsPosition = exdData->getField< bool >( row, 51 );
|
||||
omen = exdData->getField< uint8_t >( row, 52 );
|
||||
isPvP = exdData->getField< bool >( row, 53 );
|
||||
isPlayerAction = exdData->getField< bool >( row, 65 );
|
||||
}
|
||||
|
||||
Sapphire::Data::ActionCastTimeline::ActionCastTimeline( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -656,24 +656,22 @@ Sapphire::Data::BeastReputationRank::BeastReputationRank( uint32_t row_id, Sapph
|
|||
Sapphire::Data::BeastTribe::BeastTribe( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
{
|
||||
auto row = exdData->m_BeastTribeDat.get_row( row_id );
|
||||
minLevel = exdData->getField< uint8_t >( row, 0 );
|
||||
maxLevel = exdData->getField< uint8_t >( row, 1 );
|
||||
minLevel = exdData->getField< uint8_t >( row, 1 );
|
||||
beastRankBonus = exdData->getField< uint8_t >( row, 2 );
|
||||
iconReputation = exdData->getField< uint32_t >( row, 3 );
|
||||
icon = exdData->getField< uint32_t >( row, 4 );
|
||||
maxRank = exdData->getField< uint8_t >( row, 5 );
|
||||
alliedBeastTribeQuest = exdData->getField< uint32_t >( row, 6 );
|
||||
expansion = exdData->getField< uint8_t >( row, 7 );
|
||||
currencyItem = exdData->getField< uint32_t >( row, 8 );
|
||||
displayOrder = exdData->getField< uint8_t >( row, 9 );
|
||||
name = exdData->getField< std::string >( row, 10 );
|
||||
nameRelation = exdData->getField< std::string >( row, 18 );
|
||||
expansion = exdData->getField< uint8_t >( row, 6 );
|
||||
currencyItem = exdData->getField< uint32_t >( row, 7 );
|
||||
displayOrder = exdData->getField< uint8_t >( row, 8 );
|
||||
name = exdData->getField< std::string >( row, 9 );
|
||||
nameRelation = exdData->getField< std::string >( row, 17 );
|
||||
}
|
||||
|
||||
Sapphire::Data::Behavior::Behavior( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
{
|
||||
auto row = exdData->m_BehaviorDat.get_row( row_id, subRow );
|
||||
balloon = exdData->getField< uint16_t >( row, 6 );
|
||||
balloon = exdData->getField< uint16_t >( row, 7 );
|
||||
}
|
||||
|
||||
Sapphire::Data::BGM::BGM( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -968,8 +966,6 @@ Sapphire::Data::CharaMakeType::CharaMakeType( uint32_t row_id, Sapphire::Data::E
|
|||
race = exdData->getField< int32_t >( row, 0 );
|
||||
tribe = exdData->getField< int32_t >( row, 1 );
|
||||
gender = exdData->getField< int8_t >( row, 2 );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3291 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3292 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3293 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3294 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3295 ) );
|
||||
|
@ -1010,6 +1006,20 @@ Sapphire::Data::CharaMakeType::CharaMakeType( uint32_t row_id, Sapphire::Data::E
|
|||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3330 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3331 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3332 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3333 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3334 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3335 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3336 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3337 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3338 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3339 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3340 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3341 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3342 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3343 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3344 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3345 ) );
|
||||
facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 3346 ) );
|
||||
}
|
||||
|
||||
Sapphire::Data::ChocoboRace::ChocoboRace( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -1368,6 +1378,7 @@ Sapphire::Data::ContentFinderCondition::ContentFinderCondition( uint32_t row_id,
|
|||
contentLinkType = exdData->getField< uint8_t >( row, 2 );
|
||||
content = exdData->getField< uint16_t >( row, 3 );
|
||||
contentMemberType = exdData->getField< uint8_t >( row, 9 );
|
||||
unlockQuest = exdData->getField< uint32_t >( row, 13 );
|
||||
classJobLevelRequired = exdData->getField< uint8_t >( row, 15 );
|
||||
classJobLevelSync = exdData->getField< uint8_t >( row, 16 );
|
||||
itemLevelRequired = exdData->getField< uint16_t >( row, 17 );
|
||||
|
@ -1377,8 +1388,11 @@ Sapphire::Data::ContentFinderCondition::ContentFinderCondition( uint32_t row_id,
|
|||
dutyRecorderAllowed = exdData->getField< bool >( row, 30 );
|
||||
name = exdData->getField< std::string >( row, 34 );
|
||||
contentType = exdData->getField< uint8_t >( row, 35 );
|
||||
transientKey = exdData->getField< uint8_t >( row, 36 );
|
||||
transient = exdData->getField< uint32_t >( row, 37 );
|
||||
sortKey = exdData->getField< uint16_t >( row, 38 );
|
||||
image = exdData->getField< uint32_t >( row, 39 );
|
||||
icon = exdData->getField< uint32_t >( row, 40 );
|
||||
levelingRoulette = exdData->getField< bool >( row, 42 );
|
||||
level5060Roulette = exdData->getField< bool >( row, 43 );
|
||||
mSQRoulette = exdData->getField< bool >( row, 44 );
|
||||
|
@ -1475,12 +1489,14 @@ Sapphire::Data::ContentsNote::ContentsNote( uint32_t row_id, Sapphire::Data::Exd
|
|||
{
|
||||
auto row = exdData->m_ContentsNoteDat.get_row( row_id );
|
||||
contentType = exdData->getField< uint8_t >( row, 0 );
|
||||
icon = exdData->getField< int32_t >( row, 1 );
|
||||
menuOrder = exdData->getField< uint8_t >( row, 2 );
|
||||
requiredAmount = exdData->getField< int32_t >( row, 3 );
|
||||
expMultiplier = exdData->getField< int32_t >( row, 5 );
|
||||
gilRward = exdData->getField< int32_t >( row, 7 );
|
||||
levelUnlock = exdData->getField< uint16_t >( row, 8 );
|
||||
howTo = exdData->getField< uint16_t >( row, 9 );
|
||||
reqUnlock = exdData->getField< uint32_t >( row, 10 );
|
||||
name = exdData->getField< std::string >( row, 11 );
|
||||
description = exdData->getField< std::string >( row, 12 );
|
||||
expCap = exdData->getField< int32_t >( row, 13 );
|
||||
|
@ -2067,6 +2083,21 @@ Sapphire::Data::ENpcDressUpDress::ENpcDressUpDress( uint32_t row_id, uint32_t su
|
|||
{
|
||||
auto row = exdData->m_ENpcDressUpDressDat.get_row( row_id, subRow );
|
||||
eNpc = exdData->getField< uint32_t >( row, 6 );
|
||||
behavior = exdData->getField< uint16_t >( row, 8 );
|
||||
modelMainHand = exdData->getField< uint64_t >( row, 35 );
|
||||
dyeMainHand = exdData->getField< uint8_t >( row, 36 );
|
||||
modelOffHand = exdData->getField< uint64_t >( row, 37 );
|
||||
dyeOffHand = exdData->getField< uint8_t >( row, 38 );
|
||||
modelHead = exdData->getField< uint32_t >( row, 39 );
|
||||
dyeHead = exdData->getField< uint8_t >( row, 40 );
|
||||
modelBody = exdData->getField< uint32_t >( row, 41 );
|
||||
dyeBody = exdData->getField< uint8_t >( row, 42 );
|
||||
modelHands = exdData->getField< uint32_t >( row, 43 );
|
||||
dyeHands = exdData->getField< uint8_t >( row, 44 );
|
||||
modelLegs = exdData->getField< uint32_t >( row, 45 );
|
||||
dyeLegs = exdData->getField< uint8_t >( row, 46 );
|
||||
modelFeet = exdData->getField< uint32_t >( row, 47 );
|
||||
dyeFeet = exdData->getField< uint8_t >( row, 48 );
|
||||
}
|
||||
|
||||
Sapphire::Data::ENpcResident::ENpcResident( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -2111,8 +2142,8 @@ Sapphire::Data::EquipRaceCategory::EquipRaceCategory( uint32_t row_id, Sapphire:
|
|||
miqote = exdData->getField< bool >( row, 3 );
|
||||
roegadyn = exdData->getField< bool >( row, 4 );
|
||||
auRa = exdData->getField< bool >( row, 5 );
|
||||
male = exdData->getField< bool >( row, 6 );
|
||||
female = exdData->getField< bool >( row, 7 );
|
||||
male = exdData->getField< bool >( row, 8 );
|
||||
female = exdData->getField< bool >( row, 9 );
|
||||
}
|
||||
|
||||
Sapphire::Data::EquipSlotCategory::EquipSlotCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -2290,17 +2321,17 @@ Sapphire::Data::Fate::Fate( uint32_t row_id, Sapphire::Data::ExdDataGenerated* e
|
|||
classJobLevel = exdData->getField< uint8_t >( row, 3 );
|
||||
classJobLevelMax = exdData->getField< uint8_t >( row, 4 );
|
||||
eventItem = exdData->getField< uint32_t >( row, 5 );
|
||||
iconObjective = exdData->getField< uint32_t >( row, 10 );
|
||||
iconMap = exdData->getField< uint32_t >( row, 11 );
|
||||
music = exdData->getField< int32_t >( row, 13 );
|
||||
hasWorldMapIcon = exdData->getField< bool >( row, 19 );
|
||||
name = exdData->getField< std::string >( row, 27 );
|
||||
description = exdData->getField< std::string >( row, 28 );
|
||||
objective = exdData->getField< std::string >( row, 29 );
|
||||
iconObjective = exdData->getField< uint32_t >( row, 9 );
|
||||
iconMap = exdData->getField< uint32_t >( row, 10 );
|
||||
music = exdData->getField< int32_t >( row, 12 );
|
||||
hasWorldMapIcon = exdData->getField< bool >( row, 17 );
|
||||
name = exdData->getField< std::string >( row, 25 );
|
||||
description = exdData->getField< std::string >( row, 26 );
|
||||
objective = exdData->getField< std::string >( row, 27 );
|
||||
statusText.push_back( exdData->getField< std::string >( row, 28 ) );
|
||||
statusText.push_back( exdData->getField< std::string >( row, 29 ) );
|
||||
statusText.push_back( exdData->getField< std::string >( row, 30 ) );
|
||||
statusText.push_back( exdData->getField< std::string >( row, 31 ) );
|
||||
statusText.push_back( exdData->getField< std::string >( row, 32 ) );
|
||||
arrayIndex = exdData->getField< uint32_t >( row, 33 );
|
||||
arrayIndex = exdData->getField< uint32_t >( row, 31 );
|
||||
}
|
||||
|
||||
Sapphire::Data::FCActivity::FCActivity( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -2387,6 +2418,10 @@ Sapphire::Data::FishingRecordType::FishingRecordType( uint32_t row_id, Sapphire:
|
|||
{
|
||||
auto row = exdData->m_FishingRecordTypeDat.get_row( row_id );
|
||||
addon = exdData->getField< int32_t >( row, 0 );
|
||||
rankBRequirement = exdData->getField< uint16_t >( row, 1 );
|
||||
rankARequirement = exdData->getField< uint16_t >( row, 2 );
|
||||
rankAARequirement = exdData->getField< uint16_t >( row, 3 );
|
||||
rankAAARequirement = exdData->getField< uint16_t >( row, 4 );
|
||||
}
|
||||
|
||||
Sapphire::Data::FishingRecordTypeTransient::FishingRecordTypeTransient( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -2417,6 +2452,7 @@ Sapphire::Data::FishingSpot::FishingSpot( uint32_t row_id, Sapphire::Data::ExdDa
|
|||
item.push_back( exdData->getField< int32_t >( row, 18 ) );
|
||||
item.push_back( exdData->getField< int32_t >( row, 19 ) );
|
||||
placeName = exdData->getField< uint16_t >( row, 20 );
|
||||
order = exdData->getField< uint8_t >( row, 21 );
|
||||
}
|
||||
|
||||
Sapphire::Data::FishParameter::FishParameter( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -2428,10 +2464,10 @@ Sapphire::Data::FishParameter::FishParameter( uint32_t row_id, Sapphire::Data::E
|
|||
isHidden = exdData->getField< bool >( row, 3 );
|
||||
fishingRecordType = exdData->getField< uint8_t >( row, 5 );
|
||||
territoryType = exdData->getField< int32_t >( row, 6 );
|
||||
isInLog = exdData->getField< bool >( row, 7 );
|
||||
timeRestricted = exdData->getField< bool >( row, 8 );
|
||||
weatherRestricted = exdData->getField< bool >( row, 9 );
|
||||
gatheringSubCategory = exdData->getField< uint16_t >( row, 10 );
|
||||
gatheringSubCategory = exdData->getField< uint16_t >( row, 7 );
|
||||
isInLog = exdData->getField< bool >( row, 8 );
|
||||
timeRestricted = exdData->getField< bool >( row, 9 );
|
||||
weatherRestricted = exdData->getField< bool >( row, 10 );
|
||||
}
|
||||
|
||||
Sapphire::Data::Frontline03::Frontline03( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -2510,7 +2546,7 @@ Sapphire::Data::GatheringItem::GatheringItem( uint32_t row_id, Sapphire::Data::E
|
|||
auto row = exdData->m_GatheringItemDat.get_row( row_id );
|
||||
item = exdData->getField< int32_t >( row, 0 );
|
||||
gatheringItemLevel = exdData->getField< uint16_t >( row, 1 );
|
||||
isHidden = exdData->getField< bool >( row, 2 );
|
||||
isHidden = exdData->getField< bool >( row, 3 );
|
||||
}
|
||||
|
||||
Sapphire::Data::GatheringItemLevelConvertTable::GatheringItemLevelConvertTable( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -2951,12 +2987,8 @@ Sapphire::Data::GilShop::GilShop( uint32_t row_id, Sapphire::Data::ExdDataGenera
|
|||
auto row = exdData->m_GilShopDat.get_row( row_id );
|
||||
name = exdData->getField< std::string >( row, 0 );
|
||||
icon = exdData->getField< uint32_t >( row, 1 );
|
||||
questRequired.push_back( exdData->getField< uint32_t >( row, 2 ) );
|
||||
questRequired.push_back( exdData->getField< uint32_t >( row, 3 ) );
|
||||
questRequired.push_back( exdData->getField< uint32_t >( row, 4 ) );
|
||||
questRequired.push_back( exdData->getField< uint32_t >( row, 5 ) );
|
||||
acceptTalk = exdData->getField< int32_t >( row, 6 );
|
||||
failTalk = exdData->getField< int32_t >( row, 7 );
|
||||
acceptTalk = exdData->getField< int32_t >( row, 3 );
|
||||
failTalk = exdData->getField< int32_t >( row, 4 );
|
||||
}
|
||||
|
||||
Sapphire::Data::GilShopItem::GilShopItem( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -3036,6 +3068,20 @@ Sapphire::Data::GuildleveAssignmentCategory::GuildleveAssignmentCategory( uint32
|
|||
category.push_back( exdData->getField< int32_t >( row, 7 ) );
|
||||
}
|
||||
|
||||
Sapphire::Data::GuildOrder::GuildOrder( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
{
|
||||
auto row = exdData->m_GuildOrderDat.get_row( row_id );
|
||||
eNpcName = exdData->getField< uint32_t >( row, 0 );
|
||||
objective = exdData->getField< std::string >( row, 1 );
|
||||
description1 = exdData->getField< std::string >( row, 2 );
|
||||
description2 = exdData->getField< std::string >( row, 3 );
|
||||
description3 = exdData->getField< std::string >( row, 4 );
|
||||
completionBonusExp = exdData->getField< uint32_t >( row, 5 );
|
||||
rewardExp = exdData->getField< uint32_t >( row, 6 );
|
||||
completionBonusGil = exdData->getField< uint32_t >( row, 7 );
|
||||
rewardGil = exdData->getField< uint32_t >( row, 8 );
|
||||
}
|
||||
|
||||
Sapphire::Data::GuildOrderGuide::GuildOrderGuide( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
{
|
||||
auto row = exdData->m_GuildOrderGuideDat.get_row( row_id );
|
||||
|
@ -3236,66 +3282,66 @@ Sapphire::Data::HousingLandSet::HousingLandSet( uint32_t row_id, Sapphire::Data:
|
|||
minPrice.push_back( exdData->getField< uint32_t >( row, 117 ) );
|
||||
minPrice.push_back( exdData->getField< uint32_t >( row, 118 ) );
|
||||
minPrice.push_back( exdData->getField< uint32_t >( row, 119 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 300 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 301 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 302 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 303 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 304 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 305 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 306 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 307 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 308 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 309 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 310 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 311 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 312 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 313 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 314 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 315 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 316 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 317 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 318 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 319 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 320 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 321 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 322 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 323 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 324 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 325 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 326 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 327 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 328 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 329 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 330 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 331 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 332 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 333 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 334 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 335 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 336 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 337 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 338 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 339 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 340 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 341 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 342 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 343 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 344 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 345 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 346 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 347 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 348 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 349 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 350 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 351 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 352 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 353 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 354 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 355 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 356 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 357 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 358 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 359 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 240 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 241 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 242 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 243 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 244 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 245 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 246 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 247 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 248 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 249 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 250 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 251 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 252 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 253 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 254 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 255 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 256 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 257 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 258 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 259 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 260 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 261 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 262 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 263 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 264 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 265 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 266 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 267 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 268 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 269 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 270 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 271 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 272 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 273 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 274 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 275 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 276 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 277 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 278 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 279 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 280 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 281 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 282 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 283 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 284 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 285 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 286 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 287 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 288 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 289 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 290 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 291 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 292 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 293 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 294 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 295 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 296 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 297 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 298 ) );
|
||||
initialPrice.push_back( exdData->getField< uint32_t >( row, 299 ) );
|
||||
}
|
||||
|
||||
Sapphire::Data::HousingMapMarkerInfo::HousingMapMarkerInfo( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -3418,13 +3464,15 @@ Sapphire::Data::InstanceContent::InstanceContent( uint32_t row_id, Sapphire::Dat
|
|||
instanceContentTextDataObjectiveStart = exdData->getField< uint32_t >( row, 15 );
|
||||
instanceContentTextDataObjectiveEnd = exdData->getField< uint32_t >( row, 16 );
|
||||
sortKey = exdData->getField< uint16_t >( row, 17 );
|
||||
instanceClearExp = exdData->getField< uint32_t >( row, 18 );
|
||||
newPlayerBonusA = exdData->getField< uint16_t >( row, 20 );
|
||||
newPlayerBonusB = exdData->getField< uint16_t >( row, 21 );
|
||||
finalBossExp = exdData->getField< uint32_t >( row, 22 );
|
||||
finalBossCurrencyC = exdData->getField< uint16_t >( row, 21 );
|
||||
finalBossCurrencyA = exdData->getField< uint16_t >( row, 23 );
|
||||
finalBossCurrencyB = exdData->getField< uint16_t >( row, 24 );
|
||||
finalBossCurrencyC = exdData->getField< uint16_t >( row, 25 );
|
||||
instanceClearExp = exdData->getField< uint32_t >( row, 46 );
|
||||
newPlayerBonusB = exdData->getField< uint16_t >( row, 25 );
|
||||
instanceClearGil = exdData->getField< uint32_t >( row, 47 );
|
||||
instanceContentRewardItem = exdData->getField< uint32_t >( row, 48 );
|
||||
finalBossExp = exdData->getField< uint32_t >( row, 50 );
|
||||
instanceContentBuff = exdData->getField< int32_t >( row, 51 );
|
||||
reqInstance = exdData->getField< uint32_t >( row, 52 );
|
||||
partyCondition = exdData->getField< uint8_t >( row, 54 );
|
||||
|
@ -3676,7 +3724,7 @@ Sapphire::Data::JournalGenre::JournalGenre( uint32_t row_id, Sapphire::Data::Exd
|
|||
auto row = exdData->m_JournalGenreDat.get_row( row_id );
|
||||
icon = exdData->getField< int32_t >( row, 0 );
|
||||
journalCategory = exdData->getField< uint8_t >( row, 1 );
|
||||
name = exdData->getField< std::string >( row, 2 );
|
||||
name = exdData->getField< std::string >( row, 3 );
|
||||
}
|
||||
|
||||
Sapphire::Data::JournalSection::JournalSection( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -3900,7 +3948,7 @@ Sapphire::Data::MapMarker::MapMarker( uint32_t row_id, uint32_t subRow, Sapphire
|
|||
Sapphire::Data::MapMarkerRegion::MapMarkerRegion( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
{
|
||||
auto row = exdData->m_MapMarkerRegionDat.get_row( row_id );
|
||||
x = exdData->getField< int16_t >( row, 0 );
|
||||
x = exdData->getField< int16_t >( row, 1 );
|
||||
}
|
||||
|
||||
Sapphire::Data::MapSymbol::MapSymbol( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -4021,8 +4069,7 @@ Sapphire::Data::ModelSkeleton::ModelSkeleton( uint32_t row_id, Sapphire::Data::E
|
|||
Sapphire::Data::ModelState::ModelState( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
{
|
||||
auto row = exdData->m_ModelStateDat.get_row( row_id );
|
||||
start = exdData->getField< uint16_t >( row, 0 );
|
||||
end = exdData->getField< uint16_t >( row, 1 );
|
||||
start = exdData->getField< uint16_t >( row, 1 );
|
||||
}
|
||||
|
||||
Sapphire::Data::MonsterNote::MonsterNote( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -4085,30 +4132,18 @@ Sapphire::Data::MountAction::MountAction( uint32_t row_id, Sapphire::Data::ExdDa
|
|||
Sapphire::Data::MountCustomize::MountCustomize( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
{
|
||||
auto row = exdData->m_MountCustomizeDat.get_row( row_id );
|
||||
hyurMaleScale = exdData->getField< float >( row, 1 );
|
||||
hyurFemaleScale = exdData->getField< float >( row, 2 );
|
||||
elezenMaleScale = exdData->getField< float >( row, 3 );
|
||||
elezenFemaleScale = exdData->getField< float >( row, 4 );
|
||||
lalaMaleScale = exdData->getField< float >( row, 5 );
|
||||
lalaFemaleScale = exdData->getField< float >( row, 6 );
|
||||
miqoMaleScale = exdData->getField< float >( row, 7 );
|
||||
miqoFemaleScale = exdData->getField< float >( row, 8 );
|
||||
roeMaleScale = exdData->getField< float >( row, 9 );
|
||||
roeFemaleScale = exdData->getField< float >( row, 10 );
|
||||
auRaMaleScale = exdData->getField< float >( row, 11 );
|
||||
auRaFemaleScale = exdData->getField< float >( row, 12 );
|
||||
hyurMaleCameraHeight = exdData->getField< uint8_t >( row, 13 );
|
||||
hyurFemaleCameraHeight = exdData->getField< uint8_t >( row, 14 );
|
||||
elezenMaleCameraHeight = exdData->getField< uint8_t >( row, 15 );
|
||||
elezenFemaleCameraHeight = exdData->getField< uint8_t >( row, 16 );
|
||||
lalaMaleCameraHeight = exdData->getField< uint8_t >( row, 17 );
|
||||
lalaFemaleCameraHeight = exdData->getField< uint8_t >( row, 18 );
|
||||
miqoMaleCameraHeight = exdData->getField< uint8_t >( row, 19 );
|
||||
miqoFemaleCameraHeight = exdData->getField< uint8_t >( row, 20 );
|
||||
roeMaleCameraHeight = exdData->getField< uint8_t >( row, 21 );
|
||||
roeFemaleCameraHeight = exdData->getField< uint8_t >( row, 22 );
|
||||
auRaMaleCameraHeight = exdData->getField< uint8_t >( row, 23 );
|
||||
auRaFemaleCameraHeight = exdData->getField< uint8_t >( row, 24 );
|
||||
hyurMaleCameraHeight = exdData->getField< uint8_t >( row, 17 );
|
||||
hyurFemaleCameraHeight = exdData->getField< uint8_t >( row, 18 );
|
||||
elezenMaleCameraHeight = exdData->getField< uint8_t >( row, 21 );
|
||||
elezenFemaleCameraHeight = exdData->getField< uint8_t >( row, 22 );
|
||||
lalaMaleCameraHeight = exdData->getField< uint8_t >( row, 23 );
|
||||
lalaFemaleCameraHeight = exdData->getField< uint8_t >( row, 24 );
|
||||
miqoMaleCameraHeight = exdData->getField< uint8_t >( row, 25 );
|
||||
miqoFemaleCameraHeight = exdData->getField< uint8_t >( row, 26 );
|
||||
roeMaleCameraHeight = exdData->getField< uint8_t >( row, 27 );
|
||||
roeFemaleCameraHeight = exdData->getField< uint8_t >( row, 28 );
|
||||
auRaMaleCameraHeight = exdData->getField< uint8_t >( row, 29 );
|
||||
auRaFemaleCameraHeight = exdData->getField< uint8_t >( row, 30 );
|
||||
}
|
||||
|
||||
Sapphire::Data::MountFlyingCondition::MountFlyingCondition( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -4431,40 +4466,41 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated*
|
|||
classJobCategory0 = exdData->getField< uint8_t >( row, 3 );
|
||||
classJobLevel0 = exdData->getField< uint16_t >( row, 4 );
|
||||
questLevelOffset = exdData->getField< uint8_t >( row, 5 );
|
||||
levelMax = exdData->getField< uint16_t >( row, 6 );
|
||||
classJobCategory1 = exdData->getField< uint8_t >( row, 7 );
|
||||
classJobLevel1 = exdData->getField< uint16_t >( row, 8 );
|
||||
previousQuestJoin = exdData->getField< uint8_t >( row, 9 );
|
||||
previousQuest0 = exdData->getField< uint32_t >( row, 10 );
|
||||
previousQuest1 = exdData->getField< uint32_t >( row, 12 );
|
||||
previousQuest2 = exdData->getField< uint32_t >( row, 13 );
|
||||
questLockJoin = exdData->getField< uint8_t >( row, 14 );
|
||||
classJobCategory1 = exdData->getField< uint8_t >( row, 6 );
|
||||
classJobLevel1 = exdData->getField< uint16_t >( row, 7 );
|
||||
previousQuestJoin = exdData->getField< uint8_t >( row, 8 );
|
||||
previousQuest0 = exdData->getField< uint32_t >( row, 9 );
|
||||
previousQuest1 = exdData->getField< uint32_t >( row, 11 );
|
||||
previousQuest2 = exdData->getField< uint32_t >( row, 12 );
|
||||
questLockJoin = exdData->getField< uint8_t >( row, 13 );
|
||||
questLock.push_back( exdData->getField< uint32_t >( row, 14 ) );
|
||||
questLock.push_back( exdData->getField< uint32_t >( row, 15 ) );
|
||||
questLock.push_back( exdData->getField< uint32_t >( row, 16 ) );
|
||||
classJobUnlock = exdData->getField< uint8_t >( row, 20 );
|
||||
grandCompany = exdData->getField< uint8_t >( row, 21 );
|
||||
grandCompanyRank = exdData->getField< uint8_t >( row, 22 );
|
||||
instanceContentJoin = exdData->getField< uint8_t >( row, 23 );
|
||||
classJobUnlock = exdData->getField< uint8_t >( row, 19 );
|
||||
grandCompany = exdData->getField< uint8_t >( row, 20 );
|
||||
grandCompanyRank = exdData->getField< uint8_t >( row, 21 );
|
||||
instanceContentJoin = exdData->getField< uint8_t >( row, 22 );
|
||||
instanceContent.push_back( exdData->getField< uint32_t >( row, 23 ) );
|
||||
instanceContent.push_back( exdData->getField< uint32_t >( row, 24 ) );
|
||||
instanceContent.push_back( exdData->getField< uint32_t >( row, 25 ) );
|
||||
instanceContent.push_back( exdData->getField< uint32_t >( row, 26 ) );
|
||||
festival = exdData->getField< uint8_t >( row, 27 );
|
||||
bellStart = exdData->getField< uint16_t >( row, 30 );
|
||||
bellEnd = exdData->getField< uint16_t >( row, 31 );
|
||||
beastTribe = exdData->getField< uint8_t >( row, 32 );
|
||||
beastReputationRank = exdData->getField< uint8_t >( row, 33 );
|
||||
mountRequired = exdData->getField< int32_t >( row, 37 );
|
||||
isHouseRequired = exdData->getField< bool >( row, 38 );
|
||||
deliveryQuest = exdData->getField< uint8_t >( row, 39 );
|
||||
issuerStart = exdData->getField< uint32_t >( row, 40 );
|
||||
behavior = exdData->getField< uint16_t >( row, 41 );
|
||||
targetEnd = exdData->getField< uint32_t >( row, 42 );
|
||||
isRepeatable = exdData->getField< bool >( row, 43 );
|
||||
repeatIntervalType = exdData->getField< uint8_t >( row, 44 );
|
||||
questRepeatFlag = exdData->getField< uint8_t >( row, 45 );
|
||||
unlocksSystemContent = exdData->getField< bool >( row, 46 );
|
||||
type = exdData->getField< uint8_t >( row, 48 );
|
||||
questClassJobSupply = exdData->getField< uint16_t >( row, 49 );
|
||||
festival = exdData->getField< uint8_t >( row, 26 );
|
||||
bellStart = exdData->getField< uint16_t >( row, 29 );
|
||||
bellEnd = exdData->getField< uint16_t >( row, 30 );
|
||||
beastTribe = exdData->getField< uint8_t >( row, 31 );
|
||||
beastReputationRank = exdData->getField< uint8_t >( row, 32 );
|
||||
levelMax = exdData->getField< uint16_t >( row, 33 );
|
||||
mountRequired = exdData->getField< int32_t >( row, 36 );
|
||||
isHouseRequired = exdData->getField< bool >( row, 37 );
|
||||
deliveryQuest = exdData->getField< uint8_t >( row, 38 );
|
||||
issuerStart = exdData->getField< uint32_t >( row, 39 );
|
||||
behavior = exdData->getField< uint16_t >( row, 40 );
|
||||
targetEnd = exdData->getField< uint32_t >( row, 41 );
|
||||
isRepeatable = exdData->getField< bool >( row, 42 );
|
||||
repeatIntervalType = exdData->getField< uint8_t >( row, 43 );
|
||||
questRepeatFlag = exdData->getField< uint8_t >( row, 44 );
|
||||
unlocksSystemContent = exdData->getField< bool >( row, 45 );
|
||||
type = exdData->getField< uint8_t >( row, 47 );
|
||||
questClassJobSupply = exdData->getField< uint16_t >( row, 48 );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 49 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 50 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 51 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 52 ) );
|
||||
|
@ -4514,7 +4550,7 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated*
|
|||
scriptInstruction.push_back( exdData->getField< std::string >( row, 96 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 97 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 98 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 99 ) );
|
||||
scriptArg.push_back( exdData->getField< uint32_t >( row, 99 ) );
|
||||
scriptArg.push_back( exdData->getField< uint32_t >( row, 100 ) );
|
||||
scriptArg.push_back( exdData->getField< uint32_t >( row, 101 ) );
|
||||
scriptArg.push_back( exdData->getField< uint32_t >( row, 102 ) );
|
||||
|
@ -4564,7 +4600,7 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated*
|
|||
scriptArg.push_back( exdData->getField< uint32_t >( row, 146 ) );
|
||||
scriptArg.push_back( exdData->getField< uint32_t >( row, 147 ) );
|
||||
scriptArg.push_back( exdData->getField< uint32_t >( row, 148 ) );
|
||||
scriptArg.push_back( exdData->getField< uint32_t >( row, 149 ) );
|
||||
actorSpawnSeq.push_back( exdData->getField< uint8_t >( row, 149 ) );
|
||||
actorSpawnSeq.push_back( exdData->getField< uint8_t >( row, 150 ) );
|
||||
actorSpawnSeq.push_back( exdData->getField< uint8_t >( row, 151 ) );
|
||||
actorSpawnSeq.push_back( exdData->getField< uint8_t >( row, 152 ) );
|
||||
|
@ -4628,7 +4664,7 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated*
|
|||
actorSpawnSeq.push_back( exdData->getField< uint8_t >( row, 210 ) );
|
||||
actorSpawnSeq.push_back( exdData->getField< uint8_t >( row, 211 ) );
|
||||
actorSpawnSeq.push_back( exdData->getField< uint8_t >( row, 212 ) );
|
||||
actorSpawnSeq.push_back( exdData->getField< uint8_t >( row, 213 ) );
|
||||
actorDespawnSeq.push_back( exdData->getField< uint8_t >( row, 213 ) );
|
||||
actorDespawnSeq.push_back( exdData->getField< uint8_t >( row, 214 ) );
|
||||
actorDespawnSeq.push_back( exdData->getField< uint8_t >( row, 215 ) );
|
||||
actorDespawnSeq.push_back( exdData->getField< uint8_t >( row, 216 ) );
|
||||
|
@ -4692,7 +4728,7 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated*
|
|||
actorDespawnSeq.push_back( exdData->getField< uint8_t >( row, 274 ) );
|
||||
actorDespawnSeq.push_back( exdData->getField< uint8_t >( row, 275 ) );
|
||||
actorDespawnSeq.push_back( exdData->getField< uint8_t >( row, 276 ) );
|
||||
actorDespawnSeq.push_back( exdData->getField< uint8_t >( row, 277 ) );
|
||||
actorSpawn.push_back( exdData->getField< uint32_t >( row, 277 ) );
|
||||
actorSpawn.push_back( exdData->getField< uint32_t >( row, 278 ) );
|
||||
actorSpawn.push_back( exdData->getField< uint32_t >( row, 279 ) );
|
||||
actorSpawn.push_back( exdData->getField< uint32_t >( row, 280 ) );
|
||||
|
@ -4756,7 +4792,7 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated*
|
|||
actorSpawn.push_back( exdData->getField< uint32_t >( row, 338 ) );
|
||||
actorSpawn.push_back( exdData->getField< uint32_t >( row, 339 ) );
|
||||
actorSpawn.push_back( exdData->getField< uint32_t >( row, 340 ) );
|
||||
actorSpawn.push_back( exdData->getField< uint32_t >( row, 341 ) );
|
||||
questUInt8A.push_back( exdData->getField< uint8_t >( row, 341 ) );
|
||||
questUInt8A.push_back( exdData->getField< uint8_t >( row, 342 ) );
|
||||
questUInt8A.push_back( exdData->getField< uint8_t >( row, 343 ) );
|
||||
questUInt8A.push_back( exdData->getField< uint8_t >( row, 344 ) );
|
||||
|
@ -4788,7 +4824,7 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated*
|
|||
questUInt8A.push_back( exdData->getField< uint8_t >( row, 370 ) );
|
||||
questUInt8A.push_back( exdData->getField< uint8_t >( row, 371 ) );
|
||||
questUInt8A.push_back( exdData->getField< uint8_t >( row, 372 ) );
|
||||
questUInt8A.push_back( exdData->getField< uint8_t >( row, 373 ) );
|
||||
questUInt8B.push_back( exdData->getField< uint8_t >( row, 373 ) );
|
||||
questUInt8B.push_back( exdData->getField< uint8_t >( row, 374 ) );
|
||||
questUInt8B.push_back( exdData->getField< uint8_t >( row, 375 ) );
|
||||
questUInt8B.push_back( exdData->getField< uint8_t >( row, 376 ) );
|
||||
|
@ -4820,7 +4856,7 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated*
|
|||
questUInt8B.push_back( exdData->getField< uint8_t >( row, 402 ) );
|
||||
questUInt8B.push_back( exdData->getField< uint8_t >( row, 403 ) );
|
||||
questUInt8B.push_back( exdData->getField< uint8_t >( row, 404 ) );
|
||||
questUInt8B.push_back( exdData->getField< uint8_t >( row, 405 ) );
|
||||
toDoCompleteSeq.push_back( exdData->getField< uint8_t >( row, 1173 ) );
|
||||
toDoCompleteSeq.push_back( exdData->getField< uint8_t >( row, 1174 ) );
|
||||
toDoCompleteSeq.push_back( exdData->getField< uint8_t >( row, 1175 ) );
|
||||
toDoCompleteSeq.push_back( exdData->getField< uint8_t >( row, 1176 ) );
|
||||
|
@ -4844,7 +4880,7 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated*
|
|||
toDoCompleteSeq.push_back( exdData->getField< uint8_t >( row, 1194 ) );
|
||||
toDoCompleteSeq.push_back( exdData->getField< uint8_t >( row, 1195 ) );
|
||||
toDoCompleteSeq.push_back( exdData->getField< uint8_t >( row, 1196 ) );
|
||||
toDoCompleteSeq.push_back( exdData->getField< uint8_t >( row, 1197 ) );
|
||||
toDoQty.push_back( exdData->getField< uint8_t >( row, 1197 ) );
|
||||
toDoQty.push_back( exdData->getField< uint8_t >( row, 1198 ) );
|
||||
toDoQty.push_back( exdData->getField< uint8_t >( row, 1199 ) );
|
||||
toDoQty.push_back( exdData->getField< uint8_t >( row, 1200 ) );
|
||||
|
@ -4868,7 +4904,7 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated*
|
|||
toDoQty.push_back( exdData->getField< uint8_t >( row, 1218 ) );
|
||||
toDoQty.push_back( exdData->getField< uint8_t >( row, 1219 ) );
|
||||
toDoQty.push_back( exdData->getField< uint8_t >( row, 1220 ) );
|
||||
toDoQty.push_back( exdData->getField< uint8_t >( row, 1221 ) );
|
||||
toDoMainLocation.push_back( exdData->getField< uint32_t >( row, 1221 ) );
|
||||
toDoMainLocation.push_back( exdData->getField< uint32_t >( row, 1222 ) );
|
||||
toDoMainLocation.push_back( exdData->getField< uint32_t >( row, 1223 ) );
|
||||
toDoMainLocation.push_back( exdData->getField< uint32_t >( row, 1224 ) );
|
||||
|
@ -4892,7 +4928,6 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated*
|
|||
toDoMainLocation.push_back( exdData->getField< uint32_t >( row, 1242 ) );
|
||||
toDoMainLocation.push_back( exdData->getField< uint32_t >( row, 1243 ) );
|
||||
toDoMainLocation.push_back( exdData->getField< uint32_t >( row, 1244 ) );
|
||||
toDoMainLocation.push_back( exdData->getField< uint32_t >( row, 1245 ) );
|
||||
classJobRequired = exdData->getField< uint8_t >( row, 1438 );
|
||||
expFactor = exdData->getField< uint16_t >( row, 1440 );
|
||||
gilReward = exdData->getField< uint32_t >( row, 1441 );
|
||||
|
@ -5115,56 +5150,56 @@ Sapphire::Data::QuestBattle::QuestBattle( uint32_t row_id, Sapphire::Data::ExdDa
|
|||
scriptInstruction.push_back( exdData->getField< std::string >( row, 151 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 152 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 153 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 154 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 155 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 156 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 157 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 158 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 159 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 160 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 161 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 162 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 163 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 164 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 165 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 166 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 167 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 168 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 169 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 170 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 171 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 172 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 173 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 174 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 175 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 176 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 177 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 178 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 179 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 180 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 181 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 182 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 183 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 184 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 185 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 186 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 187 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 188 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 189 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 190 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 191 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 192 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 193 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 194 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 195 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 196 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 197 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 198 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 199 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 200 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 201 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 202 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 203 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 154 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 155 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 156 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 157 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 158 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 159 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 160 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 161 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 162 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 163 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 164 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 165 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 166 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 167 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 168 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 169 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 170 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 171 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 172 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 173 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 174 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 175 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 176 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 177 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 178 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 179 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 180 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 181 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 182 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 183 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 184 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 185 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 186 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 187 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 188 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 189 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 190 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 191 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 192 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 193 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 194 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 195 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 196 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 197 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 198 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 199 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 200 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 201 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 202 ) );
|
||||
scriptInstruction.push_back( exdData->getField< std::string >( row, 203 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 204 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 205 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 206 ) );
|
||||
|
@ -5265,6 +5300,106 @@ Sapphire::Data::QuestBattle::QuestBattle( uint32_t row_id, Sapphire::Data::ExdDa
|
|||
scriptValue.push_back( exdData->getField< uint32_t >( row, 301 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 302 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 303 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 304 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 305 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 306 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 307 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 308 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 309 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 310 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 311 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 312 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 313 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 314 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 315 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 316 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 317 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 318 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 319 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 320 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 321 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 322 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 323 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 324 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 325 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 326 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 327 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 328 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 329 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 330 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 331 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 332 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 333 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 334 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 335 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 336 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 337 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 338 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 339 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 340 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 341 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 342 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 343 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 344 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 345 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 346 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 347 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 348 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 349 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 350 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 351 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 352 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 353 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 354 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 355 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 356 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 357 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 358 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 359 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 360 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 361 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 362 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 363 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 364 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 365 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 366 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 367 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 368 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 369 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 370 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 371 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 372 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 373 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 374 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 375 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 376 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 377 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 378 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 379 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 380 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 381 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 382 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 383 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 384 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 385 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 386 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 387 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 388 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 389 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 390 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 391 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 392 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 393 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 394 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 395 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 396 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 397 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 398 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 399 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 400 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 401 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 402 ) );
|
||||
scriptValue.push_back( exdData->getField< uint32_t >( row, 403 ) );
|
||||
}
|
||||
|
||||
Sapphire::Data::QuestClassJobReward::QuestClassJobReward( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -5400,8 +5535,7 @@ Sapphire::Data::Recipe::Recipe( uint32_t row_id, Sapphire::Data::ExdDataGenerate
|
|||
recipeLevelTable = exdData->getField< uint16_t >( row, 2 );
|
||||
itemResult = exdData->getField< int32_t >( row, 3 );
|
||||
amountResult = exdData->getField< uint8_t >( row, 4 );
|
||||
recipeElement = exdData->getField< uint8_t >( row, 25 );
|
||||
isSecondary = exdData->getField< bool >( row, 27 );
|
||||
isSecondary = exdData->getField< bool >( row, 26 );
|
||||
difficultyFactor = exdData->getField< uint16_t >( row, 28 );
|
||||
qualityFactor = exdData->getField< uint16_t >( row, 29 );
|
||||
durabilityFactor = exdData->getField< uint16_t >( row, 30 );
|
||||
|
@ -5419,21 +5553,15 @@ Sapphire::Data::Recipe::Recipe( uint32_t row_id, Sapphire::Data::ExdDataGenerate
|
|||
patchNumber = exdData->getField< uint16_t >( row, 44 );
|
||||
}
|
||||
|
||||
Sapphire::Data::RecipeElement::RecipeElement( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
{
|
||||
auto row = exdData->m_RecipeElementDat.get_row( row_id );
|
||||
name = exdData->getField< std::string >( row, 0 );
|
||||
}
|
||||
|
||||
Sapphire::Data::RecipeLevelTable::RecipeLevelTable( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
{
|
||||
auto row = exdData->m_RecipeLevelTableDat.get_row( row_id );
|
||||
classJobLevel = exdData->getField< uint8_t >( row, 0 );
|
||||
stars = exdData->getField< uint8_t >( row, 1 );
|
||||
suggestedCraftsmanship = exdData->getField< uint16_t >( row, 2 );
|
||||
difficulty = exdData->getField< uint16_t >( row, 3 );
|
||||
quality = exdData->getField< int16_t >( row, 4 );
|
||||
durability = exdData->getField< uint16_t >( row, 5 );
|
||||
difficulty = exdData->getField< uint16_t >( row, 4 );
|
||||
quality = exdData->getField< uint32_t >( row, 5 );
|
||||
durability = exdData->getField< uint16_t >( row, 6 );
|
||||
}
|
||||
|
||||
Sapphire::Data::RecipeNotebookList::RecipeNotebookList( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -6131,9 +6259,8 @@ Sapphire::Data::SpecialShop::SpecialShop( uint32_t row_id, Sapphire::Data::ExdDa
|
|||
patchNumber.push_back( exdData->getField< uint16_t >( row, 1859 ) );
|
||||
patchNumber.push_back( exdData->getField< uint16_t >( row, 1860 ) );
|
||||
questUnlock = exdData->getField< uint32_t >( row, 1862 );
|
||||
questShop = exdData->getField< int32_t >( row, 1863 );
|
||||
notCompleteText = exdData->getField< int32_t >( row, 1864 );
|
||||
completeText = exdData->getField< int32_t >( row, 1865 );
|
||||
notCompleteText = exdData->getField< int32_t >( row, 1863 );
|
||||
completeText = exdData->getField< int32_t >( row, 1864 );
|
||||
}
|
||||
|
||||
Sapphire::Data::SpecialShopItemCategory::SpecialShopItemCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -6164,18 +6291,18 @@ Sapphire::Data::Status::Status( uint32_t row_id, Sapphire::Data::ExdDataGenerate
|
|||
description = exdData->getField< std::string >( row, 1 );
|
||||
icon = exdData->getField< uint16_t >( row, 2 );
|
||||
maxStacks = exdData->getField< uint8_t >( row, 3 );
|
||||
category = exdData->getField< uint8_t >( row, 4 );
|
||||
hitEffect = exdData->getField< uint8_t >( row, 5 );
|
||||
vFX = exdData->getField< uint8_t >( row, 6 );
|
||||
lockMovement = exdData->getField< bool >( row, 7 );
|
||||
lockActions = exdData->getField< bool >( row, 9 );
|
||||
lockControl = exdData->getField< bool >( row, 10 );
|
||||
transfiguration = exdData->getField< bool >( row, 11 );
|
||||
canDispel = exdData->getField< bool >( row, 13 );
|
||||
inflictedByActor = exdData->getField< bool >( row, 14 );
|
||||
isPermanent = exdData->getField< bool >( row, 15 );
|
||||
isFcBuff = exdData->getField< bool >( row, 21 );
|
||||
invisibility = exdData->getField< bool >( row, 22 );
|
||||
category = exdData->getField< uint8_t >( row, 5 );
|
||||
hitEffect = exdData->getField< uint8_t >( row, 6 );
|
||||
vFX = exdData->getField< uint8_t >( row, 7 );
|
||||
lockMovement = exdData->getField< bool >( row, 8 );
|
||||
lockActions = exdData->getField< bool >( row, 10 );
|
||||
lockControl = exdData->getField< bool >( row, 11 );
|
||||
transfiguration = exdData->getField< bool >( row, 12 );
|
||||
canDispel = exdData->getField< bool >( row, 14 );
|
||||
inflictedByActor = exdData->getField< bool >( row, 15 );
|
||||
isPermanent = exdData->getField< bool >( row, 16 );
|
||||
isFcBuff = exdData->getField< bool >( row, 24 );
|
||||
invisibility = exdData->getField< bool >( row, 25 );
|
||||
}
|
||||
|
||||
Sapphire::Data::StatusHitEffect::StatusHitEffect( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -6202,11 +6329,11 @@ Sapphire::Data::SubmarineExploration::SubmarineExploration( uint32_t row_id, Sap
|
|||
auto row = exdData->m_SubmarineExplorationDat.get_row( row_id );
|
||||
destination = exdData->getField< std::string >( row, 0 );
|
||||
location = exdData->getField< std::string >( row, 1 );
|
||||
rankReq = exdData->getField< uint8_t >( row, 5 );
|
||||
ceruleumTankReq = exdData->getField< uint8_t >( row, 6 );
|
||||
durationmin = exdData->getField< uint16_t >( row, 7 );
|
||||
distanceForSurvey = exdData->getField< uint8_t >( row, 8 );
|
||||
expReward = exdData->getField< uint32_t >( row, 9 );
|
||||
rankReq = exdData->getField< uint8_t >( row, 8 );
|
||||
ceruleumTankReq = exdData->getField< uint8_t >( row, 9 );
|
||||
durationmin = exdData->getField< uint16_t >( row, 10 );
|
||||
distanceForSurvey = exdData->getField< uint8_t >( row, 11 );
|
||||
expReward = exdData->getField< uint32_t >( row, 12 );
|
||||
}
|
||||
|
||||
Sapphire::Data::SubmarinePart::SubmarinePart( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -6363,20 +6490,20 @@ Sapphire::Data::Transformation::Transformation( uint32_t row_id, Sapphire::Data:
|
|||
bNpcName = exdData->getField< uint16_t >( row, 2 );
|
||||
bNpcCustomize = exdData->getField< int32_t >( row, 3 );
|
||||
npcEquip = exdData->getField< int32_t >( row, 4 );
|
||||
action.push_back( exdData->getField< uint16_t >( row, 5 ) );
|
||||
action.push_back( exdData->getField< uint16_t >( row, 6 ) );
|
||||
action.push_back( exdData->getField< uint16_t >( row, 7 ) );
|
||||
action.push_back( exdData->getField< uint16_t >( row, 8 ) );
|
||||
action.push_back( exdData->getField< uint16_t >( row, 9 ) );
|
||||
action.push_back( exdData->getField< uint16_t >( row, 10 ) );
|
||||
speed = exdData->getField< float >( row, 13 );
|
||||
scale = exdData->getField< float >( row, 14 );
|
||||
isPvP = exdData->getField< bool >( row, 15 );
|
||||
isEvent = exdData->getField< bool >( row, 16 );
|
||||
playerCamera = exdData->getField< bool >( row, 17 );
|
||||
startVFX = exdData->getField< uint16_t >( row, 18 );
|
||||
endVFX = exdData->getField< uint16_t >( row, 19 );
|
||||
rPParameter = exdData->getField< uint8_t >( row, 23 );
|
||||
action.push_back( exdData->getField< uint16_t >( row, 11 ) );
|
||||
action.push_back( exdData->getField< uint16_t >( row, 12 ) );
|
||||
action.push_back( exdData->getField< uint16_t >( row, 13 ) );
|
||||
action.push_back( exdData->getField< uint16_t >( row, 14 ) );
|
||||
action.push_back( exdData->getField< uint16_t >( row, 15 ) );
|
||||
rPParameter = exdData->getField< uint8_t >( row, 18 );
|
||||
speed = exdData->getField< float >( row, 19 );
|
||||
scale = exdData->getField< float >( row, 20 );
|
||||
isPvP = exdData->getField< bool >( row, 21 );
|
||||
isEvent = exdData->getField< bool >( row, 22 );
|
||||
playerCamera = exdData->getField< bool >( row, 23 );
|
||||
startVFX = exdData->getField< uint16_t >( row, 24 );
|
||||
endVFX = exdData->getField< uint16_t >( row, 25 );
|
||||
}
|
||||
|
||||
Sapphire::Data::Treasure::Treasure( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData )
|
||||
|
@ -7003,6 +7130,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path )
|
|||
m_GuardianDeityDat = setupDatAccess( "GuardianDeity", xiv::exd::Language::en );
|
||||
m_GuildleveAssignmentDat = setupDatAccess( "GuildleveAssignment", xiv::exd::Language::none );
|
||||
m_GuildleveAssignmentCategoryDat = setupDatAccess( "GuildleveAssignmentCategory", xiv::exd::Language::none );
|
||||
m_GuildOrderDat = setupDatAccess( "GuildOrder", xiv::exd::Language::en );
|
||||
m_GuildOrderGuideDat = setupDatAccess( "GuildOrderGuide", xiv::exd::Language::none );
|
||||
m_GuildOrderOfficerDat = setupDatAccess( "GuildOrderOfficer", xiv::exd::Language::none );
|
||||
m_HairMakeTypeDat = setupDatAccess( "HairMakeType", xiv::exd::Language::none );
|
||||
|
@ -7130,7 +7258,6 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path )
|
|||
m_RacingChocoboParamDat = setupDatAccess( "RacingChocoboParam", xiv::exd::Language::en );
|
||||
m_RecastNavimeshDat = setupDatAccess( "RecastNavimesh", xiv::exd::Language::none );
|
||||
m_RecipeDat = setupDatAccess( "Recipe", xiv::exd::Language::none );
|
||||
m_RecipeElementDat = setupDatAccess( "RecipeElement", xiv::exd::Language::en );
|
||||
m_RecipeLevelTableDat = setupDatAccess( "RecipeLevelTable", xiv::exd::Language::none );
|
||||
m_RecipeNotebookListDat = setupDatAccess( "RecipeNotebookList", xiv::exd::Language::none );
|
||||
m_RecommendContentsDat = setupDatAccess( "RecommendContents", xiv::exd::Language::none );
|
||||
|
|
|
@ -278,6 +278,7 @@ struct GrandCompanyRank;
|
|||
struct GuardianDeity;
|
||||
struct GuildleveAssignment;
|
||||
struct GuildleveAssignmentCategory;
|
||||
struct GuildOrder;
|
||||
struct GuildOrderGuide;
|
||||
struct GuildOrderOfficer;
|
||||
struct HairMakeType;
|
||||
|
@ -405,7 +406,6 @@ struct RacingChocoboNameInfo;
|
|||
struct RacingChocoboParam;
|
||||
struct RecastNavimesh;
|
||||
struct Recipe;
|
||||
struct RecipeElement;
|
||||
struct RecipeLevelTable;
|
||||
struct RecipeNotebookList;
|
||||
struct RecommendContents;
|
||||
|
@ -511,7 +511,7 @@ struct Achievement
|
|||
int32_t key;
|
||||
std::vector< int32_t > data;
|
||||
uint16_t order;
|
||||
bool initialHide;
|
||||
uint8_t initialHide;
|
||||
|
||||
Achievement( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
|
||||
};
|
||||
|
@ -1111,12 +1111,10 @@ struct BeastReputationRank
|
|||
struct BeastTribe
|
||||
{
|
||||
uint8_t minLevel;
|
||||
uint8_t maxLevel;
|
||||
uint8_t beastRankBonus;
|
||||
uint32_t iconReputation;
|
||||
uint32_t icon;
|
||||
uint8_t maxRank;
|
||||
uint32_t alliedBeastTribeQuest;
|
||||
uint8_t expansion;
|
||||
uint32_t currencyItem;
|
||||
uint8_t displayOrder;
|
||||
|
@ -1734,6 +1732,7 @@ struct ContentFinderCondition
|
|||
uint8_t contentLinkType;
|
||||
uint16_t content;
|
||||
uint8_t contentMemberType;
|
||||
uint32_t unlockQuest;
|
||||
uint8_t classJobLevelRequired;
|
||||
uint8_t classJobLevelSync;
|
||||
uint16_t itemLevelRequired;
|
||||
|
@ -1743,8 +1742,11 @@ struct ContentFinderCondition
|
|||
bool dutyRecorderAllowed;
|
||||
std::string name;
|
||||
uint8_t contentType;
|
||||
uint8_t transientKey;
|
||||
uint32_t transient;
|
||||
uint16_t sortKey;
|
||||
uint32_t image;
|
||||
uint32_t icon;
|
||||
bool levelingRoulette;
|
||||
bool level5060Roulette;
|
||||
bool mSQRoulette;
|
||||
|
@ -1843,12 +1845,14 @@ struct ContentRouletteRoleBonus
|
|||
struct ContentsNote
|
||||
{
|
||||
uint8_t contentType;
|
||||
int32_t icon;
|
||||
uint8_t menuOrder;
|
||||
int32_t requiredAmount;
|
||||
int32_t expMultiplier;
|
||||
int32_t gilRward;
|
||||
uint16_t levelUnlock;
|
||||
uint16_t howTo;
|
||||
uint32_t reqUnlock;
|
||||
std::string name;
|
||||
std::string description;
|
||||
int32_t expCap;
|
||||
|
@ -2351,6 +2355,21 @@ struct ENpcDressUp
|
|||
struct ENpcDressUpDress
|
||||
{
|
||||
uint32_t eNpc;
|
||||
uint16_t behavior;
|
||||
uint64_t modelMainHand;
|
||||
uint8_t dyeMainHand;
|
||||
uint64_t modelOffHand;
|
||||
uint8_t dyeOffHand;
|
||||
uint32_t modelHead;
|
||||
uint8_t dyeHead;
|
||||
uint32_t modelBody;
|
||||
uint8_t dyeBody;
|
||||
uint32_t modelHands;
|
||||
uint8_t dyeHands;
|
||||
uint32_t modelLegs;
|
||||
uint8_t dyeLegs;
|
||||
uint32_t modelFeet;
|
||||
uint8_t dyeFeet;
|
||||
|
||||
ENpcDressUpDress( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData );
|
||||
};
|
||||
|
@ -2688,6 +2707,10 @@ struct FieldMarker
|
|||
struct FishingRecordType
|
||||
{
|
||||
int32_t addon;
|
||||
uint16_t rankBRequirement;
|
||||
uint16_t rankARequirement;
|
||||
uint16_t rankAARequirement;
|
||||
uint16_t rankAAARequirement;
|
||||
|
||||
FishingRecordType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
|
||||
};
|
||||
|
@ -2711,6 +2734,7 @@ struct FishingSpot
|
|||
uint16_t radius;
|
||||
std::vector< int32_t > item;
|
||||
uint16_t placeName;
|
||||
uint8_t order;
|
||||
|
||||
FishingSpot( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
|
||||
};
|
||||
|
@ -2723,10 +2747,10 @@ struct FishParameter
|
|||
bool isHidden;
|
||||
uint8_t fishingRecordType;
|
||||
int32_t territoryType;
|
||||
uint16_t gatheringSubCategory;
|
||||
bool isInLog;
|
||||
bool timeRestricted;
|
||||
bool weatherRestricted;
|
||||
uint16_t gatheringSubCategory;
|
||||
|
||||
FishParameter( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
|
||||
};
|
||||
|
@ -3133,7 +3157,6 @@ struct GilShop
|
|||
{
|
||||
std::string name;
|
||||
uint32_t icon;
|
||||
std::vector< uint32_t > questRequired;
|
||||
int32_t acceptTalk;
|
||||
int32_t failTalk;
|
||||
|
||||
|
@ -3215,6 +3238,21 @@ struct GuildleveAssignmentCategory
|
|||
GuildleveAssignmentCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
|
||||
};
|
||||
|
||||
struct GuildOrder
|
||||
{
|
||||
uint32_t eNpcName;
|
||||
std::string objective;
|
||||
std::string description1;
|
||||
std::string description2;
|
||||
std::string description3;
|
||||
uint32_t completionBonusExp;
|
||||
uint32_t rewardExp;
|
||||
uint32_t completionBonusGil;
|
||||
uint32_t rewardGil;
|
||||
|
||||
GuildOrder( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
|
||||
};
|
||||
|
||||
struct GuildOrderGuide
|
||||
{
|
||||
|
||||
|
@ -3422,13 +3460,15 @@ struct InstanceContent
|
|||
uint32_t instanceContentTextDataObjectiveStart;
|
||||
uint32_t instanceContentTextDataObjectiveEnd;
|
||||
uint16_t sortKey;
|
||||
uint32_t instanceClearExp;
|
||||
uint16_t newPlayerBonusA;
|
||||
uint16_t newPlayerBonusB;
|
||||
uint32_t finalBossExp;
|
||||
uint16_t finalBossCurrencyC;
|
||||
uint16_t finalBossCurrencyA;
|
||||
uint16_t finalBossCurrencyB;
|
||||
uint16_t finalBossCurrencyC;
|
||||
uint32_t instanceClearExp;
|
||||
uint16_t newPlayerBonusB;
|
||||
uint32_t instanceClearGil;
|
||||
uint32_t instanceContentRewardItem;
|
||||
uint32_t finalBossExp;
|
||||
int32_t instanceContentBuff;
|
||||
uint32_t reqInstance;
|
||||
uint8_t partyCondition;
|
||||
|
@ -4004,7 +4044,6 @@ struct ModelSkeleton
|
|||
struct ModelState
|
||||
{
|
||||
uint16_t start;
|
||||
uint16_t end;
|
||||
|
||||
ModelState( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
|
||||
};
|
||||
|
@ -4061,18 +4100,6 @@ struct MountAction
|
|||
|
||||
struct MountCustomize
|
||||
{
|
||||
float hyurMaleScale;
|
||||
float hyurFemaleScale;
|
||||
float elezenMaleScale;
|
||||
float elezenFemaleScale;
|
||||
float lalaMaleScale;
|
||||
float lalaFemaleScale;
|
||||
float miqoMaleScale;
|
||||
float miqoFemaleScale;
|
||||
float roeMaleScale;
|
||||
float roeFemaleScale;
|
||||
float auRaMaleScale;
|
||||
float auRaFemaleScale;
|
||||
uint8_t hyurMaleCameraHeight;
|
||||
uint8_t hyurFemaleCameraHeight;
|
||||
uint8_t elezenMaleCameraHeight;
|
||||
|
@ -4436,7 +4463,6 @@ struct Quest
|
|||
uint8_t classJobCategory0;
|
||||
uint16_t classJobLevel0;
|
||||
uint8_t questLevelOffset;
|
||||
uint16_t levelMax;
|
||||
uint8_t classJobCategory1;
|
||||
uint16_t classJobLevel1;
|
||||
uint8_t previousQuestJoin;
|
||||
|
@ -4455,6 +4481,7 @@ struct Quest
|
|||
uint16_t bellEnd;
|
||||
uint8_t beastTribe;
|
||||
uint8_t beastReputationRank;
|
||||
uint16_t levelMax;
|
||||
int32_t mountRequired;
|
||||
bool isHouseRequired;
|
||||
uint8_t deliveryQuest;
|
||||
|
@ -4652,7 +4679,6 @@ struct Recipe
|
|||
uint16_t recipeLevelTable;
|
||||
int32_t itemResult;
|
||||
uint8_t amountResult;
|
||||
uint8_t recipeElement;
|
||||
bool isSecondary;
|
||||
uint16_t difficultyFactor;
|
||||
uint16_t qualityFactor;
|
||||
|
@ -4673,20 +4699,13 @@ struct Recipe
|
|||
Recipe( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
|
||||
};
|
||||
|
||||
struct RecipeElement
|
||||
{
|
||||
std::string name;
|
||||
|
||||
RecipeElement( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
|
||||
};
|
||||
|
||||
struct RecipeLevelTable
|
||||
{
|
||||
uint8_t classJobLevel;
|
||||
uint8_t stars;
|
||||
uint16_t suggestedCraftsmanship;
|
||||
uint16_t difficulty;
|
||||
int16_t quality;
|
||||
uint32_t quality;
|
||||
uint16_t durability;
|
||||
|
||||
RecipeLevelTable( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
|
||||
|
@ -5006,7 +5025,6 @@ struct SpecialShop
|
|||
std::vector< int32_t > achievementUnlock;
|
||||
std::vector< uint16_t > patchNumber;
|
||||
uint32_t questUnlock;
|
||||
int32_t questShop;
|
||||
int32_t notCompleteText;
|
||||
int32_t completeText;
|
||||
|
||||
|
@ -5232,6 +5250,7 @@ struct Transformation
|
|||
int32_t bNpcCustomize;
|
||||
int32_t npcEquip;
|
||||
std::vector< uint16_t > action;
|
||||
uint8_t rPParameter;
|
||||
float speed;
|
||||
float scale;
|
||||
bool isPvP;
|
||||
|
@ -5239,7 +5258,6 @@ struct Transformation
|
|||
bool playerCamera;
|
||||
uint16_t startVFX;
|
||||
uint16_t endVFX;
|
||||
uint8_t rPParameter;
|
||||
|
||||
Transformation( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData );
|
||||
};
|
||||
|
@ -5866,6 +5884,7 @@ struct ZoneSharedGroup
|
|||
xiv::exd::Exd m_GuardianDeityDat;
|
||||
xiv::exd::Exd m_GuildleveAssignmentDat;
|
||||
xiv::exd::Exd m_GuildleveAssignmentCategoryDat;
|
||||
xiv::exd::Exd m_GuildOrderDat;
|
||||
xiv::exd::Exd m_GuildOrderGuideDat;
|
||||
xiv::exd::Exd m_GuildOrderOfficerDat;
|
||||
xiv::exd::Exd m_HairMakeTypeDat;
|
||||
|
@ -5993,7 +6012,6 @@ struct ZoneSharedGroup
|
|||
xiv::exd::Exd m_RacingChocoboParamDat;
|
||||
xiv::exd::Exd m_RecastNavimeshDat;
|
||||
xiv::exd::Exd m_RecipeDat;
|
||||
xiv::exd::Exd m_RecipeElementDat;
|
||||
xiv::exd::Exd m_RecipeLevelTableDat;
|
||||
xiv::exd::Exd m_RecipeNotebookListDat;
|
||||
xiv::exd::Exd m_RecommendContentsDat;
|
||||
|
@ -6346,6 +6364,7 @@ struct ZoneSharedGroup
|
|||
using GuardianDeityPtr = std::shared_ptr< GuardianDeity >;
|
||||
using GuildleveAssignmentPtr = std::shared_ptr< GuildleveAssignment >;
|
||||
using GuildleveAssignmentCategoryPtr = std::shared_ptr< GuildleveAssignmentCategory >;
|
||||
using GuildOrderPtr = std::shared_ptr< GuildOrder >;
|
||||
using GuildOrderGuidePtr = std::shared_ptr< GuildOrderGuide >;
|
||||
using GuildOrderOfficerPtr = std::shared_ptr< GuildOrderOfficer >;
|
||||
using HairMakeTypePtr = std::shared_ptr< HairMakeType >;
|
||||
|
@ -6473,7 +6492,6 @@ struct ZoneSharedGroup
|
|||
using RacingChocoboParamPtr = std::shared_ptr< RacingChocoboParam >;
|
||||
using RecastNavimeshPtr = std::shared_ptr< RecastNavimesh >;
|
||||
using RecipePtr = std::shared_ptr< Recipe >;
|
||||
using RecipeElementPtr = std::shared_ptr< RecipeElement >;
|
||||
using RecipeLevelTablePtr = std::shared_ptr< RecipeLevelTable >;
|
||||
using RecipeNotebookListPtr = std::shared_ptr< RecipeNotebookList >;
|
||||
using RecommendContentsPtr = std::shared_ptr< RecommendContents >;
|
||||
|
@ -6826,6 +6844,7 @@ struct ZoneSharedGroup
|
|||
std::set< uint32_t > m_GuardianDeityIdList;
|
||||
std::set< uint32_t > m_GuildleveAssignmentIdList;
|
||||
std::set< uint32_t > m_GuildleveAssignmentCategoryIdList;
|
||||
std::set< uint32_t > m_GuildOrderIdList;
|
||||
std::set< uint32_t > m_GuildOrderGuideIdList;
|
||||
std::set< uint32_t > m_GuildOrderOfficerIdList;
|
||||
std::set< uint32_t > m_HairMakeTypeIdList;
|
||||
|
@ -6953,7 +6972,6 @@ struct ZoneSharedGroup
|
|||
std::set< uint32_t > m_RacingChocoboParamIdList;
|
||||
std::set< uint32_t > m_RecastNavimeshIdList;
|
||||
std::set< uint32_t > m_RecipeIdList;
|
||||
std::set< uint32_t > m_RecipeElementIdList;
|
||||
std::set< uint32_t > m_RecipeLevelTableIdList;
|
||||
std::set< uint32_t > m_RecipeNotebookListIdList;
|
||||
std::set< uint32_t > m_RecommendContentsIdList;
|
||||
|
@ -8606,6 +8624,12 @@ const std::set< uint32_t >& getGuildleveAssignmentCategoryIdList()
|
|||
loadIdList( m_GuildleveAssignmentCategoryDat, m_GuildleveAssignmentCategoryIdList );
|
||||
return m_GuildleveAssignmentCategoryIdList;
|
||||
}
|
||||
const std::set< uint32_t >& getGuildOrderIdList()
|
||||
{
|
||||
if( m_GuildOrderIdList.size() == 0 )
|
||||
loadIdList( m_GuildOrderDat, m_GuildOrderIdList );
|
||||
return m_GuildOrderIdList;
|
||||
}
|
||||
const std::set< uint32_t >& getGuildOrderGuideIdList()
|
||||
{
|
||||
if( m_GuildOrderGuideIdList.size() == 0 )
|
||||
|
@ -9368,12 +9392,6 @@ const std::set< uint32_t >& getRecipeIdList()
|
|||
loadIdList( m_RecipeDat, m_RecipeIdList );
|
||||
return m_RecipeIdList;
|
||||
}
|
||||
const std::set< uint32_t >& getRecipeElementIdList()
|
||||
{
|
||||
if( m_RecipeElementIdList.size() == 0 )
|
||||
loadIdList( m_RecipeElementDat, m_RecipeElementIdList );
|
||||
return m_RecipeElementIdList;
|
||||
}
|
||||
const std::set< uint32_t >& getRecipeLevelTableIdList()
|
||||
{
|
||||
if( m_RecipeLevelTableIdList.size() == 0 )
|
||||
|
|
|
@ -60,8 +60,8 @@ namespace Sapphire::Network::Packets
|
|||
///////////////////////////////////////////////////
|
||||
|
||||
ChatBanned = 0x006B,
|
||||
Playtime = 0x006C, // updated 4.5
|
||||
Logout = 0x0077, // updated 4.5
|
||||
Playtime = 0x0100, // updated 5.0
|
||||
Logout = 0x0077, // updated 5.0
|
||||
CFNotify = 0x0078,
|
||||
CFMemberStatus = 0x0079,
|
||||
CFDutyInfo = 0x007A,
|
||||
|
@ -73,33 +73,36 @@ namespace Sapphire::Network::Packets
|
|||
SocialRequestResponse = 0x00BB, // updated 4.1
|
||||
CancelAllianceForming = 0x00C6, // updated 4.2
|
||||
|
||||
Chat = 0x00F7, // updated 4.5?
|
||||
LogMessage = 0x00D0,
|
||||
|
||||
Chat = 0x0104, // updated 5.0
|
||||
|
||||
WorldVisitList = 0x00FE, // added 4.5
|
||||
|
||||
SocialList = 0x0103, // updated 4.5
|
||||
SocialList = 0x010D, // updated 5.0
|
||||
|
||||
UpdateSearchInfo = 0x0106, // updated 4.5
|
||||
InitSearchInfo = 0x0107, // updated 4.4
|
||||
UpdateSearchInfo = 0x0110, // updated 5.0
|
||||
InitSearchInfo = 0x0111, // updated 5.0
|
||||
ExamineSearchComment = 0x0102, // updated 4.1
|
||||
|
||||
ServerNoticeShort = 0x010B, // added 4.5
|
||||
ServerNotice = 0x010C, // updated 4.5
|
||||
SetOnlineStatus = 0x010D, // updated 4.5
|
||||
ServerNoticeShort = 0x0115, // updated 5.0
|
||||
ServerNotice = 0x0116, // updated 5.0
|
||||
SetOnlineStatus = 0x0117, // updated 5.0
|
||||
|
||||
CountdownInitiate = 0x0114, // updated 4.5
|
||||
CountdownCancel = 0x0115, // updated 4.5
|
||||
CountdownInitiate = 0x011E, // updated 5.0
|
||||
CountdownCancel = 0x011F, // updated 5.0
|
||||
|
||||
BlackList = 0x0118, // updated 4.5
|
||||
PlayerAddedToBlacklist = 0x0120, // updated 5.0
|
||||
PlayerRemovedFromBlacklist = 0x0121, // updated 5.0
|
||||
BlackList = 0x0123, // updated 5.0
|
||||
|
||||
LogMessage = 0x00D0,
|
||||
LinkshellList = 0x012A, // updated 5.0
|
||||
|
||||
LinkshellList = 0x011F, // updated 4.5
|
||||
|
||||
MailDeleteRequest = 0x0120, // updated 4.5
|
||||
ReqMoogleMailList = 0x0121, // updated 4.5
|
||||
ReqMoogleMailLetter = 0x0122, // updated 4.5
|
||||
MailLetterNotification = 0x0123, // updated 4.5
|
||||
MailDeleteRequest = 0x012B, // updated 5.0
|
||||
// 12D - 137 - constant gap between 4.5x -> 5.0
|
||||
ReqMoogleMailList = 0x0138, // updated 5.0
|
||||
ReqMoogleMailLetter = 0x0139, // updated 5.0
|
||||
MailLetterNotification = 0x013A, // updated 5.0
|
||||
|
||||
MarketBoardItemListingCount = 0x0125, // updated 4.5
|
||||
MarketBoardItemListing = 0x0126, // updated 4.5
|
||||
|
@ -111,111 +114,115 @@ namespace Sapphire::Network::Packets
|
|||
FreeCompanyInfo = 0x013D, // updated 4.5
|
||||
ExamineFreeCompanyInfo = 0x013E, // updated 4.5
|
||||
|
||||
StatusEffectList = 0x0151, // updated 4.5
|
||||
Effect = 0x0154, // updated 4.5
|
||||
AoeEffect8 = 0x0157, // updated 4.5
|
||||
AoeEffect16 = 0x0158, // updated 4.5
|
||||
AoeEffect24 = 0x0159, // updated 4.5
|
||||
AoeEffect32 = 0x015A, // updated 4.5
|
||||
PersistantEffect = 0x015B, // updated 4.5
|
||||
StatusEffectList = 0x015B, // updated 5.0
|
||||
EurekaStatusEffectList = 0x015C, // updated 5.0
|
||||
Effect = 0x015E, // updated 5.0
|
||||
AoeEffect8 = 0x0161, // updated 5.0
|
||||
AoeEffect16 = 0x0162, // updated 5.0
|
||||
AoeEffect24 = 0x0163, // updated 5.0
|
||||
AoeEffect32 = 0x0164, // updated 5.0
|
||||
PersistantEffect = 0x0165, // updated 5.0
|
||||
|
||||
GCAffiliation = 0x0165, // updated 4.5
|
||||
GCAffiliation = 0x016F, // updated 5.0
|
||||
|
||||
PlayerSpawn = 0x0175, // updated 4.5
|
||||
NpcSpawn = 0x0176, // updated 4.5
|
||||
NpcSpawn2 = 0x0177, // ( Bigger statuseffectlist? ) updated 4.5
|
||||
ActorMove = 0x0178, // updated 4.5
|
||||
PlayerSpawn = 0x017F, // updated 5.0
|
||||
NpcSpawn = 0x0180, // updated 5.0
|
||||
NpcSpawn2 = 0x0181, // ( Bigger statuseffectlist? ) updated 5.0
|
||||
ActorMove = 0x0182, // updated 5.0
|
||||
|
||||
ActorSetPos = 0x017A, // updated 4.5
|
||||
ActorSetPos = 0x0184, // updated 5.0
|
||||
|
||||
ActorCast = 0x017C, // updated 4.5
|
||||
ActorCast = 0x0187, // updated 5.0
|
||||
|
||||
PartyList = 0x017E, // updated 4.5
|
||||
HateRank = 0x017F, // updated 4.5
|
||||
HateList = 0x0180, // updated 4.5
|
||||
ObjectSpawn = 0x0181, // updated 4.5
|
||||
ObjectDespawn = 0x0182, // updated 4.5
|
||||
UpdateClassInfo = 0x0183, // updated 4.5
|
||||
SilentSetClassJob = 0x0184, // updated 4.5 - seems to be the case, not sure if it's actually used for anything
|
||||
PlayerSetup = 0x0185, // updated 4.5
|
||||
PlayerStats = 0x0186, // updated 4.5
|
||||
ActorOwner = 0x0187, // updated 4.5
|
||||
PlayerStateFlags = 0x0188, // updated 4.5
|
||||
PlayerClassInfo = 0x0189, // updated 4.5
|
||||
PartyList = 0x0188, // updated 5.0
|
||||
HateRank = 0x0189, // updated 5.0
|
||||
HateList = 0x018A, // updated 5.0
|
||||
ObjectSpawn = 0x018B, // updated 5.0
|
||||
ObjectDespawn = 0x018C, // updated 5.0
|
||||
UpdateClassInfo = 0x018D, // updated 5.0
|
||||
SilentSetClassJob = 0x018E, // updated 5.0 - seems to be the case, not sure if it's actually used for anything
|
||||
PlayerSetup = 0x018F, // updated 5.0
|
||||
PlayerStats = 0x0190, // updated 5.0
|
||||
ActorOwner = 0x0192, // updated 5.0
|
||||
PlayerStateFlags = 0x0193, // updated 5.0
|
||||
PlayerClassInfo = 0x0194, // updated 5.0
|
||||
|
||||
ModelEquip = 0x018B, // updated 4.5
|
||||
Examine = 0x018C, // updated 4.5
|
||||
CharaNameReq = 0x018D, // updated 4.5
|
||||
ModelEquip = 0x0196, // updated 5.0
|
||||
Examine = 0x0197, // updated 5.0
|
||||
CharaNameReq = 0x0198, // updated 5.0
|
||||
|
||||
// nb: see #565 on github
|
||||
UpdateRetainerItemSalePrice = 0x019D, // updated 5.0
|
||||
|
||||
SetLevelSync = 0x1186, // not updated for 4.4, not sure what it is anymore
|
||||
|
||||
ItemInfo = 0x0196, // updated 4.5
|
||||
ContainerInfo = 0x0197, // updated 4.5
|
||||
InventoryTransactionFinish = 0x0198, // updated 4.5
|
||||
InventoryTransaction = 0x0199, // updated 4.5
|
||||
ItemInfo = 0x01A1, // updated 5.0
|
||||
ContainerInfo = 0x01A2, // updated 5.0
|
||||
InventoryTransactionFinish = 0x01A3, // updated 5.0
|
||||
InventoryTransaction = 0x01A4, // updated 5.0
|
||||
|
||||
CurrencyCrystalInfo = 0x019B, // updated 4.5
|
||||
CurrencyCrystalInfo = 0x01A5, // updated 5.0
|
||||
|
||||
InventoryActionAck = 0x019D, // updated 4.5
|
||||
UpdateInventorySlot = 0x019E, // updated 4.5
|
||||
InventoryActionAck = 0x01A7, // updated 5.0
|
||||
UpdateInventorySlot = 0x01A8, // updated 5.0
|
||||
|
||||
HuntingLogEntry = 0x01A9, // added 4.5
|
||||
HuntingLogEntry = 0x01B3, // updated 5.0
|
||||
|
||||
EventPlay = 0x01AB, // updated 4.5
|
||||
DirectorPlayScene = 0x01AF, // updated 4.5
|
||||
EventOpenGilShop = 0x01B2, // updated 4.5
|
||||
EventPlay = 0x01B5, // updated 5.0
|
||||
DirectorPlayScene = 0x01B9, // updated 5.0
|
||||
EventOpenGilShop = 0x01BC, // updated 5.0
|
||||
|
||||
EventStart = 0x01B4, // updated 4.5
|
||||
EventFinish = 0x01B5, // updated 4.5
|
||||
EventStart = 0x01BE, // updated 5.0
|
||||
EventFinish = 0x01BF, // updated 5.0
|
||||
|
||||
EventLinkshell = 0x1169,
|
||||
|
||||
QuestActiveList = 0x01C8, // updated 4.5
|
||||
QuestUpdate = 0x01C9, // updated 4.5
|
||||
QuestCompleteList = 0x01CA, // updated 4.5
|
||||
QuestActiveList = 0x01D2, // updated 5.0
|
||||
QuestUpdate = 0x01D3, // updated 5.0
|
||||
QuestCompleteList = 0x01D4, // updated 5.0
|
||||
|
||||
QuestFinish = 0x01CB, // updated 4.5
|
||||
MSQTrackerComplete = 0x01CC, // updated 4.5
|
||||
QuestFinish = 0x01D5, // updated 5.0
|
||||
MSQTrackerComplete = 0x01D6, // updated 5.0
|
||||
MSQTrackerProgress = 0xF1CD, // updated 4.5 ? this actually looks like the two opcodes have been combined, see #474
|
||||
|
||||
QuestMessage = 0x01D3, // updated 4.5
|
||||
QuestMessage = 0x01DE, // updated 5.0
|
||||
|
||||
QuestTracker = 0x01D8, // updated 4.5
|
||||
QuestTracker = 0x01E3, // updated 5.0
|
||||
|
||||
Mount = 0x01E8, // updated 4.5
|
||||
Mount = 0x01F3, // updated 5.0
|
||||
|
||||
DirectorVars = 0x01EA, // updated 4.5
|
||||
DirectorPopUp = 0x01F5, // display dialogue pop-ups in duties and FATEs, for example, Teraflare's countdown
|
||||
DirectorVars = 0x01F5, // updated 5.0
|
||||
DirectorPopUp = 0x0200, // updated 5.0 - display dialogue pop-ups in duties and FATEs, for example, Teraflare's countdown
|
||||
|
||||
CFAvailableContents = 0xF1FD, // updated 4.2
|
||||
|
||||
WeatherChange = 0x0205, // updated 4.5
|
||||
PlayerTitleList = 0x0206, // updated 4.5?
|
||||
Discovery = 0x0207, // updated 4.5?
|
||||
WeatherChange = 0x0210, // updated 5.0
|
||||
PlayerTitleList = 0x0211, // updated 5.0
|
||||
Discovery = 0x0212, // updated 5.0
|
||||
|
||||
EorzeaTimeOffset = 0x0209, // updated 4.5
|
||||
EorzeaTimeOffset = 0x0214, // updated 5.0
|
||||
|
||||
EquipDisplayFlags = 0x0215, // updated 4.5
|
||||
EquipDisplayFlags = 0x0220, // updated 5.0
|
||||
|
||||
/// Housing //////////////////////////////////////
|
||||
|
||||
LandSetInitialize = 0x0229, // updated 4.5
|
||||
LandUpdate = 0x022A, // updated 4.5
|
||||
YardObjectSpawn = 0x022B, // updated 4.5
|
||||
HousingIndoorInitialize = 0x022C, // updated 4.5
|
||||
LandPriceUpdate = 0x022D, // updated 4.5
|
||||
LandInfoSign = 0x022E, // updated 4.5
|
||||
LandRename = 0x022F, // updated 4.5
|
||||
HousingEstateGreeting = 0x0230, // updated 4.5
|
||||
HousingUpdateLandFlagsSlot = 0x0231, // updated 4.5
|
||||
HousingLandFlags = 0x0232, // updated 4.5
|
||||
HousingShowEstateGuestAccess = 0x0233, // updated 4.5
|
||||
LandSetInitialize = 0x0234, // updated 5.0
|
||||
LandUpdate = 0x0235, // updated 5.0
|
||||
YardObjectSpawn = 0x0236, // updated 5.0
|
||||
HousingIndoorInitialize = 0x0237, // updated 5.0
|
||||
LandPriceUpdate = 0x0238, // updated 5.0
|
||||
LandInfoSign = 0x0239, // updated 5.0
|
||||
LandRename = 0x023A, // updated 5.0
|
||||
HousingEstateGreeting = 0x023B, // updated 5.0
|
||||
HousingUpdateLandFlagsSlot = 0x023C, // updated 5.0
|
||||
HousingLandFlags = 0x023D, // updated 5.0
|
||||
HousingShowEstateGuestAccess = 0x023E, // updated 5.0
|
||||
|
||||
HousingObjectInitialize = 0x0235, // updated 4.45
|
||||
HousingInternalObjectSpawn = 0x236, // updated 4.5
|
||||
HousingObjectInitialize = 0x0240, // updated 5.0
|
||||
HousingInternalObjectSpawn = 0x241, // updated 5.0
|
||||
|
||||
HousingWardInfo = 0x0238, // updated 4.5
|
||||
HousingObjectMove = 0x0239, // updated 4.5
|
||||
HousingWardInfo = 0x0243, // updated 5.0
|
||||
HousingObjectMove = 0x0244, // updated 5.0
|
||||
|
||||
SharedEstateSettingsResponse = 0x0245, // updated 4.5
|
||||
|
||||
|
@ -228,16 +235,17 @@ namespace Sapphire::Network::Packets
|
|||
DuelChallenge = 0x0277, // 4.2; this is responsible for opening the ui
|
||||
PerformNote = 0x0286, // updated 4.3
|
||||
|
||||
PrepareZoning = 0x0299, // updated 4.5
|
||||
PrepareZoning = 0x02A4, // updated 5.0
|
||||
ActorGauge = 0x0292, // updated 4.3
|
||||
|
||||
// Unknown IPC types that still need to be sent
|
||||
// TODO: figure all these out properly
|
||||
IPCTYPE_UNK_320 = 0x0253, // updated 4.5
|
||||
IPCTYPE_UNK_322 = 0x0255, // updated 4.5
|
||||
// daily quest related, init seed and current quota probably
|
||||
IPCTYPE_UNK_320 = 0x025E, // updated 5.0
|
||||
IPCTYPE_UNK_322 = 0x0260, // updated 5.0
|
||||
|
||||
/// Doman Mahjong //////////////////////////////////////
|
||||
MahjongOpenGui = 0x02BC, // only available in mahjong instance
|
||||
MahjongOpenGui = 0x02A4, // only available in mahjong instance
|
||||
MahjongNextRound = 0x02BD, // initial hands(baipai), # of riichi(wat), winds, honba, score and stuff
|
||||
MahjongPlayerAction = 0x02BE, // tsumo(as in drawing a tile) called chi/pon/kan/riichi
|
||||
MahjongEndRoundTsumo = 0x02BF, // called tsumo
|
||||
|
@ -255,36 +263,37 @@ namespace Sapphire::Network::Packets
|
|||
enum ClientZoneIpcType : uint16_t
|
||||
{
|
||||
|
||||
PingHandler = 0x0065, // unchanged 4.5
|
||||
InitHandler = 0x0066, // unchanged 4.5
|
||||
PingHandler = 0x0065, // unchanged 5.0
|
||||
InitHandler = 0x0066, // unchanged 5.0
|
||||
|
||||
FinishLoadingHandler = 0x0069, // unchanged 4.5
|
||||
FinishLoadingHandler = 0x0069, // unchanged 5.0
|
||||
|
||||
CFCommenceHandler = 0x006F,
|
||||
|
||||
|
||||
CFRegisterDuty = 0x0071,
|
||||
CFRegisterRoulette = 0x0072,
|
||||
PlayTimeHandler = 0x0073, // unchanged 4.5
|
||||
LogoutHandler = 0x0074, // unchanged 4.5
|
||||
PlayTimeHandler = 0x0073, // unchanged 5.0
|
||||
LogoutHandler = 0x0074, // unchanged 5.0
|
||||
CancelLogout = 0x0075, // updated 5.0
|
||||
|
||||
CFDutyInfoHandler = 0x0078, // updated 4.2
|
||||
|
||||
SocialReqSendHandler = 0x00AE, // updated 4.1
|
||||
CreateCrossWorldLS = 0x00AF, // updated 4.3
|
||||
|
||||
ChatHandler = 0x00D7, // updated 4.5
|
||||
ChatHandler = 0x00D9, // updated 5.0
|
||||
|
||||
SocialListHandler = 0x00DF, // updated 4.5
|
||||
ReqSearchInfoHandler = 0x00E4, // updated 4.5
|
||||
ReqExamineSearchCommentHandler = 0x00E5, // updated 4.5
|
||||
SocialListHandler = 0x00E1, // updated 5.0
|
||||
SetSearchInfoHandler = 0x00E4, // updated 5.0
|
||||
ReqSearchInfoHandler = 0x00E6, // updated 5.0
|
||||
ReqExamineSearchCommentHandler = 0x00E7, // updated 5.0
|
||||
|
||||
SetSearchInfoHandler = 0x00E2, // unchanged 4.5
|
||||
ReqRemovePlayerFromBlacklist = 0x00F1, // updated 5.0
|
||||
BlackListHandler = 0x00F2, // updated 5.0
|
||||
PlayerSearchHandler = 0x00F4, // updated 5.0
|
||||
|
||||
BlackListHandler = 0x00F0, // updated 4.5
|
||||
PlayerSearchHandler = 0x00E6, // updated 4.5
|
||||
|
||||
LinkshellListHandler = 0x00F8, // updated 4.5
|
||||
LinkshellListHandler = 0x00FA, // updated 5.0
|
||||
|
||||
MarketBoardRequestItemListingInfo = 0x0102, // updated 4.5
|
||||
MarketBoardRequestItemListings = 0x0103, // updated 4.5
|
||||
|
@ -302,48 +311,48 @@ namespace Sapphire::Network::Packets
|
|||
ReqCountdownCancel = 0x0134, // updated 4.5
|
||||
ClearWaymarks = 0x0135, // updated 4.5
|
||||
|
||||
ZoneLineHandler = 0x0137, // updated 4.5
|
||||
ClientTrigger = 0x0138, // updated 4.5
|
||||
DiscoveryHandler = 0x0139, // updated 4.5
|
||||
ZoneLineHandler = 0x0139, // updated 5.0
|
||||
ClientTrigger = 0x013A, // updated 5.0
|
||||
DiscoveryHandler = 0x013B, // updated 5.0
|
||||
|
||||
AddWaymark = 0x013A, // updated 4.5
|
||||
|
||||
SkillHandler = 0x013B, // updated 4.5
|
||||
GMCommand1 = 0x013C, // updated 4.5
|
||||
GMCommand2 = 0x013D, // updated 4.5
|
||||
AoESkillHandler = 0x13E, // updated 4.5
|
||||
SkillHandler = 0x013D, // updated 5.0
|
||||
GMCommand1 = 0x013E, // updated 5.0
|
||||
GMCommand2 = 0x013F, // updated 5.0
|
||||
AoESkillHandler = 0x140, // updated 5.0
|
||||
|
||||
UpdatePositionHandler = 0x013F, // updated 4.5
|
||||
UpdatePositionHandler = 0x0141, // updated 5.0
|
||||
UpdatePositionInstance = 0x0183, // updated 4.3
|
||||
|
||||
InventoryModifyHandler = 0x0146, // updated 4.5 ( +4 )
|
||||
InventoryModifyHandler = 0x0148, // updated 5.0
|
||||
|
||||
ReqPlaceHousingItem = 0x149, // updated 4.5
|
||||
ReqPlaceHousingItem = 0x014B, // updated 5.0
|
||||
BuildPresetHandler = 0x014F, // updated 5.0
|
||||
|
||||
BuildPresetHandler = 0x014E, // updated 4.5
|
||||
TalkEventHandler = 0x014F, // updated 4.5
|
||||
EmoteEventHandler = 0x0150, // updated 4.5
|
||||
WithinRangeEventHandler = 0x0151, // updated 4.5
|
||||
OutOfRangeEventHandler = 0x0152, // updated 4.5
|
||||
EnterTeriEventHandler = 0x0153, // updated 4.5
|
||||
TalkEventHandler = 0x0151, // updated 5.0
|
||||
EmoteEventHandler = 0x0152, // updated 5.0
|
||||
WithinRangeEventHandler = 0x0153, // updated 5.0
|
||||
OutOfRangeEventHandler = 0x0154, // updated 5.0
|
||||
EnterTeriEventHandler = 0x0155, // updated 5.0
|
||||
ShopEventHandler = 0x0156, // updated 5.0
|
||||
|
||||
ShopEventHandler = 0x0155, // updated 4.5
|
||||
|
||||
ReturnEventHandler = 0x0158, // updated 4.5
|
||||
TradeReturnEventHandler = 0x0159, // updated 4.5
|
||||
ReturnEventHandler = 0x015A, // updated 5.0?
|
||||
TradeReturnEventHandler = 0x015B, // updated 5.0?
|
||||
|
||||
LinkshellEventHandler = 0x016B, // updated 4.5
|
||||
LinkshellEventHandler1 = 0x016C, // updated 4.5
|
||||
|
||||
LandRenameHandler = 0x0175, // updated 4.5
|
||||
HousingUpdateHouseGreeting = 0x0176, // updated 4.5
|
||||
HousingUpdateObjectPosition = 0x0177, // updated 4.5
|
||||
ReqEquipDisplayFlagsChange = 0x0175, // updated 5.0
|
||||
|
||||
SetSharedEstateSettings = 0x017B, // updated 4.5
|
||||
LandRenameHandler = 0x0177, // updated 5.0
|
||||
HousingUpdateHouseGreeting = 0x0178, // updated 5.0
|
||||
HousingUpdateObjectPosition = 0x0179, // updated 5.0
|
||||
|
||||
SetSharedEstateSettings = 0x017B, // updated 5.0
|
||||
|
||||
PerformNoteHandler = 0x029B, // updated 4.3
|
||||
|
||||
ReqEquipDisplayFlagsChange = 0x0173, // updated 4.5
|
||||
|
||||
|
||||
};
|
||||
|
|
|
@ -835,6 +835,7 @@ namespace Sapphire::Network::Packets::Server
|
|||
unsigned char race;
|
||||
unsigned char tribe;
|
||||
unsigned char gender;
|
||||
unsigned char unknown7A;
|
||||
unsigned char currentJob;
|
||||
unsigned char currentClass;
|
||||
unsigned char deity;
|
||||
|
@ -842,7 +843,7 @@ namespace Sapphire::Network::Packets::Server
|
|||
unsigned char namedayDay;
|
||||
unsigned char cityState;
|
||||
unsigned char homepoint;
|
||||
unsigned char unknown81;
|
||||
unsigned char unknown82;
|
||||
unsigned char petHotBar;
|
||||
unsigned char companionRank;
|
||||
unsigned char companionStars;
|
||||
|
@ -856,16 +857,16 @@ namespace Sapphire::Network::Packets::Server
|
|||
unsigned char relicBookId;
|
||||
unsigned char unknown90[4];
|
||||
unsigned char craftingMasterMask;
|
||||
unsigned char unknown95[10];
|
||||
unsigned char unknown95[9];
|
||||
unsigned char unknown9F[2];
|
||||
unsigned char unknownA1[3];
|
||||
unsigned int exp[26];
|
||||
unsigned int exp[28];
|
||||
unsigned int unknown108;
|
||||
unsigned int pvpTotalExp;
|
||||
unsigned int unknownPvp110;
|
||||
unsigned int pvpExp;
|
||||
unsigned int pvpFrontlineOverallRanks[3];
|
||||
unsigned short levels[26];
|
||||
unsigned short levels[28];
|
||||
unsigned short unknown15C[9];
|
||||
unsigned short u1;
|
||||
unsigned short u2;
|
||||
|
@ -880,32 +881,32 @@ namespace Sapphire::Network::Packets::Server
|
|||
unsigned char companionAttRank;
|
||||
unsigned char companionHealRank;
|
||||
unsigned char u19[2];
|
||||
unsigned char mountGuideMask[17];
|
||||
unsigned char mountGuideMask[19];
|
||||
char name[32];
|
||||
unsigned char unknownOword[16];
|
||||
unsigned char unknownOw;
|
||||
unsigned char unlockBitmask[64];
|
||||
unsigned char aetheryte[17];
|
||||
unsigned char discovery[421];
|
||||
unsigned char aetheryte[21];
|
||||
unsigned char discovery[445];
|
||||
unsigned char howto[34];
|
||||
unsigned char minions[42];
|
||||
unsigned char chocoboTaxiMask[8];
|
||||
unsigned char watchedCutscenes[118];
|
||||
unsigned char companionBardingMask[9];
|
||||
unsigned char minions[45];
|
||||
unsigned char chocoboTaxiMask[10];
|
||||
unsigned char watchedCutscenes[124];
|
||||
unsigned char companionBardingMask[10];
|
||||
unsigned char companionEquippedHead;
|
||||
unsigned char companionEquippedBody;
|
||||
unsigned char companionEquippedLegs;
|
||||
unsigned char unknown52A[4];
|
||||
unsigned char unknownMask52E[11];
|
||||
unsigned char fishingGuideMask[89];
|
||||
unsigned char fishingSpotVisited[25];
|
||||
unsigned char unknown59A[15];
|
||||
unsigned char unknown5A9[5];
|
||||
unsigned char fishingGuideMask[105];
|
||||
unsigned char fishingSpotVisited[31];
|
||||
unsigned char unknown59A[27];
|
||||
unsigned char unknown5A9[7];
|
||||
unsigned char beastRank[11];
|
||||
unsigned char unknownPvp5AB[11];
|
||||
unsigned char unknown5B9[5];
|
||||
unsigned char unknown5B91;
|
||||
unsigned char pose;
|
||||
unsigned char unknown5B91;
|
||||
unsigned char challengeLogComplete[9];
|
||||
unsigned char weaponPose;
|
||||
unsigned char unknownMask673[10];
|
||||
|
|
|
@ -453,8 +453,8 @@ void Lobby::GameConnection::generateEncryptionKey( uint32_t key, const std::stri
|
|||
m_baseKey[ 2 ] = 0x34;
|
||||
m_baseKey[ 3 ] = 0x12;
|
||||
memcpy( m_baseKey + 0x04, &key, 4 );
|
||||
m_baseKey[ 8 ] = 0xC6;
|
||||
m_baseKey[ 9 ] = 0x11;
|
||||
m_baseKey[ 8 ] = 0x88;
|
||||
m_baseKey[ 9 ] = 0x13;
|
||||
memcpy( ( char* ) m_baseKey + 0x0C, keyPhrase.c_str(), keyPhrase.size() );
|
||||
Common::Util::md5( m_baseKey, m_encKey, 0x2C );
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ Sapphire::Data::ExdDataGenerated g_exdData;
|
|||
using namespace Sapphire;
|
||||
|
||||
//const std::string datLocation( "/opt/sapphire_3_15_0/bin/sqpack" );
|
||||
const std::string datLocation( "C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack" );
|
||||
std::string datLocation( "C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack" );
|
||||
|
||||
std::string generateEnum( const std::string& exd, int8_t nameIndex, const std::string& type, bool useLang = true )
|
||||
{
|
||||
|
@ -86,13 +86,20 @@ std::string generateEnum( const std::string& exd, int8_t nameIndex, const std::s
|
|||
|
||||
}
|
||||
|
||||
int main()
|
||||
int main( int argc, char** argv )
|
||||
{
|
||||
|
||||
Logger::init( "commongen" );
|
||||
|
||||
|
||||
Logger::info( "Setting up EXD data" );
|
||||
|
||||
if( argc > 1 )
|
||||
{
|
||||
Logger::info( "using dat path: {0}", std::string( argv[ 1 ] ) );
|
||||
datLocation = std::string( argv[ 1 ] );
|
||||
}
|
||||
|
||||
if( !g_exdData.init( datLocation ) )
|
||||
{
|
||||
Logger::fatal( "Error setting up EXD data " );
|
||||
|
@ -107,8 +114,7 @@ int main()
|
|||
"/* This file has been automatically generated.\n Changes will be lost upon regeneration.\n To change the content edit tools/exd_common_gen */\n";
|
||||
|
||||
|
||||
result += "namespace Sapphire {\n";
|
||||
result += "namespace Common {\n";
|
||||
result += "namespace Sapphire::Common {\n";
|
||||
result += generateEnum( "ActionCategory", 0, "uint8_t" );
|
||||
result += generateEnum( "BaseParam", 1, "uint8_t" );
|
||||
result += generateEnum( "BeastReputationRank", 1, "uint8_t" );
|
||||
|
@ -127,7 +133,6 @@ int main()
|
|||
result += generateEnum( "Town", 0, "uint8_t" );
|
||||
result += generateEnum( "Weather", 1, "uint8_t" );
|
||||
result += generateEnum( "HousingAppeal", 0, "uint8_t" );
|
||||
result += "}\n";
|
||||
result += "}\n#endif\n";
|
||||
Logger::info( result );
|
||||
return 0;
|
||||
|
|
|
@ -27,6 +27,9 @@ namespace fs = std::experimental::filesystem;
|
|||
Sapphire::Data::ExdDataGenerated g_exdData;
|
||||
bool skipUnmapped = true;
|
||||
|
||||
std::shared_ptr< xiv::dat::GameData > m_data;
|
||||
std::shared_ptr< xiv::exd::ExdData > m_exd_data;
|
||||
|
||||
std::map< char, std::string > numberToStringMap
|
||||
{
|
||||
{ '0', "zero" },
|
||||
|
@ -83,7 +86,7 @@ std::string generateIdListGetter( const std::string& exd )
|
|||
|
||||
std::string generateSetDatAccessCall( const std::string& exd )
|
||||
{
|
||||
auto& cat = g_exdData.m_exd_data->get_category( exd );
|
||||
auto& cat = m_exd_data->get_category( exd );
|
||||
auto exh = cat.get_header();
|
||||
|
||||
std::string lang = "xiv::exd::Language::none";
|
||||
|
@ -110,7 +113,7 @@ std::map< std::string, std::string > nameTaken;
|
|||
|
||||
std::string generateStruct( const std::string& exd )
|
||||
{
|
||||
auto& cat = g_exdData.m_exd_data->get_category( exd );
|
||||
auto& cat = m_exd_data->get_category( exd );
|
||||
auto exh = cat.get_header();
|
||||
auto exhMem = exh.get_exh_members();
|
||||
|
||||
|
@ -261,7 +264,7 @@ std::string generateConstructorsDecl( const std::string& exd )
|
|||
{
|
||||
std::string result;
|
||||
|
||||
auto& cat = g_exdData.m_exd_data->get_category( exd );
|
||||
auto& cat = m_exd_data->get_category( exd );
|
||||
auto exh = cat.get_header();
|
||||
auto exhMem = exh.get_exh_members();
|
||||
|
||||
|
@ -355,11 +358,10 @@ int main( int argc, char** argv )
|
|||
|
||||
|
||||
Logger::info( "Setting up EXD data" );
|
||||
if( !g_exdData.init( datLocation ) )
|
||||
{
|
||||
Logger::fatal( "Error setting up EXD data " );
|
||||
return 0;
|
||||
}
|
||||
|
||||
m_data = std::make_shared< xiv::dat::GameData >( datLocation );
|
||||
m_exd_data = std::make_shared< xiv::exd::ExdData >( *m_data );
|
||||
|
||||
Logger::info( "Generating structs, this may take several minutes..." );
|
||||
Logger::info( "Go grab a coffee..." );
|
||||
|
||||
|
@ -385,6 +387,8 @@ int main( int argc, char** argv )
|
|||
return 1;
|
||||
}
|
||||
|
||||
auto& cats = m_exd_data->get_cat_names();
|
||||
|
||||
uint32_t entryCount = 0;
|
||||
for( auto& entry : fs::directory_iterator( "./Definitions/" ) )
|
||||
{
|
||||
|
@ -393,10 +397,14 @@ int main( int argc, char** argv )
|
|||
if( path.extension() != ".json" )
|
||||
continue;
|
||||
|
||||
entryCount++;
|
||||
|
||||
auto name = path.stem().string();
|
||||
|
||||
if( std::find( cats.begin(), cats.end(), name ) == cats.end() )
|
||||
{
|
||||
Logger::warn( "have definition for {} but the sheet doesn't exist", name );
|
||||
continue;
|
||||
}
|
||||
|
||||
forwards += "struct " + name + ";\n";
|
||||
structDefs += generateStruct( name );
|
||||
dataDecl += generateDatAccessDecl( name );
|
||||
|
@ -405,6 +413,8 @@ int main( int argc, char** argv )
|
|||
datAccCall += generateSetDatAccessCall( name );
|
||||
constructorDecl += generateConstructorsDecl( name );
|
||||
idListGetters += generateIdListGetter( name );
|
||||
|
||||
entryCount++;
|
||||
}
|
||||
|
||||
Logger::info( "Processed {} definition files, writing files...", entryCount );
|
||||
|
|
|
@ -466,7 +466,7 @@ bool Action::Action::primaryCostCheck( bool subtractCosts )
|
|||
{
|
||||
auto curMp = m_pSource->getMp();
|
||||
|
||||
auto cost = Math::CalcStats::calculateMpCost( *m_pSource, m_primaryCost );
|
||||
auto cost = m_primaryCost * 100;
|
||||
|
||||
if( curMp < cost )
|
||||
return false;
|
||||
|
|
|
@ -695,7 +695,7 @@ void Sapphire::Entity::Player::gainExp( uint32_t amount )
|
|||
|
||||
queuePacket( makeActorControl143( getId(), GainExpMsg, static_cast< uint8_t >( getClass() ), amount ) );
|
||||
|
||||
if( level >= 70 ) // temporary fix for leveling over levelcap
|
||||
if( level >= Common::MAX_PLAYER_LEVEL ) // temporary fix for leveling over levelcap
|
||||
{
|
||||
queuePacket( makeActorControl143( getId(), UpdateUiExp, static_cast< uint8_t >( getClass() ), amount ) );
|
||||
return;
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
using namespace Sapphire::Math;
|
||||
using namespace Sapphire::Entity;
|
||||
|
||||
const int levelTable[71][7] =
|
||||
const int levelTable[81][7] =
|
||||
{
|
||||
// PIE, MP, MAIN,SUB,DIV,HP,ELMT,THREAT
|
||||
{ 1, 1, 1, 1, 1, 1, 1 },
|
||||
|
@ -88,7 +88,19 @@ const int levelTable[71][7] =
|
|||
{ 830, 10560, 268, 361, 1643, 3300, 292 },
|
||||
{ 860, 10980, 276, 362, 1802, 3400, 293 },
|
||||
{ 890, 11450, 284, 363, 1978, 3500, 294 },
|
||||
{ 890, 12000, 292, 364, 2170, 3600, 295 }
|
||||
{ 890, 12000, 292, 364, 2170, 3600, 295 },
|
||||
|
||||
// todo: add proper shbr values
|
||||
{ 890, 12000, 292, 364, 2170, 3600, 295 },
|
||||
{ 890, 12000, 292, 364, 2170, 3600, 295 },
|
||||
{ 890, 12000, 292, 364, 2170, 3600, 295 },
|
||||
{ 890, 12000, 292, 364, 2170, 3600, 295 },
|
||||
{ 890, 12000, 292, 364, 2170, 3600, 295 },
|
||||
{ 890, 12000, 292, 364, 2170, 3600, 295 },
|
||||
{ 890, 12000, 292, 364, 2170, 3600, 295 },
|
||||
{ 890, 12000, 292, 364, 2170, 3600, 295 },
|
||||
{ 890, 12000, 292, 364, 2170, 3600, 295 },
|
||||
{ 890, 12000, 292, 364, 2170, 3600, 295 },
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -115,8 +127,8 @@ float CalcStats::calculateBaseStat( const Chara& chara )
|
|||
float base = 0.0f;
|
||||
uint8_t level = chara.getLevel();
|
||||
|
||||
if( level > 70 )
|
||||
level = 70;
|
||||
if( level > Common::MAX_PLAYER_LEVEL )
|
||||
level = Common::MAX_PLAYER_LEVEL;
|
||||
|
||||
return static_cast< float >( levelTable[level][2] );
|
||||
}
|
||||
|
@ -187,86 +199,6 @@ uint32_t CalcStats::calculateMaxMp( PlayerPtr pPlayer, Sapphire::FrameworkPtr pF
|
|||
return result;
|
||||
}
|
||||
|
||||
uint16_t CalcStats::calculateMpCost( const Sapphire::Entity::Chara& chara, uint16_t baseCost )
|
||||
{
|
||||
auto level = chara.getLevel();
|
||||
|
||||
// each level range is 1-10, 11-20, 21-30, ... therefore:
|
||||
// level 50 should be in the 4th group, not the 5t
|
||||
// dividing by 10 on the border will break this unless we subtract 1
|
||||
auto levelGroup = std::max< uint8_t >( level - 1, 1 ) / 10;
|
||||
|
||||
float cost = baseCost;
|
||||
|
||||
// thanks to andrew for helping me figure this shit out
|
||||
// played with this some more and it seems to be accurate for everything i've tried
|
||||
switch( levelGroup )
|
||||
{
|
||||
// level 1-10
|
||||
case 0:
|
||||
{
|
||||
// r^2 = 0.9999
|
||||
cost = 0.0952f * level + 0.9467f;
|
||||
break;
|
||||
}
|
||||
|
||||
// level 11-20
|
||||
case 1:
|
||||
{
|
||||
// r^2 = 1
|
||||
cost = 0.19f * level;
|
||||
break;
|
||||
}
|
||||
|
||||
// level 21-30
|
||||
case 2:
|
||||
{
|
||||
// r^2 = 1
|
||||
cost = 0.38f * level - 3.8f;
|
||||
break;
|
||||
}
|
||||
|
||||
// level 31-40
|
||||
case 3:
|
||||
{
|
||||
// r^2 = 1
|
||||
cost = 0.6652f * level - 12.358f;
|
||||
break;
|
||||
}
|
||||
|
||||
// level 41-50
|
||||
case 4:
|
||||
{
|
||||
// r^2 = 1
|
||||
cost = 1.2352f * level - 35.159f;
|
||||
break;
|
||||
}
|
||||
|
||||
// level 51-60
|
||||
case 5:
|
||||
{
|
||||
// r^2 = 1
|
||||
cost = 0.0654f * std::exp( 0.1201f * level );
|
||||
break;
|
||||
}
|
||||
|
||||
// level 61-70
|
||||
case 6:
|
||||
{
|
||||
// r^2 = 0.9998
|
||||
cost = 0.2313f * ( level * level ) - 26.98f * level + 875.21f;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return static_cast< uint16_t >( std::round( cost * baseCost ) );
|
||||
}
|
||||
|
||||
float CalcStats::blockProbability( const Chara& chara )
|
||||
{
|
||||
auto level = chara.getLevel();
|
||||
|
|
|
@ -19,15 +19,6 @@ namespace Sapphire::Math
|
|||
|
||||
static uint32_t calculateMaxHp( Sapphire::Entity::PlayerPtr pPlayer, FrameworkPtr pFw );
|
||||
|
||||
/*!
|
||||
* @brief Calculates the MP cost of a spell given its base cost
|
||||
*
|
||||
* @param chara The Chara that is casting the action
|
||||
* @param baseCost The action cost
|
||||
* @return The total MP to be consumed by a successful cast
|
||||
*/
|
||||
static uint16_t calculateMpCost( const Sapphire::Entity::Chara& chara, uint16_t baseCost );
|
||||
|
||||
/*!
|
||||
* @brief Calculates the probability of a block happening
|
||||
*/
|
||||
|
|
|
@ -71,8 +71,8 @@ namespace Sapphire::Network::Packets::Server
|
|||
memcpy( m_data.howto, player.getHowToArray(), sizeof( m_data.howto ) );
|
||||
|
||||
// possibly max level or current level
|
||||
m_data.maxLevel = 0x46;
|
||||
m_data.expansion = 2;
|
||||
m_data.maxLevel = Common::MAX_PLAYER_LEVEL;
|
||||
m_data.expansion = Common::CURRENT_EXPANSION_ID;
|
||||
|
||||
// df stuff
|
||||
// todo: actually do this properly
|
||||
|
|
Loading…
Add table
Reference in a new issue