aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/DataStores
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2019-07-14 15:21:32 +0200
committerShauren <shauren.trinity@gmail.com>2019-07-14 19:20:45 +0200
commit3262bc827dbce8d659c249e23cd585b4c86f00b3 (patch)
treedcadc7f785b13c7d3e179810052b324283221a00 /src/server/game/DataStores
parent3714bf8e7a5f4d1b066303c0f9bde0becc64e5eb (diff)
Core/DataStores: Updated db2 structures to 8.2
Diffstat (limited to 'src/server/game/DataStores')
-rw-r--r--src/server/game/DataStores/DB2LoadInfo.h37
-rw-r--r--src/server/game/DataStores/DB2Metadata.h528
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp88
-rw-r--r--src/server/game/DataStores/DB2Structure.h43
-rw-r--r--src/server/game/DataStores/DBCEnums.h5
-rw-r--r--src/server/game/DataStores/GameTables.h3
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;
}