diff options
| author | Shauren <shauren.trinity@gmail.com> | 2019-07-14 15:21:32 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2019-07-14 19:20:45 +0200 |
| commit | 3262bc827dbce8d659c249e23cd585b4c86f00b3 (patch) | |
| tree | dcadc7f785b13c7d3e179810052b324283221a00 /src/server/game/DataStores | |
| parent | 3714bf8e7a5f4d1b066303c0f9bde0becc64e5eb (diff) | |
Core/DataStores: Updated db2 structures to 8.2
Diffstat (limited to 'src/server/game/DataStores')
| -rw-r--r-- | src/server/game/DataStores/DB2LoadInfo.h | 37 | ||||
| -rw-r--r-- | src/server/game/DataStores/DB2Metadata.h | 528 | ||||
| -rw-r--r-- | src/server/game/DataStores/DB2Stores.cpp | 88 | ||||
| -rw-r--r-- | src/server/game/DataStores/DB2Structure.h | 43 | ||||
| -rw-r--r-- | src/server/game/DataStores/DBCEnums.h | 5 | ||||
| -rw-r--r-- | src/server/game/DataStores/GameTables.h | 3 |
6 files changed, 566 insertions, 138 deletions
diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h index 0c4da4e2804..7e5a4c66c71 100644 --- a/src/server/game/DataStores/DB2LoadInfo.h +++ b/src/server/game/DataStores/DB2LoadInfo.h @@ -623,8 +623,6 @@ struct CfgRegionsLoadInfo { false, FT_INT, "Raidorigin" }, { false, FT_BYTE, "RegionGroupMask" }, { false, FT_INT, "ChallengeOrigin" }, - { true, FT_INT, "ChallengeTimeOffset1" }, - { true, FT_INT, "ChallengeTimeOffset2" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, Cfg_RegionsMeta::Instance(), HOTFIX_SEL_CFG_REGIONS); return &loadInfo; @@ -958,14 +956,28 @@ struct ContentTuningLoadInfo { true, FT_INT, "MinLevel" }, { true, FT_INT, "MaxLevel" }, { true, FT_INT, "Flags" }, - { true, FT_INT, "ExpectedStatModID" }, - { true, FT_INT, "DifficultyESMID" }, + { true, FT_INT, "ExpansionID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, ContentTuningMeta::Instance(), HOTFIX_SEL_CONTENT_TUNING); return &loadInfo; } }; +struct ContentTuningXExpectedLoadInfo +{ + static DB2LoadInfo const* Instance() + { + static DB2FieldMeta const fields[] = + { + { false, FT_INT, "ID" }, + { true, FT_INT, "ExpectedStatModID" }, + { true, FT_INT, "ContentTuningID" }, + }; + static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, ContentTuningXExpectedMeta::Instance(), HOTFIX_SEL_CONTENT_TUNING_X_EXPECTED); + return &loadInfo; + } +}; + struct ConversationLineLoadInfo { static DB2LoadInfo const* Instance() @@ -1116,6 +1128,10 @@ struct CreatureModelDataLoadInfo { false, FT_FLOAT, "OverrideNameScale" }, { false, FT_FLOAT, "OverrideSelectionRadius" }, { false, FT_FLOAT, "TamedPetBaseScale" }, + { true, FT_BYTE, "Unknown820_1" }, + { false, FT_FLOAT, "Unknown820_2" }, + { false, FT_FLOAT, "Unknown820_31" }, + { false, FT_FLOAT, "Unknown820_32" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, CreatureModelDataMeta::Instance(), HOTFIX_SEL_CREATURE_MODEL_DATA); return &loadInfo; @@ -1720,8 +1736,8 @@ struct GarrFollowerLoadInfo { true, FT_INT, "AllianceCreatureID" }, { false, FT_BYTE, "HordeGarrFollRaceID" }, { false, FT_BYTE, "AllianceGarrFollRaceID" }, - { false, FT_BYTE, "HordeGarrClassSpecID" }, - { false, FT_BYTE, "AllianceGarrClassSpecID" }, + { true, FT_INT, "HordeGarrClassSpecID" }, + { true, FT_INT, "AllianceGarrClassSpecID" }, { false, FT_BYTE, "Quality" }, { false, FT_BYTE, "FollowerLevel" }, { false, FT_SHORT, "ItemLevelWeapon" }, @@ -1896,9 +1912,9 @@ struct GlyphPropertiesLoadInfo { { false, FT_INT, "ID" }, { false, FT_INT, "SpellID" }, - { false, FT_SHORT, "SpellIconID" }, { false, FT_BYTE, "GlyphType" }, { false, FT_BYTE, "GlyphExclusiveCategoryID" }, + { true, FT_INT, "SpellIconFileDataID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, GlyphPropertiesMeta::Instance(), HOTFIX_SEL_GLYPH_PROPERTIES); return &loadInfo; @@ -3217,7 +3233,7 @@ struct ModifierTreeLoadInfo { false, FT_INT, "Parent" }, { true, FT_BYTE, "Operator" }, { true, FT_BYTE, "Amount" }, - { false, FT_BYTE, "Type" }, + { true, FT_INT, "Type" }, { true, FT_INT, "Asset" }, { true, FT_INT, "SecondaryAsset" }, { true, FT_BYTE, "TertiaryAsset" }, @@ -3264,6 +3280,7 @@ struct MountCapabilityLoadInfo { true, FT_INT, "ReqSpellKnownID" }, { true, FT_INT, "ModSpellAuraID" }, { true, FT_SHORT, "ReqMapID" }, + { true, FT_INT, "PlayerConditionID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, MountCapabilityMeta::Instance(), HOTFIX_SEL_MOUNT_CAPABILITY); return &loadInfo; @@ -3876,6 +3893,7 @@ struct RandPropPointsLoadInfo { { false, FT_INT, "ID" }, { true, FT_INT, "DamageReplaceStat" }, + { true, FT_INT, "DamageSecondary" }, { false, FT_INT, "Epic1" }, { false, FT_INT, "Epic2" }, { false, FT_INT, "Epic3" }, @@ -4608,6 +4626,7 @@ struct SpellMiscLoadInfo { false, FT_FLOAT, "MinDuration" }, { true, FT_INT, "SpellIconFileDataID" }, { true, FT_INT, "ActiveIconFileDataID" }, + { true, FT_INT, "ContentTuningID" }, { true, FT_INT, "Attributes1" }, { true, FT_INT, "Attributes2" }, { true, FT_INT, "Attributes3" }, @@ -5265,6 +5284,8 @@ struct UiMapLinkLoadInfo { true, FT_INT, "ParentUiMapID" }, { true, FT_INT, "OrderIndex" }, { true, FT_INT, "ChildUiMapID" }, + { true, FT_INT, "OverrideHighlightFileDataID" }, + { true, FT_INT, "OverrideHighlightAtlasID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, UiMapLinkMeta::Instance(), HOTFIX_SEL_UI_MAP_LINK); return &loadInfo; diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h index 04fc9b76b97..efda3820af2 100644 --- a/src/server/game/DataStores/DB2Metadata.h +++ b/src/server/game/DataStores/DB2Metadata.h @@ -178,15 +178,14 @@ struct AnimKitBoneSetMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[5] = + static DB2MetaField const fields[4] = { { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_BYTE, 1, true }, { FT_BYTE, 1, true }, - { FT_BYTE, 1, false }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(1375433, -1, 5, 0x1C432613, fields, -1); + static DB2Meta instance(1375433, -1, 4, 0x19CF1290, fields, -1); return &instance; } }; @@ -839,6 +838,42 @@ struct AzeriteEmpoweredItemMeta } }; +struct AzeriteEssenceMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[4] = + { + { FT_STRING, 1, true }, + { FT_STRING, 1, true }, + { FT_INT, 1, false }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2829665, 2, 4, 0x3239408B, fields, -1); + return &instance; + } +}; + +struct AzeriteEssencePowerMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[8] = + { + { FT_STRING, 1, true }, + { FT_STRING, 1, true }, + { FT_INT, 1, true }, + { FT_BYTE, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2829666, -1, 8, 0x57FBBD14, fields, -1); + return &instance; + } +}; + struct AzeriteItemMeta { static DB2Meta const* Instance() @@ -856,12 +891,15 @@ struct AzeriteItemMilestonePowerMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[2] = + static DB2MetaField const fields[5] = { - { FT_BYTE, 1, false }, - { FT_SHORT, 1, true }, + { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(1915395, -1, 2, 0x7C4DC43D, fields, -1); + static DB2Meta instance(1915395, 0, 5, 0x865A0628, fields, -1); return &instance; } }; @@ -888,13 +926,13 @@ struct AzeritePowerSetMemberMeta { static DB2MetaField const fields[5] = { - { FT_SHORT, 1, false }, - { FT_SHORT, 1, false }, - { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(1846040, -1, 5, 0x62C2D471, fields, 0); + static DB2Meta instance(1846040, -1, 5, 0x40886320, fields, 0); return &instance; } }; @@ -1500,13 +1538,14 @@ struct CampaignXConditionMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[3] = + static DB2MetaField const fields[4] = { - { FT_INT, 1, false }, - { FT_INT, 1, false }, - { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(2031611, -1, 3, 0x638FC159, fields, 2); + static DB2Meta instance(2031611, -1, 4, 0xA2180F5C, fields, 3); return &instance; } }; @@ -1604,16 +1643,33 @@ struct Cfg_RegionsMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[6] = + static DB2MetaField const fields[5] = { { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_SHORT, 1, false }, { FT_INT, 1, false }, { FT_BYTE, 1, false }, { FT_INT, 1, false }, - { FT_INT, 2, true }, }; - static DB2Meta instance(1082876, -1, 6, 0xF85137B2, fields, -1); + static DB2Meta instance(1082876, -1, 5, 0x0125202F, fields, -1); + return &instance; + } +}; + +struct ChallengeModeItemBonusOverrideMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[6] = + { + { FT_INT, 1, true }, + { FT_BYTE, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2965645, -1, 6, 0x95841908, fields, 5); return &instance; } }; @@ -2394,16 +2450,29 @@ struct ContentTuningMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[6] = + static DB2MetaField const fields[5] = { { FT_INT, 1, false }, { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, + }; + static DB2Meta instance(1962930, 0, 5, 0x7B846412, fields, -1); + return &instance; + } +}; + +struct ContentTuningXExpectedMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[2] = + { + { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(1962930, 0, 6, 0xD1A210D1, fields, -1); + static DB2Meta instance(2976765, -1, 2, 0xA87DE567, fields, 1); return &instance; } }; @@ -2718,7 +2787,7 @@ struct CreatureModelDataMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[28] = + static DB2MetaField const fields[31] = { { FT_FLOAT, 6, true }, { FT_INT, 1, false }, @@ -2748,8 +2817,11 @@ struct CreatureModelDataMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, + { FT_BYTE, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 2, true }, }; - static DB2Meta instance(1365368, -1, 28, 0xF61D550A, fields, -1); + static DB2Meta instance(1365368, -1, 31, 0xBB89D456, fields, -1); return &instance; } }; @@ -3549,14 +3621,17 @@ struct FriendshipReputationMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[4] = + static DB2MetaField const fields[7] = { { FT_STRING, 1, true }, + { FT_STRING, 1, true }, + { FT_STRING, 1, true }, { FT_INT, 1, false }, - { FT_SHORT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(1237639, 1, 4, 0xECCE459C, fields, -1); + static DB2Meta instance(1237639, 3, 7, 0xD2DB04A4, fields, -1); return &instance; } }; @@ -3655,6 +3730,20 @@ struct GMSurveySurveysMeta } }; +struct GameClockDebugMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[2] = + { + { FT_INT, 1, false }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2922072, 0, 2, 0xEC114D0F, fields, -1); + return &instance; + } +}; + struct GameObjectArtKitMeta { static DB2Meta const* Instance() @@ -3800,7 +3889,7 @@ struct GarrAbilityEffectMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, + { FT_INT, 1, true }, { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, @@ -3809,7 +3898,7 @@ struct GarrAbilityEffectMeta { FT_INT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(966241, 0, 12, 0x682EE0E1, fields, 1); + static DB2Meta instance(966241, 0, 12, 0x39A97870, fields, 1); return &instance; } }; @@ -4020,8 +4109,8 @@ struct GarrFollowerMeta { FT_INT, 1, true }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, @@ -4043,7 +4132,7 @@ struct GarrFollowerMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(949906, 3, 32, 0x7C5C19F1, fields, -1); + static DB2Meta instance(949906, 3, 32, 0x4938E823, fields, -1); return &instance; } }; @@ -4173,11 +4262,11 @@ struct GarrMechanicMeta { static DB2MetaField const fields[3] = { - { FT_BYTE, 1, false }, + { FT_INT, 1, true }, { FT_FLOAT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(967963, -1, 3, 0xA83BF5A9, fields, -1); + static DB2Meta instance(967963, -1, 3, 0x062A9BA6, fields, -1); return &instance; } }; @@ -4537,14 +4626,14 @@ struct GarrUiAnimClassInfoMeta { static DB2MetaField const fields[6] = { - { FT_BYTE, 1, false }, + { FT_INT, 1, true }, { FT_BYTE, 1, false }, { FT_FLOAT, 1, true }, { FT_INT, 1, false }, { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(976037, -1, 6, 0xF6444415, fields, -1); + static DB2Meta instance(976037, -1, 6, 0x189AB008, fields, -1); return &instance; } }; @@ -4638,11 +4727,11 @@ struct GlyphPropertiesMeta static DB2MetaField const fields[4] = { { FT_INT, 1, false }, - { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, + { FT_INT, 1, true }, }; - static DB2Meta instance(1345274, -1, 4, 0x7C1C2F11, fields, -1); + static DB2Meta instance(1345274, -1, 4, 0x041F7972, fields, -1); return &instance; } }; @@ -4848,6 +4937,88 @@ struct GuildPerkSpellsMeta } }; +struct GuildShirtBackgroundMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[4] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2921008, -1, 4, 0x40AC6717, fields, 3); + return &instance; + } +}; + +struct GuildShirtBorderMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[5] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2921475, -1, 5, 0x5BF9BE36, fields, 4); + return &instance; + } +}; + +struct GuildTabardBackgroundMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[4] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2909769, -1, 4, 0x9C37AA1A, fields, 3); + return &instance; + } +}; + +struct GuildTabardBorderMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[5] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2920485, -1, 5, 0xD04624D4, fields, 4); + return &instance; + } +}; + +struct GuildTabardEmblemMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[4] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2910470, -1, 4, 0x5203E472, fields, 3); + return &instance; + } +}; + struct HeirloomMeta { static DB2Meta const* Instance() @@ -5183,6 +5354,23 @@ struct ItemBonusMeta } }; +struct ItemBonusListGroupEntryMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[5] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(3025306, -1, 5, 0x87A0CA78, fields, 4); + return &instance; + } +}; + struct ItemBonusListLevelDeltaMeta { static DB2Meta const* Instance() @@ -5197,6 +5385,34 @@ struct ItemBonusListLevelDeltaMeta } }; +struct ItemBonusListWarforgeLevelDeltaMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[2] = + { + { FT_SHORT, 1, true }, + { FT_INT, 1, false }, + }; + static DB2Meta instance(2924997, 1, 2, 0x819C0CC1, fields, -1); + return &instance; + } +}; + +struct ItemBonusSequenceSpellMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[2] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(3026822, -1, 2, 0x9C79B1F6, fields, 1); + return &instance; + } +}; + struct ItemBonusTreeNodeMeta { static DB2Meta const* Instance() @@ -5373,7 +5589,6 @@ struct ItemDisplayInfoMeta { { FT_INT, 1, true }, { FT_INT, 1, true }, - { FT_INT, 1, true }, { FT_INT, 1, false }, { FT_INT, 1, false }, { FT_INT, 1, true }, @@ -5383,11 +5598,12 @@ struct ItemDisplayInfoMeta { FT_INT, 1, true }, { FT_INT, 2, false }, { FT_INT, 2, true }, + { FT_BYTE, 2, false }, { FT_INT, 6, true }, { FT_INT, 6, true }, { FT_INT, 2, true }, }; - static DB2Meta instance(1266429, -1, 15, 0x089404D9, fields, -1); + static DB2Meta instance(1266429, -1, 15, 0x6F891B61, fields, -1); return &instance; } }; @@ -6501,6 +6717,19 @@ struct LiquidTypeXTextureMeta } }; +struct LoadingScreenSkinMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[1] = + { + { FT_INT, 10, true }, + }; + static DB2Meta instance(2478235, -1, 1, 0x1D042CB7, fields, -1); + return &instance; + } +}; + struct LoadingScreenTaxiSplinesMeta { static DB2Meta const* Instance() @@ -7017,12 +7246,12 @@ struct ModifierTreeMeta { FT_INT, 1, false }, { FT_BYTE, 1, true }, { FT_BYTE, 1, true }, - { FT_BYTE, 1, false }, + { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(1267645, -1, 7, 0x643002AE, fields, -1); + static DB2Meta instance(1267645, -1, 7, 0xFF7054B3, fields, -1); return &instance; } }; @@ -7054,7 +7283,7 @@ struct MountCapabilityMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[8] = + static DB2MetaField const fields[9] = { { FT_INT, 1, false }, { FT_BYTE, 1, false }, @@ -7064,8 +7293,25 @@ struct MountCapabilityMeta { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_SHORT, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(1114709, 0, 8, 0xD8A906D6, fields, -1); + static DB2Meta instance(1114709, 0, 9, 0x46ED6D7E, fields, -1); + return &instance; + } +}; + +struct MountEquipmentMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[4] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2923510, -1, 4, 0x5182BFF6, fields, 3); return &instance; } }; @@ -7495,6 +7741,69 @@ struct PVPItemMeta } }; +struct PVPScoreboardCellInfoMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[4] = + { + { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2992916, 0, 4, 0xCD07D7DD, fields, 1); + return &instance; + } +}; + +struct PVPScoreboardColumnHeaderMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[4] = + { + { FT_STRING, 1, true }, + { FT_STRING, 1, true }, + { FT_INT, 1, false }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2992917, 2, 4, 0x910EEE06, fields, -1); + return &instance; + } +}; + +struct PVPScoreboardLayoutMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[4] = + { + { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2992918, 0, 4, 0x6C8594A3, fields, 1); + return &instance; + } +}; + +struct PVPStatMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[3] = + { + { FT_STRING, 1, true }, + { FT_INT, 1, false }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2992919, 1, 3, 0x086BBFCF, fields, 2); + return &instance; + } +}; + struct PageTextMaterialMeta { static DB2Meta const* Instance() @@ -7915,6 +8224,23 @@ struct PrestigeLevelInfoMeta } }; +struct PvpBrawlMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[5] = + { + { FT_STRING, 1, true }, + { FT_STRING, 1, true }, + { FT_STRING, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(1585723, -1, 5, 0xB97DECC7, fields, -1); + return &instance; + } +}; + struct PvpScalingEffectMeta { static DB2Meta const* Instance() @@ -7943,6 +8269,20 @@ struct PvpScalingEffectTypeMeta } }; +struct PvpSeasonMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[2] = + { + { FT_INT, 1, false }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2966426, 0, 2, 0xC8DCB4C5, fields, -1); + return &instance; + } +}; + struct PvpSeasonRewardLevelsMeta { static DB2Meta const* Instance() @@ -8222,7 +8562,7 @@ struct QuestV2CliTaskMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[24] = + static DB2MetaField const fields[25] = { { FT_LONG, 1, true }, { FT_STRING, 1, true }, @@ -8247,9 +8587,10 @@ struct QuestV2CliTaskMeta { FT_SHORT, 1, true }, { FT_INT, 1, false }, { FT_INT, 1, true }, + { FT_INT, 3, true }, { FT_INT, 3, false }, }; - static DB2Meta instance(1028735, 3, 24, 0xC0387D4E, fields, -1); + static DB2Meta instance(1028735, 3, 25, 0xD17937F0, fields, -1); return &instance; } }; @@ -8285,14 +8626,15 @@ struct RandPropPointsMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[4] = + static DB2MetaField const fields[5] = { { FT_INT, 1, true }, + { FT_INT, 1, true }, { FT_INT, 5, false }, { FT_INT, 5, false }, { FT_INT, 5, false }, }; - static DB2Meta instance(1310245, -1, 4, 0x7741F65C, fields, -1); + static DB2Meta instance(1310245, -1, 5, 0xD5752348, fields, -1); return &instance; } }; @@ -8506,6 +8848,23 @@ struct SDReplacementModelMeta } }; +struct SSAOSettingsMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[5] = + { + { FT_INT, 1, false }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + }; + static DB2Meta instance(2056369, 0, 5, 0x7F7B7D5B, fields, -1); + return &instance; + } +}; + struct ScalingStatDistributionMeta { static DB2Meta const* Instance() @@ -9080,7 +9439,7 @@ struct SoundKitAdvancedMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[47] = + static DB2MetaField const fields[49] = { { FT_INT, 1, false }, { FT_INT, 1, false }, @@ -9129,8 +9488,10 @@ struct SoundKitAdvancedMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(1237436, 0, 47, 0xF64439CE, fields, -1); + static DB2Meta instance(1237436, 0, 49, 0x2B12658B, fields, -1); return &instance; } }; @@ -10038,7 +10399,7 @@ struct SpellMiscMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[12] = + static DB2MetaField const fields[13] = { { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, @@ -10050,10 +10411,11 @@ struct SpellMiscMeta { FT_FLOAT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, { FT_INT, 14, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(1003144, -1, 12, 0x76E982BB, fields, 11); + static DB2Meta instance(1003144, -1, 13, 0x99BBFB8B, fields, 12); return &instance; } }; @@ -11398,7 +11760,7 @@ struct UiMapLinkMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[6] = + static DB2MetaField const fields[8] = { { FT_FLOAT, 2, true }, { FT_FLOAT, 2, true }, @@ -11406,8 +11768,10 @@ struct UiMapLinkMeta { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(2030690, 2, 6, 0x1A2F1836, fields, 3); + static DB2Meta instance(2030690, 2, 8, 0x27E875F3, fields, 3); return &instance; } }; @@ -11675,14 +12039,16 @@ struct UiWidgetVisTypeDataReqMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[4] = + static DB2MetaField const fields[6] = { + { FT_STRING_NOT_LOCALIZED, 1, true }, + { FT_INT, 1, false }, { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(2740907, -1, 4, 0x21F50E85, fields, -1); + static DB2Meta instance(2740907, 1, 6, 0xAE3180D2, fields, 5); return &instance; } }; @@ -11691,14 +12057,17 @@ struct UiWidgetVisualizationMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[4] = + static DB2MetaField const fields[7] = { + { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_BYTE, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_SHORT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(1983276, -1, 4, 0x1DB32AF9, fields, -1); + static DB2Meta instance(1983276, -1, 7, 0xAE507BB8, fields, -1); return &instance; } }; @@ -12073,15 +12442,17 @@ struct WaypointNodeMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[5] = + static DB2MetaField const fields[7] = { { FT_STRING, 1, true }, { FT_INT, 1, false }, { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(2565265, 1, 5, 0xF61E3EC2, fields, -1); + static DB2Meta instance(2565265, 1, 7, 0x67728573, fields, -1); return &instance; } }; @@ -12431,35 +12802,6 @@ struct WorldStateExpressionMeta } }; -struct WorldStateUIMeta -{ - static DB2Meta const* Instance() - { - static DB2MetaField const fields[17] = - { - { FT_STRING_NOT_LOCALIZED, 1, true }, - { FT_STRING, 1, true }, - { FT_STRING, 1, true }, - { FT_STRING, 1, true }, - { FT_STRING_NOT_LOCALIZED, 1, true }, - { FT_INT, 1, false }, - { FT_SHORT, 1, true }, - { FT_SHORT, 1, false }, - { FT_SHORT, 1, false }, - { FT_BYTE, 1, false }, - { FT_INT, 1, true }, - { FT_INT, 1, true }, - { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, - { FT_SHORT, 1, false }, - { FT_SHORT, 1, false }, - { FT_SHORT, 3, false }, - }; - static DB2Meta instance(1343596, 5, 17, 0xE1F042FE, fields, 6); - return &instance; - } -}; - struct WorldStateZoneSoundsMeta { static DB2Meta const* Instance() @@ -12519,14 +12861,16 @@ struct ZoneLightMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[4] = + static DB2MetaField const fields[6] = { { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, }; - static DB2Meta instance(1310253, -1, 4, 0xD553DE84, fields, -1); + static DB2Meta instance(1310253, -1, 6, 0xD22C2131, fields, -1); return &instance; } }; diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index 72ea24adad6..6b5731d0bb9 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -78,6 +78,7 @@ DB2Storage<ChrSpecializationEntry> sChrSpecializationStore("ChrSpec DB2Storage<CinematicCameraEntry> sCinematicCameraStore("CinematicCamera.db2", CinematicCameraLoadInfo::Instance()); DB2Storage<CinematicSequencesEntry> sCinematicSequencesStore("CinematicSequences.db2", CinematicSequencesLoadInfo::Instance()); DB2Storage<ContentTuningEntry> sContentTuningStore("ContentTuning.db2", ContentTuningLoadInfo::Instance()); +DB2Storage<ContentTuningXExpectedEntry> sContentTuningXExpectedStore("ContentTuningXExpected.db2", ContentTuningXExpectedLoadInfo::Instance()); DB2Storage<ConversationLineEntry> sConversationLineStore("ConversationLine.db2", ConversationLineLoadInfo::Instance()); DB2Storage<CreatureDisplayInfoEntry> sCreatureDisplayInfoStore("CreatureDisplayInfo.db2", CreatureDisplayInfoLoadInfo::Instance()); DB2Storage<CreatureDisplayInfoExtraEntry> sCreatureDisplayInfoExtraStore("CreatureDisplayInfoExtra.db2", CreatureDisplayInfoExtraLoadInfo::Instance()); @@ -362,6 +363,7 @@ namespace CurvePointsContainer _curvePoints; EmotesTextSoundContainer _emoteTextSounds; std::unordered_map<std::pair<uint32 /*level*/, int32 /*expansion*/>, ExpectedStatEntry const*> _expectedStatsByLevel; + std::unordered_map<uint32 /*contentTuningId*/, std::vector<ExpectedStatModEntry const*>> _expectedStatModsByContentTuning; FactionTeamContainer _factionTeams; HeirloomItemsContainer _heirlooms; GlyphBindableSpellsContainer _glyphBindableSpells; @@ -534,6 +536,7 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) LOAD_DB2(sCinematicCameraStore); LOAD_DB2(sCinematicSequencesStore); LOAD_DB2(sContentTuningStore); + LOAD_DB2(sContentTuningXExpectedStore); LOAD_DB2(sConversationLineStore); LOAD_DB2(sCreatureDisplayInfoStore); LOAD_DB2(sCreatureDisplayInfoExtraStore); @@ -823,6 +826,10 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) _defaultChrSpecializationsByClass[chrSpec->ClassID] = chrSpec; } + for (ContentTuningXExpectedEntry const* contentTuningXExpectedStat : sContentTuningXExpectedStore) + if (ExpectedStatModEntry const* expectedStatMod = sExpectedStatModStore.LookupEntry(contentTuningXExpectedStat->ExpectedStatModID)) + _expectedStatModsByContentTuning[contentTuningXExpectedStat->ContentTuningID].push_back(expectedStatMod); + for (CurvePointEntry const* curvePoint : sCurvePointStore) if (sCurveStore.LookupEntry(curvePoint->CurveID)) _curvePoints[curvePoint->CurveID].push_back(curvePoint); @@ -1723,72 +1730,93 @@ float DB2Manager::EvaluateExpectedStat(ExpectedStatType stat, uint32 level, int3 if (expectedStatItr == _expectedStatsByLevel.end()) return 1.0f; - std::array<ExpectedStatModEntry const*, 3> mods; - mods.fill(nullptr); - if (ContentTuningEntry const* contentTuning = sContentTuningStore.LookupEntry(contentTuningId)) - { - mods[0] = sExpectedStatModStore.LookupEntry(contentTuning->ExpectedStatModID); - mods[1] = sExpectedStatModStore.LookupEntry(contentTuning->DifficultyESMID); - } - + ExpectedStatModEntry const* classMod = nullptr; switch (unitClass) { case CLASS_WARRIOR: - mods[2] = sExpectedStatModStore.LookupEntry(4); + classMod = sExpectedStatModStore.LookupEntry(4); break; case CLASS_PALADIN: - mods[2] = sExpectedStatModStore.LookupEntry(2); + classMod = sExpectedStatModStore.LookupEntry(2); break; case CLASS_ROGUE: - mods[2] = sExpectedStatModStore.LookupEntry(3); + classMod = sExpectedStatModStore.LookupEntry(3); break; case CLASS_MAGE: - mods[2] = sExpectedStatModStore.LookupEntry(1); + classMod = sExpectedStatModStore.LookupEntry(1); break; default: break; } + std::vector<ExpectedStatModEntry const*> const* contentTuningMods = Trinity::Containers::MapGetValuePtr(_expectedStatModsByContentTuning, contentTuningId); float value = 0.0f; switch (stat) { case ExpectedStatType::CreatureHealth: - value = std::accumulate(mods.begin(), mods.end(), expectedStatItr->second->CreatureHealth, - ExpectedStatModReducer<&ExpectedStatModEntry::CreatureHealthMod>()); + value = expectedStatItr->second->CreatureHealth; + if (contentTuningMods) + value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, ExpectedStatModReducer<&ExpectedStatModEntry::CreatureHealthMod>()); + if (classMod) + value *= classMod->CreatureHealthMod; break; case ExpectedStatType::PlayerHealth: - value = std::accumulate(mods.begin(), mods.end(), expectedStatItr->second->PlayerHealth, - ExpectedStatModReducer<&ExpectedStatModEntry::PlayerHealthMod>()); + value = expectedStatItr->second->PlayerHealth; + if (contentTuningMods) + value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, ExpectedStatModReducer<&ExpectedStatModEntry::PlayerHealthMod>()); + if (classMod) + value *= classMod->PlayerHealthMod; break; case ExpectedStatType::CreatureAutoAttackDps: - value = std::accumulate(mods.begin(), mods.end(), expectedStatItr->second->CreatureAutoAttackDps, - ExpectedStatModReducer<&ExpectedStatModEntry::CreatureAutoAttackDPSMod>()); + value = expectedStatItr->second->CreatureAutoAttackDps; + if (contentTuningMods) + value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, ExpectedStatModReducer<&ExpectedStatModEntry::CreatureAutoAttackDPSMod>()); + if (classMod) + value *= classMod->CreatureAutoAttackDPSMod; break; case ExpectedStatType::CreatureArmor: - value = std::accumulate(mods.begin(), mods.end(), expectedStatItr->second->CreatureArmor, - ExpectedStatModReducer<&ExpectedStatModEntry::CreatureArmorMod>()); + value = expectedStatItr->second->CreatureArmor; + if (contentTuningMods) + value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, ExpectedStatModReducer<&ExpectedStatModEntry::CreatureArmorMod>()); + if (classMod) + value *= classMod->CreatureArmorMod; break; case ExpectedStatType::PlayerMana: - value = std::accumulate(mods.begin(), mods.end(), expectedStatItr->second->PlayerMana, - ExpectedStatModReducer<&ExpectedStatModEntry::PlayerManaMod>()); + value = expectedStatItr->second->PlayerMana; + if (contentTuningMods) + value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, ExpectedStatModReducer<&ExpectedStatModEntry::PlayerManaMod>()); + if (classMod) + value *= classMod->PlayerManaMod; break; case ExpectedStatType::PlayerPrimaryStat: - value = std::accumulate(mods.begin(), mods.end(), expectedStatItr->second->PlayerPrimaryStat, - ExpectedStatModReducer<&ExpectedStatModEntry::PlayerPrimaryStatMod>()); + value = expectedStatItr->second->PlayerPrimaryStat; + if (contentTuningMods) + value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, ExpectedStatModReducer<&ExpectedStatModEntry::PlayerPrimaryStatMod>()); + if (classMod) + value *= classMod->PlayerPrimaryStatMod; break; case ExpectedStatType::PlayerSecondaryStat: - value = std::accumulate(mods.begin(), mods.end(), expectedStatItr->second->PlayerSecondaryStat, - ExpectedStatModReducer<&ExpectedStatModEntry::PlayerSecondaryStatMod>()); + value = expectedStatItr->second->PlayerSecondaryStat; + if (contentTuningMods) + value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, ExpectedStatModReducer<&ExpectedStatModEntry::PlayerSecondaryStatMod>()); + if (classMod) + value *= classMod->PlayerSecondaryStatMod; break; case ExpectedStatType::ArmorConstant: - value = std::accumulate(mods.begin(), mods.end(), expectedStatItr->second->ArmorConstant, - ExpectedStatModReducer<&ExpectedStatModEntry::ArmorConstantMod>()); + value = expectedStatItr->second->ArmorConstant; + if (contentTuningMods) + value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, ExpectedStatModReducer<&ExpectedStatModEntry::ArmorConstantMod>()); + if (classMod) + value *= classMod->ArmorConstantMod; break; case ExpectedStatType::None: break; case ExpectedStatType::CreatureSpellDamage: - value = std::accumulate(mods.begin(), mods.end(), expectedStatItr->second->CreatureSpellDamage, - ExpectedStatModReducer<&ExpectedStatModEntry::CreatureSpellDamageMod>()); + value = expectedStatItr->second->CreatureSpellDamage; + if (contentTuningMods) + value *= std::accumulate(contentTuningMods->begin(), contentTuningMods->end(), 1.0f, ExpectedStatModReducer<&ExpectedStatModEntry::CreatureSpellDamageMod>()); + if (classMod) + value *= classMod->CreatureSpellDamageMod; break; default: break; diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 9ad7b8ed1eb..2abf0d78fd2 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -370,7 +370,6 @@ struct Cfg_RegionsEntry uint32 Raidorigin; // Date of first raid reset, all other resets are calculated as this date plus interval uint8 RegionGroupMask; uint32 ChallengeOrigin; - int32 ChallengeTimeOffset[2]; }; struct CharacterFacialHairStylesEntry @@ -562,8 +561,14 @@ struct ContentTuningEntry int32 MinLevel; int32 MaxLevel; int32 Flags; + int32 ExpansionID; +}; + +struct ContentTuningXExpectedEntry +{ + uint32 ID; int32 ExpectedStatModID; - int32 DifficultyESMID; + int32 ContentTuningID; }; struct ConversationLineEntry @@ -670,6 +675,9 @@ struct CreatureModelDataEntry float OverrideNameScale; float OverrideSelectionRadius; float TamedPetBaseScale; + int8 Unknown820_1; // scale related + float Unknown820_2; // scale related + float Unknown820_3[2]; // scale related }; struct CreatureTypeEntry @@ -1192,8 +1200,8 @@ struct GarrFollowerEntry int32 AllianceCreatureID; uint8 HordeGarrFollRaceID; uint8 AllianceGarrFollRaceID; - uint8 HordeGarrClassSpecID; - uint8 AllianceGarrClassSpecID; + int32 HordeGarrClassSpecID; + int32 AllianceGarrClassSpecID; uint8 Quality; uint8 FollowerLevel; uint16 ItemLevelWeapon; @@ -1293,9 +1301,9 @@ struct GlyphPropertiesEntry { uint32 ID; uint32 SpellID; - uint16 SpellIconID; uint8 GlyphType; uint8 GlyphExclusiveCategoryID; + int32 SpellIconFileDataID; }; struct GlyphRequiredSpecEntry @@ -1456,12 +1464,30 @@ struct ItemBonusEntry uint8 OrderIndex; }; +// new item upgrade system +//struct ItemBonusListGroupEntryEntry +//{ +// uint32 ID; +// int32 ItemBonusListID; +// int32 ItemLevelSelectorID; +// int32 OrderIndex; +// int32 ItemExtendedCostID; +// int32 ItemBonusListGroupID; +//}; + struct ItemBonusListLevelDeltaEntry { int16 ItemLevelDelta; uint32 ID; }; +//struct ItemBonusSequenceSpellEntry +//{ +// uint32 ID; +// int32 SpellID; +// int32 ItemID; +//}; + struct ItemBonusTreeNodeEntry { uint32 ID; @@ -1963,7 +1989,7 @@ struct ModifierTreeEntry uint32 Parent; int8 Operator; int8 Amount; - uint8 Type; + int32 Type; int32 Asset; int32 SecondaryAsset; int8 TertiaryAsset; @@ -1996,6 +2022,7 @@ struct MountCapabilityEntry int32 ReqSpellKnownID; int32 ModSpellAuraID; int16 ReqMapID; + int32 PlayerConditionID; }; struct MountTypeXCapabilityEntry @@ -2297,6 +2324,7 @@ struct RandPropPointsEntry { uint32 ID; int32 DamageReplaceStat; + int32 DamageSecondary; uint32 Epic[5]; uint32 Superior[5]; uint32 Good[5]; @@ -2709,6 +2737,7 @@ struct SpellMiscEntry float MinDuration; int32 SpellIconFileDataID; int32 ActiveIconFileDataID; + int32 ContentTuningID; int32 Attributes[14]; int32 SpellID; }; @@ -3047,6 +3076,8 @@ struct UiMapLinkEntry int32 ParentUiMapID; int32 OrderIndex; int32 ChildUiMapID; + int32 OverrideHighlightFileDataID; + int32 OverrideHighlightAtlasID; }; struct UiMapXMapArtEntry diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index 805b59841e2..e1ff83ea337 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -166,7 +166,7 @@ enum ArtifactPowerFlag : uint8 #define MAX_ARTIFACT_TIER 1 -#define BATTLE_PET_SPECIES_MAX_ID 2592 +#define BATTLE_PET_SPECIES_MAX_ID 2775 enum ChrSpecializationFlag { @@ -623,6 +623,7 @@ enum Difficulty : uint8 DIFFICULTY_MYTHIC_ISLAND = 40, DIFFICULTY_PVP_ISLAND = 45, DIFFICULTY_NORMAL_WARFRONT = 147, + DIFFICULTY_HEROIC_WARFRONT = 149, MAX_DIFFICULTY }; @@ -1008,7 +1009,7 @@ enum SpellShapeshiftFormFlags SHAPESHIFT_FORM_PREVENT_EMOTE_SOUNDS = 0x1000 }; -#define TaxiMaskSize 299 +#define TaxiMaskSize 311 typedef std::array<uint8, TaxiMaskSize> TaxiMask; enum TotemCategoryType diff --git a/src/server/game/DataStores/GameTables.h b/src/server/game/DataStores/GameTables.h index 314baab5dba..962f321496a 100644 --- a/src/server/game/DataStores/GameTables.h +++ b/src/server/game/DataStores/GameTables.h @@ -171,6 +171,7 @@ struct GtSpellScalingEntry float Gem3 = 0.0f; float Health = 0.0f; float DamageReplaceStat = 0.0f; + float DamageSecondary = 0.0f; }; struct GtXpEntry @@ -298,6 +299,8 @@ inline float GetSpellScalingColumnForClass(GtSpellScalingEntry const* row, int32 return row->Health; case -8: return row->DamageReplaceStat; + case -9: + return row->DamageSecondary; default: break; } |
