aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/shared')
-rw-r--r--src/server/shared/DataStores/DBCEnums.h2
-rw-r--r--src/server/shared/DataStores/DBCStructure.h2288
-rw-r--r--src/server/shared/DataStores/DBCfmt.h14
-rw-r--r--src/server/shared/SharedDefines.h2
4 files changed, 1164 insertions, 1142 deletions
diff --git a/src/server/shared/DataStores/DBCEnums.h b/src/server/shared/DataStores/DBCEnums.h
index 78dc2e842cf..fcd7bb560a5 100644
--- a/src/server/shared/DataStores/DBCEnums.h
+++ b/src/server/shared/DataStores/DBCEnums.h
@@ -264,7 +264,7 @@ enum AreaFlags
AREA_FLAG_UNUSED2 = 0x00020000, // Unused in 3.3.5a
AREA_FLAG_CONTESTED_AREA = 0x00040000, // On PvP servers these areas are considered contested, even though the zone it is contained in is a Horde/Alliance territory.
AREA_FLAG_UNK4 = 0x00080000, // Valgarde and Acherus: The Ebon Hold
- AREA_FLAG_LOWLEVEL = 0x00100000, // used for some starting areas with area_level <= 15
+ AREA_FLAG_LOWLEVEL = 0x00100000, // used for some starting areas with ExplorationLevel <= 15
AREA_FLAG_TOWN = 0x00200000, // small towns with Inn
AREA_FLAG_REST_ZONE_HORDE = 0x00400000, // Instead of using areatriggers, the zone will act as one for Horde players (Warsong Hold, Acherus: The Ebon Hold, New Agamand Inn, Vengeance Landing Inn, Sunreaver Pavilion, etc)
AREA_FLAG_REST_ZONE_ALLIANCE = 0x00800000, // Instead of using areatriggers, the zone will act as one for Alliance players (Valgarde, Acherus: The Ebon Hold, Westguard Inn, Silver Covenant Pavilion, etc)
diff --git a/src/server/shared/DataStores/DBCStructure.h b/src/server/shared/DataStores/DBCStructure.h
index 5a5039b8312..4cf4be1ecf1 100644
--- a/src/server/shared/DataStores/DBCStructure.h
+++ b/src/server/shared/DataStores/DBCStructure.h
@@ -25,35 +25,35 @@
#include <set>
#include <map>
-// Structures using to access raw DBC data and required packing to portability
+// Structures used to access raw DBC data require packing for portability
#pragma pack(push, 1)
struct AchievementEntry
{
- uint32 ID;
- int32 Faction; // -1=all, 0=horde, 1=alliance
- int32 MapID; // -1 = none
- //uint32 Supercedes; // its Achievement parent (can`t start while parent uncomplete, use its Criteria if don`t have own, use its progress on begin)
- char* Title[16];
- //uint32 Title_flags;
- //char* Description[16];
- //uint32 Description_flags;
- uint32 Category;
- uint32 Points;
- //uint32 UIOrder;
- uint32 Flags;
- //uint32 IconID;
- //char* Reward[16];
- //uint32 Reward_flags;
- uint32 MinimumCriteria; // need this count of completed criterias (own or referenced achievement criterias)
- uint32 SharesCriteria; // referenced achievement (counting of all completed criterias)
+ uint32 ID; // 0
+ int32 Faction; // 1 -1=all, 0=horde, 1=alliance
+ int32 InstanceID; // 2 -1=none
+ //uint32 Supercedes; // 3 its Achievement parent (can`t start while parent uncomplete, use its Criteria if don`t have own, use its progress on begin)
+ char* Title[16]; // 4-19
+ //uint32 Title_lang_mask; // 20
+ //char* Description[16]; // 21-36
+ //uint32 Description_lang_mask; // 37
+ uint32 Category; // 38
+ uint32 Points; // 39 reward points
+ //uint32 UiOrder; // 40 icon (from SpellIcon.dbc)
+ uint32 Flags; // 41
+ //uint32 IconID; // 42
+ //char* Reward[16]; // 43-58
+ //uint32 Reward_lang_mask; // 59
+ uint32 MinimumCriteria; // 60 - need this count of completed criterias (own or referenced achievement criterias)
+ uint32 SharesCriteria; // 61 - referenced achievement (counting of all completed criterias)
};
struct AchievementCriteriaEntry
{
- uint32 ID;
- uint32 ReferredAchievement;
- uint32 Type;
+ uint32 ID; // 0
+ uint32 AchievementID; // 1
+ uint32 Type; // 2
union
{
uint32 ID;
@@ -154,52 +154,59 @@ struct AchievementCriteriaEntry
// ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE = 109
uint32 LootType;
- } Asset;
+ } Asset; // 3
- uint32 Amount;
+ uint32 Quantity; // 4
struct
{
- uint32 Type;
- uint32 Asset;
- } AdditionalRequirements[MAX_CRITERIA_REQUIREMENTS];
+ uint32 Type;
+ uint32 Asset;
+ } AdditionalRequirements[MAX_CRITERIA_REQUIREMENTS]; // 5-8
- //char* Description[16];
- //uint32 Description_flags;
- uint32 Flags;
- uint32 StartEvent;
- uint32 StartAsset;
- uint32 StartTimer;
- //uint32 OrderIndex;
+ //char* Description[16]; // 9-24
+ //uint32 Description_lang_mask; // 25
+ uint32 Flags; // 26
+ uint32 StartEvent; // 27 AchievementCriteriaTimedTypes
+ uint32 StartAsset; // 28 Always appears with timed events, used internally to start the achievement, store
+ uint32 StartTimer; // 29 time limit in seconds
+ //uint32 UiOrder; // 30
};
struct AreaTableEntry
{
- uint32 ID; // 0
- uint32 mapid; // 1
- uint32 zone; // 2 if 0 then it's zone, else it's zone id of this area
- uint32 exploreFlag; // 3
- uint32 flags; // 4, unknown value but 312 for all cities
- // 5-9 unused
- int32 area_level; // 10
- char* area_name[16]; // 11-26
- // 27, string flags, unused
- uint32 team; // 28
- uint32 LiquidTypeOverride[4]; // 29-32 liquid override by type
+ uint32 ID; // 0
+ uint32 ContinentID; // 1
+ uint32 ParentAreaID; // 2 if 0 then it's zone, else it's zone id of this area
+ uint32 AreaBit; // 3
+ uint32 Flags; // 4
+ //uint32 SoundProviderPref; // 5
+ //uint32 SoundProviderPrefUnderwater; // 6
+ //uint32 AmbienceID; // 7
+ //uint32 ZoneMusic; // 8
+ //uint32 IntroSound; // 9
+ int32 ExplorationLevel; // 10
+ char* AreaName[16]; // 11-26
+ //uint32 AreaName_lang_mask; // 27
+ uint32 FactionGroupMask; // 28
+ uint32 LiquidTypeID[4]; // 29-32 liquid override by type
+ //float MinElevation; // 33
+ //float AmbientMultiplier; // 34
+ //uint32 LightID; // 35
// helpers
bool IsSanctuary() const
{
- if (mapid == 609)
+ if (ContinentID == 609)
return true;
- return (flags & AREA_FLAG_SANCTUARY) != 0;
+ return (Flags & AREA_FLAG_SANCTUARY) != 0;
}
bool IsFlyable() const
{
- if (flags & AREA_FLAG_OUTLAND)
+ if (Flags & AREA_FLAG_OUTLAND)
{
- if (!(flags & AREA_FLAG_NO_FLY_ZONE))
+ if (!(Flags & AREA_FLAG_NO_FLY_ZONE))
return true;
}
@@ -211,102 +218,100 @@ struct AreaTableEntry
struct AreaGroupEntry
{
- uint32 AreaGroupId; // 0
- uint32 AreaId[MAX_GROUP_AREA_IDS]; // 1-6
- uint32 nextGroup; // 7 index of next group
+ uint32 ID; // 0
+ uint32 AreaID[MAX_GROUP_AREA_IDS]; // 1-6
+ uint32 NextAreaID; // 7 index of next group
};
struct AreaPOIEntry
{
- uint32 id; //0
- uint32 icon[11]; //1-11
- float x; //12
- float y; //13
- float z; //14
- uint32 mapId; //15
- //uint32 val1; //16
- uint32 zoneId; //17
- //char* name[16]; //18-33
- //uint32 name_flag; //34
- //char* name2[16]; //35-50
- //uint32 name_flag2; //51
- uint32 worldState; //52
- //uint32 val2; //53
+ uint32 ID; // 0
+ uint32 Importance; // 1
+ uint32 Icon[9]; // 2-10
+ uint32 FactionID; // 11
+ DBCPosition3D Pos; // 12-14
+ uint32 ContinentID; // 15
+ //uint32 Flags; // 16
+ uint32 AreaID; // 17
+ //char* Name[16]; // 18-33
+ //uint32 Name_lang_mask; // 34
+ //char* Description[16]; // 35-50
+ //uint32 Description_lang_mask; // 51
+ uint32 WorldStateID; // 52
+ //uint32 WorldMapLink; // 53
};
struct AreaTriggerEntry
{
- uint32 id; // 0 m_ID
- uint32 mapid; // 1 m_ContinentID
- float x; // 2 m_x
- float y; // 3 m_y
- float z; // 4 m_z
- float radius; // 5 m_radius
- float box_x; // 6 m_box_length
- float box_y; // 7 m_box_width
- float box_z; // 8 m_box_heigh
- float box_orientation; // 9 m_box_yaw
+ uint32 ID; // 0
+ uint32 ContinentID; // 1
+ DBCPosition3D Pos; // 2-4
+ float Radius; // 5
+ float BoxLength; // 6
+ float BoxWidth; // 7
+ float BoxHeight; // 8
+ float BoxYaw; // 9
};
struct AuctionHouseEntry
{
- uint32 houseId; // 0 index
- uint32 faction; // 1 id of faction.dbc for player factions associated with city
- uint32 depositPercent; // 2 1/3 from real
- uint32 cutPercent; // 3
- //char* name[16]; // 4-19
- // 20 string flag, unused
+ uint32 ID; // 0
+ uint32 FactionID; // 1 id of faction.dbc for player factions associated with city
+ uint32 DepositRate; // 2 1/3 from real
+ uint32 ConsignmentRate; // 3
+ //char* Name[16]; // 4-19
+ //uint32 Name_lang_mask; // 20
};
struct BankBagSlotPricesEntry
{
- uint32 ID;
- uint32 price;
+ uint32 ID; // 0
+ uint32 Cost; // 1
};
struct BannedAddOnsEntry
{
- uint32 Id;
- // uint32 NameMD5[4];
- // uint32 VersionMD5[4];
- // uint32 Timestamp;
- // uint32 State;
+ uint32 ID; // 0
+ //uint32 NameMD5[4]; // 1-4
+ //uint32 VersionMD5[4]; // 5-8
+ //uint32 LastModified; // 9
+ //uint32 Flags; // 10
};
struct BarberShopStyleEntry
{
- uint32 Id; // 0
- uint32 type; // 1 value 0 -> hair, value 2 -> facialhair
- //char* name[16]; // 2-17 name of hair style
- //uint32 name_flags; // 18
- //uint32 unk_name[16]; // 19-34, all empty
- //uint32 unk_flags; // 35
- //float CostMultiplier; // 36 values 1 and 0.75
- uint32 race; // 37 race
- uint32 gender; // 38 0 -> male, 1 -> female
- uint32 hair_id; // 39 real ID to hair/facial hair
+ uint32 ID; // 0
+ uint32 Type; // 1 value 0 -> hair, value 2 -> facialhair
+ //char* DisplayName[16]; // 2-17
+ //uint32 DisplayName_lang_mask; // 18
+ //uint32 Description[16]; // 19-34, all empty
+ //uint32 Description_lang_mask; // 35
+ //float CostModifier; // 36
+ uint32 Race; // 37
+ uint32 Sex; // 38
+ uint32 Data; // 39 real ID to hair/facial hair
};
struct BattlemasterListEntry
{
- uint32 id; // 0
- int32 mapid[8]; // 1-8 mapid
- uint32 type; // 9 map type (3 - BG, 4 - arena)
- //uint32 canJoinAsGroup; // 10 (0 or 1)
- char* name[16]; // 11-26
- //uint32 nameFlags // 27 string flag, unused
- uint32 maxGroupSize; // 28 maxGroupSize, used for checking if queue as group
- uint32 HolidayWorldStateId; // 29 new 3.1
+ uint32 ID; // 0
+ int32 MapID[8]; // 1-8
+ uint32 InstanceType; // 9 map type (3 - BG, 4 - arena)
+ //uint32 GroupsAllowed; // 10
+ char* Name[16]; // 11-26
+ //uint32 Name_lang_mask; // 27
+ uint32 MaxGroupSize; // 28 used for checking if queue as group
+ uint32 HolidayWorldState; // 29
//uint32 MinLevel; // 30
- //uint32 SomeLevel; // 31, may be max level
+ //uint32 MaxLevel; // 31
};
struct CharacterFacialHairStylesEntry
{
- uint32 Race;
- uint32 Gender;
- uint32 Variation;
- // uint32 Geoset[5];
+ uint32 RaceID; // 0
+ uint32 SexID; // 1
+ uint32 VariationID; // 2
+ //uint32 Geoset[5]; // 3-7
};
enum CharSectionFlags
@@ -326,70 +331,71 @@ enum CharSectionType
struct CharSectionsEntry
{
- //uint32 Id;
- uint32 Race;
- uint32 Gender;
- uint32 GenType;
- //char* TexturePath[3];
- uint32 Flags;
- uint32 Type;
- uint32 Color;
+ //uint32 ID; // 0
+ uint32 RaceID; // 1
+ uint32 SexID; // 2
+ uint32 BaseSection; // 3
+ //char* TextureName[3]; // 4-6
+ uint32 Flags; // 7
+ uint32 VariationIndex; // 8
+ uint32 ColorIndex; // 9
- inline bool HasFlag(CharSectionFlags flag) const { return !!(Flags & flag); }
+ inline bool HasFlag(CharSectionFlags flag) const { return (Flags & flag) != 0; }
};
#define MAX_OUTFIT_ITEMS 24
struct CharStartOutfitEntry
{
- //uint32 Id; // 0
- uint8 Race; // 1
- uint8 Class; // 2
- uint8 Gender; // 3
- //uint8 Unused; // 4
- int32 ItemId[MAX_OUTFIT_ITEMS]; // 5-28
- //int32 ItemDisplayId[MAX_OUTFIT_ITEMS]; // 29-52 not required at server side
- //int32 ItemInventorySlot[MAX_OUTFIT_ITEMS]; // 53-76 not required at server side
+ //uint32 ID; // 0
+ uint8 RaceID; // 1
+ uint8 ClassID; // 2
+ uint8 SexID; // 3
+ //uint8 OutfitID; // 4
+ int32 ItemID[MAX_OUTFIT_ITEMS]; // 5-28
+ //int32 DisplayItemID[MAX_OUTFIT_ITEMS]; // 29-52 not required at server side
+ //int32 InventoryType[MAX_OUTFIT_ITEMS]; // 53-76 not required at server side
};
struct CharTitlesEntry
{
- uint32 ID; // 0, title ids, for example in Quest::GetCharTitleId()
- //uint32 unk1; // 1 flags?
- char* nameMale[16]; // 2-17
- // 18 string flag, unused
- char* nameFemale[16]; // 19-34
- // 35 string flag, unused
- uint32 bit_index; // 36 used in PLAYER_CHOSEN_TITLE and 1<<index in PLAYER__FIELD_KNOWN_TITLES
+ uint32 ID; // 0, title ids, for example in Quest::GetCharTitleId()
+ //uint32 ConditionID; // 1
+ char* Name[16]; // 2-17 male
+ //uint32 Name_lang_mask; // 18
+ char* Name1[16]; // 19-34 female
+ //uint32 Name1_lang_mask; // 35
+ uint32 MaskID; // 36 used in PLAYER_CHOSEN_TITLE and 1<<index in PLAYER__FIELD_KNOWN_TITLES
};
struct ChatChannelsEntry
{
- uint32 ChannelID; // 0
- uint32 flags; // 1
- char* pattern[16]; // 3-18
- // 19 string flags, unused
- //char* name[16]; // 20-35 unused
- // 36 string flag, unused
+ uint32 ID; // 0
+ uint32 Flags; // 1
+ //uint32 FactionGroup; // 2
+ char* Name[16]; // 3-18
+ //uint32 Name_lang_mask; // 19
+ //char* Shortcut[16]; // 20-35
+ //uint32 Shortcut_lang_mask; // 36
};
struct ChrClassesEntry
{
- uint32 ClassID; // 0
- // 1, unused
- uint32 powerType; // 2
- // 3-4, unused
- char* name[16]; // 5-20 unused
- // 21 string flag, unused
- //char* nameFemale[16]; // 21-36 unused, if different from base (male) case
- // 37 string flag, unused
- //char* nameNeutralGender[16]; // 38-53 unused, if different from base (male) case
- // 54 string flag, unused
- // 55, unused
- uint32 spellfamily; // 56
- // 57, unused
- uint32 CinematicSequence; // 58 id from CinematicSequences.dbc
- uint32 expansion; // 59 (0 - original race, 1 - tbc addon, ...)
+ uint32 ID; // 0
+ //uint32 DamageBonusStat; // 1
+ uint32 DisplayPower; // 2
+ //char* PetNameToken; // 3
+ char* Name[16]; // 4-19
+ //uint32 Name_lang_mask; // 20
+ //char* NameFemale[16]; // 21-36
+ //uint32 NameFemale_lang_mask; // 37
+ //char* NameMale[16]; // 38-53
+ //uint32 NameMale_lang_mask; // 54
+ //char* Filename; // 55
+ uint32 SpellClassSet; // 56
+ //uint32 Flags; // 57
+ uint32 CinematicSequenceID; // 58 ID from CinematicSequences.dbc
+ uint32 RequiredExpansion; // 59
};
enum ChrRacesAllianceType
@@ -408,105 +414,96 @@ enum ChrRacesFlags
struct ChrRacesEntry
{
- uint32 RaceID; // 0
- uint32 Flags; // 1
- uint32 FactionID; // 2 facton template id
- // 3 unused
- uint32 model_m; // 4
- uint32 model_f; // 5
- // 6 unused
- uint32 TeamID; // 7 (7-Alliance 1-Horde)
- uint32 CreatureType; // 8 Blizzlike Always 7 (humanoid).
- uint32 ResSicknessSpellID; // 9 Blizzlike DBC always 15007.
- // 10-11 unused
- uint32 CinematicSequence; // 12 id from CinematicSequences.dbc
- uint32 Alliance; // 13 faction (0 alliance, 1 horde, 2 not available?)
- char* name[16]; // 14-29 used for DBC language detection/selection
- // 30 string flags, unused
- //char* nameFemale[16]; // 31-46, if different from base (male) case
- // 47 string flags, unused
- //char* nameNeutralGender[16]; // 48-63, if different from base (male) case
- // 64 string flags, unused
- // 65-67 unused
- uint32 expansion; // 68 (0 - original race, 1 - tbc addon, ...)
-
- inline bool HasFlag(ChrRacesFlags flag) const { return !!(Flags & flag); }
+ uint32 ID; // 0
+ uint32 Flags; // 1
+ uint32 FactionID; // 2
+ //uint32 ExplorationSoundID; // 3
+ uint32 MaleDisplayID; // 4
+ uint32 FemaleDisplayID; // 5
+ //char* ClientPrefix; // 6
+ uint32 BaseLanguage; // 7 (7-Alliance 1-Horde)
+ uint32 CreatureType; // 8
+ uint32 ResSicknessSpellID; // 9
+ //uint32 SplashSoundID; // 10
+ //char* ClientFileString; // 11
+ uint32 CinematicSequenceID; // 12 ID from CinematicSequences.dbc
+ uint32 Alliance; // 13
+ char* Name[16]; // 14-29
+ //uint32 Name_lang_mask; // 30
+ //char* NameFemale[16]; // 31-46
+ //uint32 NameFemale_lang_mask; // 47
+ //char* NameMale[16]; // 48-63
+ //uint32 NameMale_lang_mask; // 64
+ //char* FacialHairCustomization[2]; // 65-66
+ //char* HairCustomization; // 67
+ uint32 RequiredExpansion; // 68
+
+ inline bool HasFlag(ChrRacesFlags flag) const { return (Flags & flag) != 0; }
};
struct CinematicCameraEntry
{
uint32 ID; // 0
- char const* Model; // 1 Model filename (translate .mdx to .m2)
- uint32 SoundID; // 2 Sound ID (voiceover for cinematic)
- DBCPosition3D Origin; // 3-5 Position in map used for basis for M2 co-ordinates
- float OriginFacing; // 6 Orientation in map used for basis for M2 co-ordinates
+ char* Model; // 1 Model filename (translate .mdx to .m2)
+ uint32 SoundID; // 2 Sound ID (voiceover for cinematic)
+ DBCPosition3D Origin; // 3-5 Position in map used for basis for M2 co-ordinates
+ float OriginFacing; // 6 Orientation in map used for basis for M2 co-ordinates
};
struct CinematicSequencesEntry
{
- uint32 Id; // 0 index
- //uint32 unk1; // 1 always 0
- uint32 cinematicCamera; // 2 id in CinematicCamera.dbc
- // 3-9 always 0
+ uint32 ID; // 0
+ //uint32 SoundID; // 1
+ uint32 Camera[8]; // 2-9 ID in CinematicCamera.dbc
};
struct CreatureDisplayInfoEntry
{
- uint32 Displayid; // 0 m_ID
- uint32 ModelId; // 1 m_modelID
- // 2 m_soundID
- uint32 ExtraId; // 3 m_extendedDisplayInfoID
- float scale; // 4 m_creatureModelScale
- // 5 m_creatureModelAlpha
- // 6-8 m_textureVariation[3]
- // 9 m_portraitTextureName
- // 10 m_sizeClass
- // 11 m_bloodID
- // 12 m_NPCSoundID
- // 13 m_particleColorID
- // 14 m_creatureGeosetData
- // 15 m_objectEffectPackageID
+ uint32 ID; // 0
+ uint32 ModelID; // 1
+ //uint32 SoundID; // 2
+ uint32 ExtendedDisplayInfoID; // 3
+ float CreatureModelScale; // 4
+ //uint32 CreatureModelAlpha; // 5
+ //char* TextureVariation[3]; // 6-8
+ //char* PortraitTextureName; // 9
+ //uint32 SizeClass; // 10
+ //uint32 BloodID; // 11
+ //uint32 NPCSoundID; // 12
+ //uint32 ParticleColorID; // 13
+ //uint32 CreatureGeosetData; // 14
+ //uint32 ObjectEffectPackageID; // 15
};
struct CreatureDisplayInfoExtraEntry
{
- //uint32 Id; // 0
- uint32 Race; // 1
- uint32 Gender; // 2
- //uint32 SkinColor; // 3
- //uint32 FaceType; // 4
- //uint32 HairType; // 5
- //uint32 HairStyle; // 6
- //uint32 FacialHair; // 7
- //uint32 HelmDisplayId; // 8
- //uint32 ShoulderDisplayId; // 9
- //uint32 ShirtDisplayId; // 10
- //uint32 ChestDisplayId; // 11
- //uint32 BeltDisplayId; // 12
- //uint32 LegsDisplayId; // 13
- //uint32 BootsDisplayId; // 14
- //uint32 WristDisplayId; // 15
- //uint32 GlovesDisplayId; // 16
- //uint32 TabardDisplayId; // 17
- //uint32 CloakDisplayId; // 18
- //uint32 CanEquip; // 19
- //char const* Texture; // 20
+ //uint32 ID; // 0
+ uint32 DisplayRaceID; // 1
+ uint32 DisplaySexID; // 2
+ //uint32 SkinID; // 3
+ //uint32 FaceID; // 4
+ //uint32 HairStyleID; // 5
+ //uint32 HairColorID; // 6
+ //uint32 FacialHairID; // 7
+ //uint32 NPCItemDisplay[11]; // 8-18
+ //uint32 Flags; // 19
+ //char* BakeName; // 20
};
struct CreatureFamilyEntry
{
- uint32 ID; // 0 m_ID
- float minScale; // 1 m_minScale
- uint32 minScaleLevel; // 2 m_minScaleLevel
- float maxScale; // 3 m_maxScale
- uint32 maxScaleLevel; // 4 m_maxScaleLevel
- uint32 skillLine[2]; // 5-6 m_skillLine
- uint32 petFoodMask; // 7 m_petFoodMask
- int32 petTalentType; // 8 m_petTalentType
- // 9 m_categoryEnumID
- char* Name[16]; // 10-25 m_name_lang
- // 26 string flags
- // 27 m_iconFile
+ uint32 ID; // 0
+ float MinScale; // 1
+ uint32 MinScaleLevel; // 2
+ float MaxScale; // 3
+ uint32 MaxScaleLevel; // 4
+ uint32 SkillLine[2]; // 5-6
+ uint32 PetFoodMask; // 7
+ int32 PetTalentType; // 8
+ //int32 CategoryEnumID; // 9
+ char* Name[16]; // 10-25
+ //uint32 Name_lang_mask; // 26
+ //char* IconFile; // 27
};
enum CreatureModelDataFlags
@@ -516,33 +513,39 @@ enum CreatureModelDataFlags
struct CreatureModelDataEntry
{
- uint32 Id;
- uint32 Flags;
- char* ModelPath;
- //uint32 Unk1;
- float Scale; // Used in calculation of unit collision data
- //int32 Unk2
- //int32 Unk3
- //uint32 Unk4
- //uint32 Unk5
- //float Unk6
- //uint32 Unk7
- //float Unk8
- //uint32 Unk9
- //uint32 Unk10
- //float CollisionWidth;
- float CollisionHeight;
- float MountHeight; // Used in calculation of unit collision data when mounted
- //float Unks[11]
-
- inline bool HasFlag(CreatureModelDataFlags flag) const { return !!(Flags & flag); }
+ uint32 ID; // 0
+ uint32 Flags; // 1
+ char* ModelName; // 2
+ //uint32 SizeClass; // 3
+ float ModelScale; // 4 Used in calculation of unit collision data
+ //int32 BloodID; // 5
+ //int32 FootprintTextureID; // 6
+ //uint32 FootprintTextureLength; // 7
+ //uint32 FootprintTextureWidth; // 8
+ //float FootprintParticleScale; // 9
+ //uint32 FoleyMaterialID; // 10
+ //float FootstepShakeSize; // 11
+ //uint32 DeathThudShakeSize; // 12
+ //uint32 SoundID; // 13
+ //float CollisionWidth; // 14
+ float CollisionHeight; // 15
+ float MountHeight; // 16 Used in calculation of unit collision data when mounted
+ //float GeoBoxMin[3]; // 17-19
+ //float GeoBoxMax[3]; // 20-22
+ //float WorldEffectScale; // 23
+ //float AttachedEffectScale; // 24
+ //float MissileCollisionRadius; // 25
+ //float MissileCollisionPush; // 26
+ //float MissileCollisionRaise; // 27
+
+ inline bool HasFlag(CreatureModelDataFlags flag) const { return (Flags & flag) != 0; }
};
struct CreatureSpellDataEntry
{
- uint32 ID; // 0 m_ID
- uint32 spellId[MAX_CREATURE_SPELL_DATA_SLOT]; // 1-4 m_spells[4]
- //uint32 availability[MAX_CREATURE_SPELL_DATA_SLOT]; // 4-7 m_availability[4]
+ uint32 ID; // 0
+ uint32 Spells[MAX_CREATURE_SPELL_DATA_SLOT]; // 1-4
+ //uint32 Availability[MAX_CREATURE_SPELL_DATA_SLOT]; // 4-7
};
enum CreatureTypeEntryFlags
@@ -552,125 +555,128 @@ enum CreatureTypeEntryFlags
struct CreatureTypeEntry
{
- uint32 ID; // 0 m_ID
- //char* Name[16]; // 1-16 name
- // 17 string flags
- //uint32 Flags; // 18 Critters, non-combat pets, gas cloud. (called Flags in struct)
+ uint32 ID; // 0
+ //char* Name[16]; // 1-16
+ //uint32 Name_lang_mask; // 17
+ //uint32 Flags; // 18
};
/* not used
struct CurrencyCategoryEntry
{
- uint32 ID; // 0
- uint32 Unk1; // 1 0 for known categories and 3 for unknown one (3.0.9)
- char* Name[16]; // 2-17 name
- // // 18 string flags
+ uint32 ID; // 0
+ uint32 Flags; // 1
+ char* Name[16]; // 2-17
+ uint32 Name_lang_mask; // 18
};
*/
struct CurrencyTypesEntry
{
- //uint32 ID; // 0 not used
- uint32 ItemId; // 1 used as real index
- //uint32 Category; // 2 may be category
- uint32 BitIndex; // 3 bit index in PLAYER_FIELD_KNOWN_CURRENCIES (1 << (index-1))
+ //uint32 ID; // 0
+ uint32 ItemID; // 1
+ //uint32 CategoryID; // 2
+ uint32 BitIndex; // 3 bit index in PLAYER_FIELD_KNOWN_CURRENCIES (1 << (index-1))
};
struct DestructibleModelDataEntry
{
- uint32 Id;
- //uint32 State0ImpactEffectDoodadSet;
- //uint32 State0AmbientDoodadSet;
- uint32 State1Wmo;
- //uint32 State1DestructionDoodadSet;
- //uint32 State1ImpactEffectDoodadSet;
- //uint32 State1AmbientDoodadSet;
- uint32 State2Wmo;
- //uint32 State2DestructionDoodadSet;
- //uint32 State2ImpactEffectDoodadSet;
- //uint32 State2AmbientDoodadSet;
- uint32 State3Wmo;
- //uint32 State3InitDoodadSet;
- //uint32 State3AmbientDoodadSet;
- //uint32 EjectDirection;
- uint32 State0Wmo;
- //uint32 DoNotHighlight;
- //uint32 HealEffect;
- //uint32 HealEffectSpeed;
+ uint32 ID; // 0
+ //uint32 State0ImpactEffectDoodadSet; // 1
+ //uint32 State0AmbientDoodadSet; // 2
+ uint32 State1Wmo; // 3
+ //uint32 State1DestructionDoodadSet; // 4
+ //uint32 State1ImpactEffectDoodadSet; // 5
+ //uint32 State1AmbientDoodadSet; // 6
+ uint32 State2Wmo; // 7
+ //uint32 State2DestructionDoodadSet; // 8
+ //uint32 State2ImpactEffectDoodadSet; // 9
+ //uint32 State2AmbientDoodadSet; // 10
+ uint32 State3Wmo; // 11
+ //uint32 State3InitDoodadSet; // 12
+ //uint32 State3AmbientDoodadSet; // 13
+ //uint32 EjectDirection; // 14
+ uint32 RepairGroundFx; // 15
+ //uint32 DoNotHighlight; // 16
+ //uint32 HealEffect; // 17
+ //uint32 HealEffectSpeed; // 18
};
struct DungeonEncounterEntry
{
- uint32 id; // 0 unique id
- uint32 mapId; // 1 map id
- uint32 difficulty; // 2 instance mode
- //uint32 unk0; // 3
- uint32 encounterIndex; // 4 encounter index for creating completed mask
- char* encounterName[16]; // 5-20 encounter name
- //uint32 nameFlags; // 21
- //uint32 unk1; // 22
+ uint32 ID; // 0
+ uint32 MapID; // 1
+ uint32 Difficulty; // 2
+ //uint32 OrderIndex; // 3
+ uint32 Bit; // 4 encounter index for creating completed mask
+ char* Name[16]; // 5-20
+ //uint32 Name_lang_mask; // 21
+ //uint32 SpellIconID; // 22
};
struct DurabilityCostsEntry
{
- uint32 Itemlvl; // 0
- uint32 multiplier[29]; // 1-29
+ uint32 ID; // 0
+ uint32 WeaponSubClassCost[21]; // 1-21
+ uint32 ArmorSubClassCost[8]; // 22-29
};
struct DurabilityQualityEntry
{
- uint32 Id; // 0
- float quality_mod; // 1
+ uint32 ID; // 0
+ float Data; // 1
};
struct EmotesEntry
{
- uint32 Id; // 0
- //char* Name; // 1, internal name
- //uint32 AnimationId; // 2, ref to animationData
- uint32 Flags; // 3, bitmask, may be unit_flags
- uint32 EmoteType; // 4, Can be 0, 1 or 2 (determine how emote are shown)
- uint32 UnitStandState; // 5, uncomfirmed, may be enum UnitStandStateType
- //uint32 SoundId; // 6, ref to soundEntries
+ uint32 ID; // 0
+ //char* EmoteSlashCommand; // 1 internal name
+ //uint32 AnimID; // 2 ref to animationData
+ uint32 EmoteFlags; // 3 bitmask, may be unit_flags
+ uint32 EmoteSpecProc; // 4 Can be 0, 1 or 2 (determine how emote are shown)
+ uint32 EmoteSpecProcParam; // 5 unconfirmed, may be enum UnitStandStateType
+ //uint32 EventSoundID; // 6
};
struct EmotesTextEntry
{
- uint32 Id;
- uint32 textid;
+ uint32 ID; // 0
+ //char* Name; // 1
+ uint32 EmoteID; // 2
+ //uint32 EmoteText[16]; // 3-18
};
struct EmotesTextSoundEntry
{
- uint32 Id; // 0
- uint32 EmotesTextId; // 1
- uint32 RaceId; // 2
- uint32 SexId; // 3, 0 male / 1 female
- uint32 SoundId; // 4
+ uint32 ID; // 0
+ uint32 EmotesTextID; // 1
+ uint32 RaceID; // 2
+ uint32 SexID; // 3 0 male / 1 female
+ uint32 SoundID; // 4
};
struct FactionEntry
{
- uint32 ID; // 0 m_ID
- int32 reputationListID; // 1 m_reputationIndex
- uint32 BaseRepRaceMask[4]; // 2-5 m_reputationRaceMask
- uint32 BaseRepClassMask[4]; // 6-9 m_reputationClassMask
- int32 BaseRepValue[4]; // 10-13 m_reputationBase
- uint32 ReputationFlags[4]; // 14-17 m_reputationFlags
- uint32 team; // 18 m_parentFactionID
- float spilloverRateIn; // 19 Faction gains incoming rep * spilloverRateIn
- float spilloverRateOut; // 20 Faction outputs rep * spilloverRateOut as spillover reputation
- uint32 spilloverMaxRankIn; // 21 The highest rank the faction will profit from incoming spillover
- //uint32 spilloverRank_unk; // 22 It does not seem to be the max standing at which a faction outputs spillover ...so no idea
- char* name[16]; // 23-38 m_name_lang
- // 39 string flags
- //char* description[16]; // 40-55 m_description_lang
- // 56 string flags
+ uint32 ID; // 0
+ int32 ReputationIndex; // 1
+ uint32 ReputationRaceMask[4]; // 2-5
+ uint32 ReputationClassMask[4]; // 6-9
+ int32 ReputationBase[4]; // 10-13
+ uint32 ReputationFlags[4]; // 14-17
+ uint32 ParentFactionID; // 18
+ float ParentFactionMod[2]; // 19-20 [0] Faction gains incoming rep * spilloverRateIn
+ // [1] Faction outputs rep * spilloverRateOut as spillover reputation
+ uint32 ParentFactionCap[2]; // 21-22 [0] The highest rank the faction will profit from incoming spillover
+ // [1] It does not seem to be the max standing at which a faction outputs spillover ...so no idea
+ char* Name[16]; // 23-38
+ //uint32 Name_lang_mask; // 39
+ //char* Description[16]; // 40-55
+ //uint32 Description_lang_mask; // 56
// helpers
bool CanHaveReputation() const
{
- return reputationListID >= 0;
+ return ReputationIndex >= 0;
}
};
@@ -678,88 +684,85 @@ struct FactionEntry
struct FactionTemplateEntry
{
- uint32 ID; // 0 m_ID
- uint32 faction; // 1 m_faction
- uint32 factionFlags; // 2 m_flags
- uint32 ourMask; // 3 m_factionGroup
- uint32 friendlyMask; // 4 m_friendGroup
- uint32 hostileMask; // 5 m_enemyGroup
- uint32 enemyFaction[MAX_FACTION_RELATIONS]; // 6 m_enemies[MAX_FACTION_RELATIONS]
- uint32 friendFaction[MAX_FACTION_RELATIONS]; // 10 m_friend[MAX_FACTION_RELATIONS]
- //------------------------------------------------------- end structure
+ uint32 ID; // 0
+ uint32 Faction; // 1
+ uint32 Flags; // 2
+ uint32 FactionGroup; // 3
+ uint32 FriendGroup; // 4
+ uint32 EnemyGroup; // 5
+ uint32 Enemies[MAX_FACTION_RELATIONS]; // 6-9
+ uint32 Friend[MAX_FACTION_RELATIONS]; // 10-13
// helpers
bool IsFriendlyTo(FactionTemplateEntry const& entry) const
{
- if (entry.faction)
+ if (entry.Faction)
{
for (int i = 0; i < MAX_FACTION_RELATIONS; ++i)
- if (enemyFaction[i] == entry.faction)
+ if (Enemies[i] == entry.Faction)
return false;
for (int i = 0; i < MAX_FACTION_RELATIONS; ++i)
- if (friendFaction[i] == entry.faction)
+ if (Friend[i] == entry.Faction)
return true;
}
- return (friendlyMask & entry.ourMask) || (ourMask & entry.friendlyMask);
+ return (FriendGroup & entry.FactionGroup) || (FactionGroup & entry.FriendGroup);
}
bool IsHostileTo(FactionTemplateEntry const& entry) const
{
- if (entry.faction)
+ if (entry.Faction)
{
for (int i = 0; i < MAX_FACTION_RELATIONS; ++i)
- if (enemyFaction[i] == entry.faction)
+ if (Enemies[i] == entry.Faction)
return true;
for (int i = 0; i < MAX_FACTION_RELATIONS; ++i)
- if (friendFaction[i] == entry.faction)
+ if (Friend[i] == entry.Faction)
return false;
}
- return (hostileMask & entry.ourMask) != 0;
+ return (EnemyGroup & entry.FactionGroup) != 0;
}
- bool IsHostileToPlayers() const { return (hostileMask & FACTION_MASK_PLAYER) !=0; }
+ bool IsHostileToPlayers() const { return (EnemyGroup & FACTION_MASK_PLAYER) !=0; }
bool IsNeutralToAll() const
{
for (int i = 0; i < MAX_FACTION_RELATIONS; ++i)
- if (enemyFaction[i] != 0)
+ if (Enemies[i] != 0)
return false;
- return hostileMask == 0 && friendlyMask == 0;
+ return EnemyGroup == 0 && FriendGroup == 0;
}
- bool IsContestedGuardFaction() const { return (factionFlags & FACTION_TEMPLATE_FLAG_CONTESTED_GUARD) != 0; }
+ bool IsContestedGuardFaction() const { return (Flags & FACTION_TEMPLATE_FLAG_CONTESTED_GUARD) != 0; }
};
struct GameObjectDisplayInfoEntry
{
- uint32 Displayid; // 0 m_ID
- char* filename; // 1
- //uint32 unk1[10]; //2-11
- float minX;
- float minY;
- float minZ;
- float maxX;
- float maxY;
- float maxZ;
- //uint32 transport; //18
+ uint32 ID; // 0
+ char* ModelName; // 1
+ //uint32 Sound[10]; // 2-11
+ DBCPosition3D GeoBoxMin; // 12-14
+ DBCPosition3D GeoBoxMax; // 15-17
+ //uint32 ObjectEffectPackageID; // 18
};
struct GemPropertiesEntry
{
- uint32 ID;
- uint32 spellitemenchantement;
- uint32 color;
+ uint32 ID; // 0
+ uint32 EnchantID; // 1
+ //uint32 MaxCountInv; // 2
+ //uint32 MaxCountItem; // 3
+ uint32 Type; // 4
};
struct GlyphPropertiesEntry
{
- uint32 Id;
- uint32 SpellId;
- uint32 TypeFlags;
- uint32 Unk1; // GlyphIconId (SpellIcon.dbc)
+ uint32 ID; // 0
+ uint32 SpellID; // 1
+ uint32 GlyphSlotFlags; // 2
+ uint32 SpellIconID; // 3
};
struct GlyphSlotEntry
{
- uint32 Id;
- uint32 TypeFlags;
- uint32 Order;
+ uint32 ID; // 0
+ uint32 Type; // 1
+ uint32 Tooltip; // 2
};
// All Gt* DBC store data for 100 levels, some by 100 per class/race
@@ -769,79 +772,81 @@ struct GlyphSlotEntry
struct GtBarberShopCostBaseEntry
{
- float cost;
+ float Data; // 0
};
struct GtCombatRatingsEntry
{
- float ratio;
+ float Data; // 0
};
struct GtChanceToMeleeCritBaseEntry
{
- float base;
+ float Data; // 0
};
struct GtChanceToMeleeCritEntry
{
- float ratio;
+ float Data; // 0
};
struct GtChanceToSpellCritBaseEntry
{
- float base;
+ float Data; // 0
};
struct GtNPCManaCostScalerEntry
{
- float ratio;
+ float Data; // 0
};
struct GtChanceToSpellCritEntry
{
- float ratio;
+ float Data; // 0
};
struct GtOCTClassCombatRatingScalarEntry
{
- float ratio;
+ float Data; // 0
};
struct GtOCTRegenHPEntry
{
- float ratio;
+ float Data; // 0
};
-//struct GtOCTRegenMPEntry
-//{
-// float ratio;
-//};
+/*
+struct GtOCTRegenMPEntry
+{
+ float Data; // 0
+};
+*/
struct GtRegenHPPerSptEntry
{
- float ratio;
+ float Data; // 0
};
struct GtRegenMPPerSptEntry
{
- float ratio;
+ float Data; // 0
};
-/* no used
+/*
struct HolidayDescriptionsEntry
{
- uint32 ID; // 0, m_holidayDescriptionID
- //char* name[16] // 1-16 m_name_lang
- // 17 name flags
+ uint32 ID; // 0
+ char* Description[16]; // 1-16
+ uint32 Description_lang_mask; // 17
};
*/
-/* no used
+/*
struct HolidayNamesEntry
{
- uint32 ID; // 0, m_holidayNameID
- //char* name[16] // 1-16 m_name_lang
- // 17 name flags
+ uint32 ID; // 0
+ char* Name[16]; // 1-16
+ uint32 Name_lang_mask; // 17
};
*/
@@ -851,107 +856,112 @@ struct HolidayNamesEntry
struct HolidaysEntry
{
- uint32 Id; // 0 m_ID
- uint32 Duration[MAX_HOLIDAY_DURATIONS]; // 1-10 m_duration
- uint32 Date[MAX_HOLIDAY_DATES]; // 11-36 m_date (dates in unix time starting at January, 1, 2000)
- uint32 Region; // 37 m_region (wow region)
- uint32 Looping; // 38 m_looping
- uint32 CalendarFlags[MAX_HOLIDAY_FLAGS]; // 39-48 m_calendarFlags
- //uint32 holidayNameId; // 49 m_holidayNameID (HolidayNames.dbc)
- //uint32 holidayDescriptionId; // 50 m_holidayDescriptionID (HolidayDescriptions.dbc)
- char* TextureFilename; // 51 m_textureFilename
- uint32 Priority; // 52 m_priority
- int32 CalendarFilterType; // 53 m_calendarFilterType (-1 = Fishing Contest, 0 = Unk, 1 = Darkmoon Festival, 2 = Yearly holiday)
- //uint32 flags; // 54 m_flags (0 = Darkmoon Faire, Fishing Contest and Wotlk Launch, rest is 1)
+ uint32 ID; // 0
+ uint32 Duration[MAX_HOLIDAY_DURATIONS]; // 1-10
+ uint32 Date[MAX_HOLIDAY_DATES]; // 11-36 dates in unix time starting at January, 1, 2000
+ uint32 Region; // 37 WoW region
+ uint32 Looping; // 38
+ uint32 CalendarFlags[MAX_HOLIDAY_FLAGS]; // 39-48
+ //uint32 HolidayNameID; // 49 HolidayNames.dbc
+ //uint32 HolidayDescriptionID; // 50 HolidayDescriptions.dbc
+ char* TextureFilename; // 51
+ uint32 Priority; // 52
+ int32 CalendarFilterType; // 53
+ //uint32 Flags; // 54 0 = Darkmoon Faire, Fishing Contest and Wotlk Launch, rest is 1
};
struct ItemEntry
{
- uint32 ID; // 0
- uint32 Class; // 1
- uint32 SubClass; // 2 some items have strange subclasses
- int32 SoundOverrideSubclass; // 3
- int32 Material; // 4
- uint32 DisplayId; // 5
- uint32 InventoryType; // 6
- uint32 Sheath; // 7
+ uint32 ID; // 0
+ uint32 ClassID; // 1
+ uint32 SubclassID; // 2
+ int32 SoundOverrideSubclassID; // 3
+ int32 Material; // 4
+ uint32 DisplayInfoID; // 5
+ uint32 InventoryType; // 6
+ uint32 SheatheType; // 7
};
struct ItemBagFamilyEntry
{
- uint32 ID; // 0
- //char* name[16] // 1-16 m_name_lang
- // // 17 name flags
+ uint32 ID; // 0
+ //char* Name[16]; // 1-16
+ //uint32 Name_lang_mask; // 17
};
+/*
struct ItemDisplayInfoEntry
{
- uint32 ID; // 0 m_ID
- // 1 m_modelName[2]
- // 2 m_modelTexture[2]
- // 3 m_inventoryIcon
- // 4 m_geosetGroup[3]
- // 5 m_flags
- // 6 m_spellVisualID
- // 7 m_groupSoundIndex
- // 8 m_helmetGeosetVis[2]
- // 9 m_texture[2]
- // 10 m_itemVisual[8]
- // 11 m_particleColorID
-};
-
-//struct ItemCondExtCostsEntry
-//{
-// uint32 ID;
-// uint32 condExtendedCost; // ItemTemplate::CondExtendedCost
-// uint32 itemextendedcostentry; // ItemTemplate::ExtendedCost
-// uint32 arenaseason; // arena season number(1-4)
-//};
+ uint32 ID; // 0
+ char* ModelName[2]; // 1-2
+ char* ModelTexture[2]; // 3-4
+ char* InventoryIcon[2]; // 5-6
+ uint32 GeosetGroup[3]; // 7-9
+ uint32 Flags; // 10
+ uint32 SpellVisualID; // 11
+ uint32 GroupSoundIndex; // 12
+ uint32 HelmetGeosetVisID[2]; // 13-14
+ char* Texture[8]; // 15-22
+ int32 ItemVisual; // 23
+ uint32 ParticleColorID; // 24
+};
+*/
+
+/*
+struct ItemCondExtCostsEntry
+{
+ uint32 ID; // 0
+ uint32 CondExtendedCost; // 1 ItemTemplate::CondExtendedCost
+ uint32 ItemExtendedCostEntry; // 2 ItemTemplate::ExtendedCost
+ uint32 ArenaSeason; // 3 arena season number (1-4)
+};
+*/
#define MAX_ITEM_EXTENDED_COST_REQUIREMENTS 5
struct ItemExtendedCostEntry
{
- uint32 ID; // 0 extended-cost entry id
- uint32 reqhonorpoints; // 1 required honor points
- uint32 reqarenapoints; // 2 required arena points
- uint32 reqarenaslot; // 3 arena slot restrctions (min slot value)
- uint32 reqitem[MAX_ITEM_EXTENDED_COST_REQUIREMENTS]; // 4-8 required item id
- uint32 reqitemcount[MAX_ITEM_EXTENDED_COST_REQUIREMENTS]; // 9-14 required count of 1st item
- uint32 reqpersonalarenarating; // 15 required personal arena rating};
+ uint32 ID; // 0
+ uint32 HonorPoints; // 1 required honor points
+ uint32 ArenaPoints; // 2 required arena points
+ uint32 ArenaBracket; // 3 arena slot restrictions (min slot value)
+ uint32 ItemID[MAX_ITEM_EXTENDED_COST_REQUIREMENTS]; // 4-8 required item id
+ uint32 ItemCount[MAX_ITEM_EXTENDED_COST_REQUIREMENTS]; // 9-13 required count of item
+ uint32 RequiredArenaRating; // 14 required personal arena rating
+ //uint32 ItemPurchaseGroup; // 15
};
struct ItemLimitCategoryEntry
{
- uint32 ID; // 0 Id
- //char* name[16] // 1-16 m_name_lang
- // 17 name flags
- uint32 maxCount; // 18, max allowed equipped as item or in gem slot
- uint32 mode; // 19, 0 = have, 1 = equip (enum ItemLimitCategoryMode)
+ uint32 ID; // 0
+ //char* Name[16] // 1-16
+ //uint32 Name_lang_mask; // 17
+ uint32 Quantity; // 18 max allowed equipped as item or in gem slot
+ uint32 Flags; // 19 enum ItemLimitCategoryMode
};
#define MAX_ITEM_ENCHANTMENT_EFFECTS 3
struct ItemRandomPropertiesEntry
{
- uint32 ID; // 0 m_ID
- //char* internalName // 1 m_Name
- uint32 enchant_id[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 2-4 m_Enchantment
- // 5-6 unused
- char* nameSuffix[16]; // 7-22 m_name_lang
- // 23 name flags
+ uint32 ID; // 0
+ //char* InternalName; // 1
+ uint32 Enchantment[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 2-4
+ //uint32 UnusedEnchantment[2]; // 5-6
+ char* Name[16]; // 7-22
+ //uint32 Name_lang_mask; // 23
};
struct ItemRandomSuffixEntry
{
- uint32 ID; // 0 m_ID
- char* nameSuffix[16]; // 1-16 m_name_lang
- // 17, name flags
- // 18 m_internalName
- uint32 enchant_id[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 19-21 m_enchantment
- //uint32 unk1[2] // 22-23 unknown
- uint32 prefix[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 24-26 m_allocationPct
- //uint32 unk2[2] // 27-28 unknown
+ uint32 ID; // 0
+ char* Name[16]; // 1-16
+ //uint32 Name_lang_mask; // 17
+ //char* InternalName; // 18
+ uint32 Enchantment[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 19-21
+ //uint32 UnusedEnchantment[2] // 22-23
+ uint32 AllocationPct[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 24-26
+ //uint32 UnusedAllocationPct[2] // 27-28
};
#define MAX_ITEM_SET_ITEMS 10
@@ -959,150 +969,144 @@ struct ItemRandomSuffixEntry
struct ItemSetEntry
{
- //uint32 id // 0 m_ID
- char* name[16]; // 1-16 m_name_lang
- // 17 string flags, unused
- uint32 itemId[MAX_ITEM_SET_ITEMS]; // 18-27 m_itemID
- //uint32 unknown[7]; // 28-34 unk, all 0
- uint32 spells[MAX_ITEM_SET_SPELLS]; // 35-42 m_setSpellID
- uint32 items_to_triggerspell[MAX_ITEM_SET_SPELLS]; // 43-50 m_setThreshold
- uint32 required_skill_id; // 51 m_requiredSkill
- uint32 required_skill_value; // 52 m_requiredSkillRank
+ //uint32 ID; // 0
+ char* Name[16]; // 1-16
+ //uint32 Name_lang_mask; // 17
+ uint32 ItemID[MAX_ITEM_SET_ITEMS]; // 18-27
+ //uint32 UnusedItemID[7]; // 28-34
+ uint32 SetSpellID[MAX_ITEM_SET_SPELLS]; // 35-42
+ uint32 SetThreshold[MAX_ITEM_SET_SPELLS]; // 43-50
+ uint32 RequiredSkill; // 51
+ uint32 RequiredSkillRank; // 52
};
struct LFGDungeonEntry
{
- uint32 ID; // 0
- char* name[16]; // 1-17 Name lang
- uint32 minlevel; // 18
- uint32 maxlevel; // 19
- uint32 reclevel; // 20
- uint32 recminlevel; // 21
- uint32 recmaxlevel; // 22
- int32 map; // 23
- uint32 difficulty; // 24
- uint32 flags; // 25
- uint32 type; // 26
- //uint32 unk; // 27
- //char* iconname; // 28
- uint32 expansion; // 29
- //uint32 unk4; // 30
- uint32 grouptype; // 31
- //char* desc[16]; // 32-47 Description
+ uint32 ID; // 0
+ char* Name[16]; // 1-16
+ //uint32 Name_lang_mask; // 17
+ uint32 MinLevel; // 18
+ uint32 MaxLevel; // 19
+ uint32 TargetLevel; // 20
+ uint32 TargetLevelMin; // 21
+ uint32 TargetLevelMax; // 22
+ int32 MapID; // 23
+ uint32 Difficulty; // 24
+ uint32 Flags; // 25
+ uint32 TypeID; // 26
+ //int32 Faction; // 27
+ //char* TextureFilename; // 28
+ uint32 ExpansionLevel; // 29
+ //uint32 OrderIndex; // 30
+ uint32 GroupID; // 31
+ //char* Description[16]; // 32-47
+ //uint32 Description_lang_mask; // 48
+
// Helpers
- uint32 Entry() const { return ID + (type << 24); }
+ uint32 Entry() const { return ID + (TypeID << 24); }
};
struct LightEntry
{
- uint32 Id;
- uint32 MapId;
- float X;
- float Y;
- float Z;
- //float FalloffStart;
- //float FalloffEnd;
- //uint32 SkyAndFog;
- //uint32 WaterSettings;
- //uint32 SunsetParams;
- //uint32 OtherParams;
- //uint32 DeathParams;
- //uint32 Unknown;
- //uint32 Unknown;
- //uint32 Unknown;
+ uint32 ID; // 0
+ uint32 ContinentID; // 1
+ DBCPosition3D GameCoords; // 2-4
+ //float GameFalloffStart; // 5
+ //float GameFalloffEnd; // 6
+ //uint32 LightParamsID[8]; // 7-14
};
struct LiquidTypeEntry
{
- uint32 Id;
- //char* Name;
- //uint32 Flags;
- uint32 Type;
- //uint32 SoundId;
- uint32 SpellId;
- //float MaxDarkenDepth;
- //float FogDarkenIntensity;
- //float AmbDarkenIntensity;
- //float DirDarkenIntensity;
- //uint32 LightID;
- //float ParticleScale;
- //uint32 ParticleMovement;
- //uint32 ParticleTexSlots;
- //uint32 LiquidMaterialID;
- //char* Texture[6];
- //uint32 Color[2];
- //float Unk1[18];
- //uint32 Unk2[4];
+ uint32 ID; // 0
+ //char* Name; // 1
+ //uint32 Flags; // 2
+ uint32 SoundBank; // 3
+ //uint32 SoundID; // 4
+ uint32 SpellID; // 5
+ //float MaxDarkenDepth; // 6
+ //float FogDarkenIntensity; // 7
+ //float AmbDarkenIntensity; // 8
+ //float DirDarkenIntensity; // 9
+ //uint32 LightID; // 10
+ //float ParticleScale; // 11
+ //uint32 ParticleMovement; // 12
+ //uint32 ParticleTexSlots; // 13
+ //uint32 MaterialID; // 14
+ //char* Texture[6]; // 15-20
+ //uint32 Color[2]; // 21-22
+ //float Unk1[18]; // 23-40
+ //uint32 Unk2[4]; // 41-44
};
#define MAX_LOCK_CASE 8
struct LockEntry
{
- uint32 ID; // 0 m_ID
- uint32 Type[MAX_LOCK_CASE]; // 1-8 m_Type
- uint32 Index[MAX_LOCK_CASE]; // 9-16 m_Index
- uint32 Skill[MAX_LOCK_CASE]; // 17-24 m_Skill
- //uint32 Action[MAX_LOCK_CASE]; // 25-32 m_Action
+ uint32 ID; // 0
+ uint32 Type[MAX_LOCK_CASE]; // 1-8
+ uint32 Index[MAX_LOCK_CASE]; // 9-16
+ uint32 Skill[MAX_LOCK_CASE]; // 17-24
+ //uint32 Action[MAX_LOCK_CASE]; // 25-32
};
struct MailTemplateEntry
{
- uint32 ID; // 0
- //char* subject[16]; // 1-16
- // 17 name flags, unused
- char* content[16]; // 18-33
+ uint32 ID; // 0
+ //char* Subject[16]; // 1-16
+ //uint32 Subject_lang_mask; // 17
+ char* Body[16]; // 18-33
+ //uint32 Body_lang_mask; // 34
};
struct MapEntry
{
- uint32 MapID; // 0
- //char* internalname; // 1 unused
- uint32 map_type; // 2
- uint32 Flags; // 3
- // 4 0 or 1 for battlegrounds (not arenas)
- char* name[16]; // 5-20
- // 21 name flags, unused
- uint32 linked_zone; // 22 common zone for instance and continent map
- //char* hordeIntro[16]; // 23-38 text for PvP Zones
- // 39 intro text flags
- //char* allianceIntro[16]; // 40-55 text for PvP Zones
- // 56 intro text flags
- uint32 multimap_id; // 57
- //float BattlefieldMapIconScale; // 58
- int32 entrance_map; // 59 map_id of entrance map
- float entrance_x; // 60 entrance x coordinate (if exist single entry)
- float entrance_y; // 61 entrance y coordinate (if exist single entry)
+ uint32 ID; // 0
+ //char* Directory; // 1
+ uint32 InstanceType; // 2
+ uint32 Flags; // 3
+ //uint32 MapType; // 4 0 or 1 for battlegrounds (not arenas)
+ char* MapName[16]; // 5-20
+ //uint32 MapName_lang_mask; // 21
+ uint32 AreaTableID; // 22 common zone for instance and continent map
+ //char* MapDescription0[16]; // 23-38 text for PvP Zones (Horde)
+ //uint32 MapDescription0_lang_mask; // 39
+ //char* MapDescription1[16]; // 40-55 text for PvP Zones (Alliance)
+ //uint32 MapDescription1_lang_mask; // 56
+ uint32 LoadingScreenID; // 57
+ //float MinimapIconScale; // 58
+ int32 CorpseMapID; // 59 MapID of entrance map
+ DBCPosition2D Corpse; // 60-61 entrance coordinate (if exist single entry)
//uint32 TimeOfDayOverride; // 62 -1, 0 and 720
- uint32 addon; // 63 (0-original maps, 1-tbc addon)
- uint32 unk_time; // 64 some kind of time?
- uint32 maxPlayers; // 65 max players, fallback if not present in MapDifficulty.dbc
+ uint32 ExpansionID; // 63
+ uint32 RaidOffset; // 64
+ uint32 MaxPlayers; // 65 max players, fallback if not present in MapDifficulty.dbc
// Helpers
- uint32 Expansion() const { return addon; }
+ uint32 Expansion() const { return ExpansionID; }
- bool IsDungeon() const { return map_type == MAP_INSTANCE || map_type == MAP_RAID; }
- bool IsNonRaidDungeon() const { return map_type == MAP_INSTANCE; }
- bool Instanceable() const { return map_type == MAP_INSTANCE || map_type == MAP_RAID || map_type == MAP_BATTLEGROUND || map_type == MAP_ARENA; }
- bool IsRaid() const { return map_type == MAP_RAID; }
- bool IsBattleground() const { return map_type == MAP_BATTLEGROUND; }
- bool IsBattleArena() const { return map_type == MAP_ARENA; }
- bool IsBattlegroundOrArena() const { return map_type == MAP_BATTLEGROUND || map_type == MAP_ARENA; }
- bool IsWorldMap() const { return map_type == MAP_COMMON; }
+ bool IsDungeon() const { return InstanceType == MAP_INSTANCE || InstanceType == MAP_RAID; }
+ bool IsNonRaidDungeon() const { return InstanceType == MAP_INSTANCE; }
+ bool Instanceable() const { return InstanceType == MAP_INSTANCE || InstanceType == MAP_RAID || InstanceType == MAP_BATTLEGROUND || InstanceType == MAP_ARENA; }
+ bool IsRaid() const { return InstanceType == MAP_RAID; }
+ bool IsBattleground() const { return InstanceType == MAP_BATTLEGROUND; }
+ bool IsBattleArena() const { return InstanceType == MAP_ARENA; }
+ bool IsBattlegroundOrArena() const { return InstanceType == MAP_BATTLEGROUND || InstanceType == MAP_ARENA; }
+ bool IsWorldMap() const { return InstanceType == MAP_COMMON; }
bool GetEntrancePos(int32 &mapid, float &x, float &y) const
{
- if (entrance_map < 0)
+ if (CorpseMapID < 0)
return false;
- mapid = entrance_map;
- x = entrance_x;
- y = entrance_y;
+ mapid = CorpseMapID;
+ x = Corpse.X;
+ y = Corpse.Y;
return true;
}
bool IsContinent() const
{
- return MapID == 0 || MapID == 1 || MapID == 530 || MapID == 571;
+ return ID == 0 || ID == 1 || ID == 530 || ID == 571;
}
bool IsDynamicDifficultyMap() const { return (Flags & MAP_FLAG_DYNAMIC_DIFFICULTY) != 0; }
@@ -1110,127 +1114,141 @@ struct MapEntry
struct MapDifficultyEntry
{
- //uint32 Id; // 0
- uint32 MapId; // 1
- uint32 Difficulty; // 2 (for arenas: arena slot)
- char* areaTriggerText; // 3-18 text showed when transfer to map failed (missing requirements)
- //uint32 textFlags; // 19
- uint32 resetTime; // 20
- uint32 maxPlayers; // 21
- //char* difficultyString; // 22
+ //uint32 ID; // 0
+ uint32 MapID; // 1
+ uint32 Difficulty; // 2 (for arenas: arena slot)
+ char* Message; // 3-18 text showed when transfer to map failed (missing requirements)
+ //uint32 Message_lang_mask; // 19
+ uint32 RaidDuration; // 20
+ uint32 MaxPlayers; // 21
+ //char* Difficultystring; // 22
};
struct MovieEntry
{
- uint32 Id; // 0 index
- //char* filename; // 1
- //uint32 unk2; // 2 always 100
+ uint32 ID; // 0
+ //char* Filename; // 1
+ //uint32 Volume; // 2 always 100
};
struct NamesProfanityEntry
{
- //uint32 ID; // 0
- char const* Name; // 1
- int32 Language; // 2
+ //uint32 ID; // 0
+ char* Name; // 1
+ int32 Language; // 2
};
struct NamesReservedEntry
{
- //uint32 ID; // 0
- char const* Name; // 1
- int32 Language; // 2
+ //uint32 ID; // 0
+ char* Name; // 1
+ int32 Language; // 2
};
#define MAX_OVERRIDE_SPELL 10
struct OverrideSpellDataEntry
{
- uint32 id; // 0
- uint32 spellId[MAX_OVERRIDE_SPELL]; // 1-10
- //uint32 unk0; // 11
+ uint32 ID; // 0
+ uint32 Spells[MAX_OVERRIDE_SPELL]; // 1-10
+ //uint32 Flags; // 11
};
struct PowerDisplayEntry
{
- uint32 Id; // 0
- uint32 PowerType; // 1
- //char* Name; // 2
- //uint32 R; // 3
- //uint32 G; // 4
- //uint32 B; // 5
+ uint32 ID; // 0
+ uint32 ActualType; // 1
+ //char* GlobalStringBaseTag; // 2
+ //uint8 Red; // 3
+ //uint8 Green; // 4
+ //uint8 Blue; // 5
};
struct PvPDifficultyEntry
{
- //uint32 id; // 0 m_ID
- uint32 mapId; // 1
- uint32 bracketId; // 2
- uint32 minLevel; // 3
- uint32 maxLevel; // 4
- uint32 difficulty; // 5
+ //uint32 ID; // 0
+ uint32 MapID; // 1
+ uint32 RangeIndex; // 2
+ uint32 MinLevel; // 3
+ uint32 MaxLevel; // 4
+ uint32 Difficulty; // 5
// helpers
- BattlegroundBracketId GetBracketId() const { return BattlegroundBracketId(bracketId); }
+ BattlegroundBracketId GetBracketId() const { return BattlegroundBracketId(RangeIndex); }
};
struct QuestSortEntry
{
- uint32 id; // 0 m_ID
- //char* name[16]; // 1-16 m_SortName_lang
- // 17 name flags
+ uint32 ID; // 0
+ //char* SortName[16]; // 1-16
+ //uint32 SortName_lang; // 17
};
struct QuestXPEntry
{
- uint32 id;
- uint32 Exp[10];
+ uint32 ID; // 0
+ uint32 Difficulty[10]; // 1-10
};
struct QuestFactionRewEntry
{
- uint32 id;
- int32 QuestRewFactionValue[10];
+ uint32 ID; // 0
+ int32 Difficulty[10]; // 1
};
-struct RandomPropertiesPointsEntry
+struct RandPropPointsEntry
{
- //uint32 Id; // 0 hidden key
- uint32 itemLevel; // 1
- uint32 EpicPropertiesPoints[5]; // 2-6
- uint32 RarePropertiesPoints[5]; // 7-11
- uint32 UncommonPropertiesPoints[5]; // 12-16
+ uint32 ID; // 0 item level
+ uint32 Epic[5]; // 1-5
+ uint32 Superior[5]; // 6-10
+ uint32 Good[5]; // 11-15
};
struct ScalingStatDistributionEntry
{
- uint32 Id; // 0
- int32 StatMod[10]; // 1-10
- uint32 Modifier[10]; // 11-20
- uint32 MaxLevel; // 21
+ uint32 ID; // 0
+ int32 StatID[10]; // 1-10
+ uint32 Bonus[10]; // 11-20
+ uint32 Maxlevel; // 21
};
struct ScalingStatValuesEntry
{
- uint32 Id; // 0
- uint32 Level; // 1
- uint32 ssdMultiplier[4]; // 2-5 Multiplier for ScalingStatDistribution
- uint32 armorMod[4]; // 6-9 Armor for level
- uint32 dpsMod[6]; // 10-15 DPS mod for level
- uint32 spellPower; // 16 spell power for level
- uint32 ssdMultiplier2; // 17 there's data from 3.1 dbc ssdMultiplier[3]
- uint32 ssdMultiplier3; // 18 3.3
- uint32 armorMod2[5]; // 19-23 Armor for level
+ uint32 ID; // 0
+ uint32 Charlevel; // 1
+ uint32 ShoulderBudget; // 2
+ uint32 TrinketBudget; // 3
+ uint32 WeaponBudget1H; // 4
+ uint32 RangedBudget; // 5
+ uint32 ClothShoulderArmor; // 6
+ uint32 LeatherShoulderArmor; // 7
+ uint32 MailShoulderArmor; // 8
+ uint32 PlateShoulderArmor; // 9
+ uint32 WeaponDPS1H; // 10
+ uint32 WeaponDPS2H; // 11
+ uint32 SpellcasterDPS1H; // 12
+ uint32 SpellcasterDPS2H; // 13
+ uint32 RangedDPS; // 14
+ uint32 WandDPS; // 15
+ uint32 SpellPower; // 16
+ uint32 PrimaryBudget; // 17
+ uint32 TertiaryBudget; // 18
+ uint32 ClothCloakArmor; // 19
+ uint32 ClothChestArmor; // 20
+ uint32 LeatherChestArmor; // 21
+ uint32 MailChestArmor; // 22
+ uint32 PlateChestArmor; // 23
uint32 getssdMultiplier(uint32 mask) const
{
if (mask & 0x4001F)
{
- if (mask & 0x00000001) return ssdMultiplier[0]; // Shoulder
- if (mask & 0x00000002) return ssdMultiplier[1]; // Trinket
- if (mask & 0x00000004) return ssdMultiplier[2]; // Weapon1H
- if (mask & 0x00000008) return ssdMultiplier2;
- if (mask & 0x00000010) return ssdMultiplier[3]; // Ranged
- if (mask & 0x00040000) return ssdMultiplier3;
+ if (mask & 0x00000001) return ShoulderBudget;
+ if (mask & 0x00000002) return TrinketBudget;
+ if (mask & 0x00000004) return WeaponBudget1H;
+ if (mask & 0x00000008) return PrimaryBudget;
+ if (mask & 0x00000010) return RangedBudget;
+ if (mask & 0x00040000) return TertiaryBudget;
}
return 0;
}
@@ -1239,16 +1257,16 @@ struct ScalingStatValuesEntry
{
if (mask & 0x00F001E0)
{
- if (mask & 0x00000020) return armorMod[0]; // Cloth shoulder
- if (mask & 0x00000040) return armorMod[1]; // Leather shoulder
- if (mask & 0x00000080) return armorMod[2]; // Mail shoulder
- if (mask & 0x00000100) return armorMod[3]; // Plate shoulder
-
- if (mask & 0x00080000) return armorMod2[0]; // cloak
- if (mask & 0x00100000) return armorMod2[1]; // cloth
- if (mask & 0x00200000) return armorMod2[2]; // leather
- if (mask & 0x00400000) return armorMod2[3]; // mail
- if (mask & 0x00800000) return armorMod2[4]; // plate
+ if (mask & 0x00000020) return ClothShoulderArmor;
+ if (mask & 0x00000040) return LeatherShoulderArmor;
+ if (mask & 0x00000080) return MailShoulderArmor;
+ if (mask & 0x00000100) return PlateShoulderArmor;
+
+ if (mask & 0x00080000) return ClothCloakArmor;
+ if (mask & 0x00100000) return ClothChestArmor;
+ if (mask & 0x00200000) return LeatherChestArmor;
+ if (mask & 0x00400000) return MailChestArmor;
+ if (mask & 0x00800000) return PlateChestArmor;
}
return 0;
}
@@ -1257,19 +1275,19 @@ struct ScalingStatValuesEntry
{
if (mask & 0x7E00)
{
- if (mask & 0x00000200) return dpsMod[0]; // Weapon 1h
- if (mask & 0x00000400) return dpsMod[1]; // Weapon 2h
- if (mask & 0x00000800) return dpsMod[2]; // Caster dps 1h
- if (mask & 0x00001000) return dpsMod[3]; // Caster dps 2h
- if (mask & 0x00002000) return dpsMod[4]; // Ranged
- if (mask & 0x00004000) return dpsMod[5]; // Wand
+ if (mask & 0x00000200) return WeaponDPS1H;
+ if (mask & 0x00000400) return WeaponDPS2H;
+ if (mask & 0x00000800) return SpellcasterDPS1H;
+ if (mask & 0x00001000) return SpellcasterDPS2H;
+ if (mask & 0x00002000) return RangedDPS;
+ if (mask & 0x00004000) return WandDPS;
}
return 0;
}
uint32 getSpellBonus(uint32 mask) const
{
- if (mask & 0x00008000) return spellPower;
+ if (mask & 0x00008000) return SpellPower;
return 0;
}
@@ -1280,191 +1298,194 @@ struct ScalingStatValuesEntry
}
};
-//struct SkillLineCategoryEntry{
-// uint32 id; // 0 m_ID
-// char* name[16]; // 1-17 m_name_lang
-// // 18 string flag
-// uint32 displayOrder; // 19 m_sortIndex
-//};
-
struct SkillLineEntry
{
- uint32 id; // 0 m_ID
- int32 categoryId; // 1 m_categoryID
- //uint32 skillCostID; // 2 m_skillCostsID
- char* name[16]; // 3-18 m_displayName_lang
- // 19 string flags
- //char* description[16]; // 20-35 m_description_lang
- // 36 string flags
- uint32 spellIcon; // 37 m_spellIconID
- //char* alternateVerb[16]; // 38-53 m_alternateVerb_lang
- // 54 string flags
- uint32 canLink; // 55 m_canLink (prof. with recipes
+ uint32 ID; // 0
+ int32 CategoryID; // 1
+ //uint32 SkillCostsID; // 2
+ char* DisplayName[16]; // 3-18
+ //uint32 DisplayName_lang_mask; // 19
+ //char* Description[16]; // 20-35
+ //uint32 Description_lang_mask; // 36
+ uint32 SpellIconID; // 37
+ //char* AlternateVerb[16]; // 38-53
+ //uint32 AlternateVerb_lang_mask; // 54
+ uint32 CanLink; // 55
};
struct SkillLineAbilityEntry
{
- uint32 id; // 0 m_ID
- uint32 skillId; // 1 m_skillLine
- uint32 spellId; // 2 m_spell
- uint32 racemask; // 3 m_raceMask
- uint32 classmask; // 4 m_classMask
- //uint32 racemaskNot; // 5 m_excludeRace
- //uint32 classmaskNot; // 6 m_excludeClass
- uint32 req_skill_value; // 7 m_minSkillLineRank
- uint32 forward_spellid; // 8 m_supercededBySpell
- uint32 AutolearnType; // 9 m_acquireMethod
- uint32 max_value; // 10 m_trivialSkillLineRankHigh
- uint32 min_value; // 11 m_trivialSkillLineRankLow
- //uint32 characterPoints[2]; // 12-13 m_characterPoints[2]
+ uint32 ID; // 0
+ uint32 SkillLine; // 1
+ uint32 Spell; // 2
+ uint32 RaceMask; // 3
+ uint32 ClassMask; // 4
+ //uint32 ExcludeRace; // 5
+ //uint32 ExcludeClass; // 6
+ uint32 MinSkillLineRank; // 7
+ uint32 SupercededBySpell; // 8
+ uint32 AcquireMethod; // 9
+ uint32 TrivialSkillLineRankHigh; // 10
+ uint32 TrivialSkillLineRankLow; // 11
+ //uint32 CharacterPoints[2]; // 12-13
};
+/*
+struct SkillLineCategoryEntry
+{
+ uint32 ID; // 0
+ char* Name[16]; // 1-17
+ uint32 Name_lang_mask; // 18
+ uint32 SortIndex; // 19
+};
+*/
+
struct SkillRaceClassInfoEntry
{
- //uint32 Id; // 0
- uint32 SkillId; // 1
+ //uint32 ID; // 0
+ uint32 SkillID; // 1
uint32 RaceMask; // 2
uint32 ClassMask; // 3
uint32 Flags; // 4
//uint32 MinLevel; // 5
- uint32 SkillTier; // 6
- //uint32 SkillCostType; // 7
+ uint32 SkillTierID; // 6
+ //uint32 SkillCostIndex; // 7
};
#define MAX_SKILL_STEP 16
struct SkillTiersEntry
{
- uint32 Id; // 0
- //uint32 StepCost[MAX_SKILL_STEP]; // 1-16
- uint32 MaxSkill[MAX_SKILL_STEP]; // 17-32
+ uint32 ID; // 0
+ //uint32 Cost[MAX_SKILL_STEP]; // 1-16
+ uint32 Value[MAX_SKILL_STEP]; // 17-32
};
struct SoundEntriesEntry
{
- uint32 Id; // 0 m_ID
- //uint32 Type; // 1 m_soundType
- //char* InternalName; // 2 m_name
- //char* FileName[10]; // 3-12 m_File[10]
- //uint32 Unk13[10]; // 13-22 m_Freq[10]
- //char* Path; // 23 m_DirectoryBase
- // 24 m_volumeFloat
- // 25 m_flags
- // 26 m_minDistance
- // 27 m_distanceCutoff
- // 28 m_EAXDef
- // 29 new in 3.1
+ uint32 ID; // 0
+ //uint32 SoundType; // 1
+ //char* Name; // 2
+ //char* File[10]; // 3-12
+ //uint32 Freq[10]; // 13-22
+ //char* DirectoryBase; // 23
+ //float VolumeFloat; // 24
+ //uint32 Flags; // 25
+ //float MinDistance; // 26
+ //float DistanceCutoff; // 27
+ //uint32 EAXDef; // 28
+ //uint32 SoundEntriesAdvancedID; // 29
};
struct SpellEntry
{
- uint32 Id; // 0 m_ID
- uint32 Category; // 1 m_category
- uint32 Dispel; // 2 m_dispelType
- uint32 Mechanic; // 3 m_mechanic
- uint32 Attributes; // 4 m_attributes
- uint32 AttributesEx; // 5 m_attributesEx
- uint32 AttributesEx2; // 6 m_attributesExB
- uint32 AttributesEx3; // 7 m_attributesExC
- uint32 AttributesEx4; // 8 m_attributesExD
- uint32 AttributesEx5; // 9 m_attributesExE
- uint32 AttributesEx6; // 10 m_attributesExF
- uint32 AttributesEx7; // 11 m_attributesExG
- uint32 Stances[2]; // 12 m_shapeshiftMask
- uint32 StancesNot[2]; // 14 m_shapeshiftExclude
- uint32 Targets; // 16 m_targets
- uint32 TargetCreatureType; // 17 m_targetCreatureType
- uint32 RequiresSpellFocus; // 18 m_requiresSpellFocus
- uint32 FacingCasterFlags; // 19 m_facingCasterFlags
- uint32 CasterAuraState; // 20 m_casterAuraState
- uint32 TargetAuraState; // 21 m_targetAuraState
- uint32 CasterAuraStateNot; // 22 m_excludeCasterAuraState
- uint32 TargetAuraStateNot; // 23 m_excludeTargetAuraState
- uint32 casterAuraSpell; // 24 m_casterAuraSpell
- uint32 targetAuraSpell; // 25 m_targetAuraSpell
- uint32 excludeCasterAuraSpell; // 26 m_excludeCasterAuraSpell
- uint32 excludeTargetAuraSpell; // 27 m_excludeTargetAuraSpell
- uint32 CastingTimeIndex; // 28 m_castingTimeIndex
- uint32 RecoveryTime; // 29 m_recoveryTime
- uint32 CategoryRecoveryTime; // 30 m_categoryRecoveryTime
- uint32 InterruptFlags; // 31 m_interruptFlags
- uint32 AuraInterruptFlags; // 32 m_auraInterruptFlags
- uint32 ChannelInterruptFlags; // 33 m_channelInterruptFlags
- uint32 procFlags; // 34 m_procTypeMask
- uint32 procChance; // 35 m_procChance
- uint32 procCharges; // 36 m_procCharges
- uint32 maxLevel; // 37 m_maxLevel
- uint32 baseLevel; // 38 m_baseLevel
- uint32 spellLevel; // 39 m_spellLevel
- uint32 DurationIndex; // 40 m_durationIndex
- uint32 powerType; // 41 m_powerType
- uint32 manaCost; // 42 m_manaCost
- uint32 manaCostPerlevel; // 43 m_manaCostPerLevel
- uint32 manaPerSecond; // 44 m_manaPerSecond
- uint32 manaPerSecondPerLevel; // 45 m_manaPerSecondPerLeve
- uint32 rangeIndex; // 46 m_rangeIndex
- float speed; // 47 m_speed
- //uint32 modalNextSpell; // 48 m_modalNextSpell not used
- uint32 StackAmount; // 49 m_cumulativeAura
- uint32 Totem[2]; // 50-51 m_totem
- int32 Reagent[MAX_SPELL_REAGENTS]; // 52-59 m_reagent
- uint32 ReagentCount[MAX_SPELL_REAGENTS]; // 60-67 m_reagentCount
- int32 EquippedItemClass; // 68 m_equippedItemClass (value)
- int32 EquippedItemSubClassMask; // 69 m_equippedItemSubclass (mask)
- int32 EquippedItemInventoryTypeMask; // 70 m_equippedItemInvTypes (mask)
- uint32 Effect[MAX_SPELL_EFFECTS]; // 71-73 m_effect
- int32 EffectDieSides[MAX_SPELL_EFFECTS]; // 74-76 m_effectDieSides
- float EffectRealPointsPerLevel[MAX_SPELL_EFFECTS]; // 77-79 m_effectRealPointsPerLevel
- int32 EffectBasePoints[MAX_SPELL_EFFECTS]; // 80-82 m_effectBasePoints (must not be used in spell/auras explicitly, must be used cached Spell::m_currentBasePoints)
- uint32 EffectMechanic[MAX_SPELL_EFFECTS]; // 83-85 m_effectMechanic
- uint32 EffectImplicitTargetA[MAX_SPELL_EFFECTS]; // 86-88 m_implicitTargetA
- uint32 EffectImplicitTargetB[MAX_SPELL_EFFECTS]; // 89-91 m_implicitTargetB
- uint32 EffectRadiusIndex[MAX_SPELL_EFFECTS]; // 92-94 m_effectRadiusIndex - spellradius.dbc
- uint32 EffectApplyAuraName[MAX_SPELL_EFFECTS]; // 95-97 m_effectAura
- uint32 EffectAmplitude[MAX_SPELL_EFFECTS]; // 98-100 m_effectAuraPeriod
- float EffectValueMultiplier[MAX_SPELL_EFFECTS]; // 101-103
- uint32 EffectChainTarget[MAX_SPELL_EFFECTS]; // 104-106 m_effectChainTargets
- uint32 EffectItemType[MAX_SPELL_EFFECTS]; // 107-109 m_effectItemType
- int32 EffectMiscValue[MAX_SPELL_EFFECTS]; // 110-112 m_effectMiscValue
- int32 EffectMiscValueB[MAX_SPELL_EFFECTS]; // 113-115 m_effectMiscValueB
- uint32 EffectTriggerSpell[MAX_SPELL_EFFECTS]; // 116-118 m_effectTriggerSpell
- float EffectPointsPerComboPoint[MAX_SPELL_EFFECTS]; // 119-121 m_effectPointsPerCombo
- flag96 EffectSpellClassMask[MAX_SPELL_EFFECTS]; // 122-130
- uint32 SpellVisual[2]; // 131-132 m_spellVisualID
- uint32 SpellIconID; // 133 m_spellIconID
- uint32 activeIconID; // 134 m_activeIconID
- uint32 SpellPriority; // 135 m_spellPriority
- char* SpellName[16]; // 136-151 m_name_lang
- //uint32 SpellNameFlag; // 152 not used
- char* Rank[16]; // 153-168 m_nameSubtext_lang
- //uint32 RankFlags; // 169 not used
- //char* Description[16]; // 170-185 m_description_lang not used
- //uint32 DescriptionFlags; // 186 not used
- //char* ToolTip[16]; // 187-202 m_auraDescription_lang not used
- //uint32 ToolTipFlags; // 203 not used
- uint32 ManaCostPercentage; // 204 m_manaCostPct
- uint32 StartRecoveryCategory; // 205 m_startRecoveryCategory
- uint32 StartRecoveryTime; // 206 m_startRecoveryTime
- uint32 MaxTargetLevel; // 207 m_maxTargetLevel
- uint32 SpellFamilyName; // 208 m_spellClassSet
- flag96 SpellFamilyFlags; // 209-211
- uint32 MaxAffectedTargets; // 212 m_maxTargets
- uint32 DmgClass; // 213 m_defenseType
- uint32 PreventionType; // 214 m_preventionType
- //uint32 StanceBarOrder; // 215 m_stanceBarOrder not used
- float EffectDamageMultiplier[MAX_SPELL_EFFECTS]; // 216-218 m_effectChainAmplitude
- //uint32 MinFactionId; // 219 m_minFactionID not used
- //uint32 MinReputation; // 220 m_minReputation not used
- //uint32 RequiredAuraVision; // 221 m_requiredAuraVision not used
- uint32 TotemCategory[2]; // 222-223 m_requiredTotemCategoryID
- int32 AreaGroupId; // 224 m_requiredAreaGroupId
- uint32 SchoolMask; // 225 m_schoolMask
- uint32 runeCostID; // 226 m_runeCostID
- //uint32 spellMissileID; // 227 m_spellMissileID not used
- //uint32 PowerDisplayId; // 228 PowerDisplay.dbc, new in 3.1
- float EffectBonusMultiplier[MAX_SPELL_EFFECTS]; // 229-231 3.2.0
- //uint32 spellDescriptionVariableID; // 232 3.2.0
- //uint32 SpellDifficultyId; // 233 3.3.0
+ uint32 ID; // 0
+ uint32 Category; // 1
+ uint32 DispelType; // 2
+ uint32 Mechanic; // 3
+ uint32 Attributes; // 4
+ uint32 AttributesEx; // 5
+ uint32 AttributesExB; // 6
+ uint32 AttributesExC; // 7
+ uint32 AttributesExD; // 8
+ uint32 AttributesExE; // 9
+ uint32 AttributesExF; // 10
+ uint32 AttributesExG; // 11
+ uint32 ShapeshiftMask[2]; // 12
+ uint32 ShapeshiftExclude[2]; // 14
+ uint32 Targets; // 16
+ uint32 TargetCreatureType; // 17
+ uint32 RequiresSpellFocus; // 18
+ uint32 FacingCasterFlags; // 19
+ uint32 CasterAuraState; // 20
+ uint32 TargetAuraState; // 21
+ uint32 ExcludeCasterAuraState; // 22
+ uint32 ExcludeTargetAuraState; // 23
+ uint32 CasterAuraSpell; // 24
+ uint32 TargetAuraSpell; // 25
+ uint32 ExcludeCasterAuraSpell; // 26
+ uint32 ExcludeTargetAuraSpell; // 27
+ uint32 CastingTimeIndex; // 28
+ uint32 RecoveryTime; // 29
+ uint32 CategoryRecoveryTime; // 30
+ uint32 InterruptFlags; // 31
+ uint32 AuraInterruptFlags; // 32
+ uint32 ChannelInterruptFlags; // 33
+ uint32 ProcTypeMask; // 34
+ uint32 ProcChance; // 35
+ uint32 ProcCharges; // 36
+ uint32 MaxLevel; // 37
+ uint32 BaseLevel; // 38
+ uint32 SpellLevel; // 39
+ uint32 DurationIndex; // 40
+ uint32 PowerType; // 41
+ uint32 ManaCost; // 42
+ uint32 ManaCostPerLevel; // 43
+ uint32 ManaPerSecond; // 44
+ uint32 ManaPerSecondPerLevel; // 45
+ uint32 RangeIndex; // 46
+ float Speed; // 47
+ //uint32 ModalNextSpell; // 48
+ uint32 CumulativeAura; // 49
+ uint32 Totem[2]; // 50-51
+ int32 Reagent[MAX_SPELL_REAGENTS]; // 52-59
+ uint32 ReagentCount[MAX_SPELL_REAGENTS]; // 60-67
+ int32 EquippedItemClass; // 68
+ int32 EquippedItemSubclass; // 69
+ int32 EquippedItemInvTypes; // 70
+ uint32 Effect[MAX_SPELL_EFFECTS]; // 71-73
+ int32 EffectDieSides[MAX_SPELL_EFFECTS]; // 74-76
+ float EffectRealPointsPerLevel[MAX_SPELL_EFFECTS]; // 77-79
+ int32 EffectBasePoints[MAX_SPELL_EFFECTS]; // 80-82
+ uint32 EffectMechanic[MAX_SPELL_EFFECTS]; // 83-85
+ uint32 EffectImplicitTargetA[MAX_SPELL_EFFECTS]; // 86-88
+ uint32 EffectImplicitTargetB[MAX_SPELL_EFFECTS]; // 89-91
+ uint32 EffectRadiusIndex[MAX_SPELL_EFFECTS]; // 92-94
+ uint32 EffectAura[MAX_SPELL_EFFECTS]; // 95-97
+ uint32 EffectAuraPeriod[MAX_SPELL_EFFECTS]; // 98-100
+ float EffectAmplitude[MAX_SPELL_EFFECTS]; // 101-103
+ uint32 EffectChainTargets[MAX_SPELL_EFFECTS]; // 104-106
+ uint32 EffectItemType[MAX_SPELL_EFFECTS]; // 107-109
+ int32 EffectMiscValue[MAX_SPELL_EFFECTS]; // 110-112
+ int32 EffectMiscValueB[MAX_SPELL_EFFECTS]; // 113-115
+ uint32 EffectTriggerSpell[MAX_SPELL_EFFECTS]; // 116-118
+ float EffectPointsPerCombo[MAX_SPELL_EFFECTS]; // 119-121
+ flag96 EffectSpellClassMask[MAX_SPELL_EFFECTS]; // 122-130
+ uint32 SpellVisualID[2]; // 131-132
+ uint32 SpellIconID; // 133
+ uint32 ActiveIconID; // 134
+ uint32 SpellPriority; // 135
+ char* Name[16]; // 136-151
+ //uint32 Name_lang_mask; // 152
+ char* NameSubtext[16]; // 153-168
+ //uint32 NameSubtext_lang_mask; // 169
+ //char* Description[16]; // 170-185
+ //uint32 Description_lang_mask; // 186
+ //char* AuraDescription[16]; // 187-202
+ //uint32 AuraDescription_lang_mask; // 203
+ uint32 ManaCostPct; // 204
+ uint32 StartRecoveryCategory; // 205
+ uint32 StartRecoveryTime; // 206
+ uint32 MaxTargetLevel; // 207
+ uint32 SpellClassSet; // 208
+ flag96 SpellClassMask; // 209-211
+ uint32 MaxTargets; // 212
+ uint32 DefenseType; // 213
+ uint32 PreventionType; // 214
+ //uint32 StanceBarOrder; // 215
+ float EffectChainAmplitude[MAX_SPELL_EFFECTS]; // 216-218
+ //uint32 MinFactionID; // 219
+ //uint32 MinReputation; // 220
+ //uint32 RequiredAuraVision; // 221
+ uint32 RequiredTotemCategoryID[2]; // 222-223
+ int32 RequiredAreasID; // 224
+ uint32 SchoolMask; // 225
+ uint32 RuneCostID; // 226
+ //uint32 SpellMissileID; // 227
+ //uint32 PowerDisplayID; // 228
+ float EffectBonusCoefficient[MAX_SPELL_EFFECTS]; // 229-231
+ //uint32 DescriptionVariablesID; // 232
+ //uint32 Difficulty; // 233
};
typedef std::set<uint32> PetFamilySpellsSet;
@@ -1472,359 +1493,354 @@ typedef std::map<uint32, PetFamilySpellsSet> PetFamilySpellsStore;
struct SpellCastTimesEntry
{
- uint32 ID; // 0
- int32 CastTime; // 1
- //float CastTimePerLevel; // 2 unsure / per skill?
- //int32 MinCastTime; // 3 unsure
+ uint32 ID; // 0
+ int32 Base; // 1
+ //int32 PerLevel; // 2
+ //int32 Minimum; // 3
};
struct SpellCategoryEntry
{
- uint32 Id;
- uint32 Flags;
+ uint32 ID; // 0
+ uint32 Flags; // 1
};
struct SpellDifficultyEntry
{
- uint32 ID; // 0
- int32 SpellID[MAX_DIFFICULTY]; // 1-4 instance modes: 10N, 25N, 10H, 25H or Normal/Heroic if only 1-2 is set, if 3-4 is 0 then Mode-2
+ uint32 ID; // 0
+ int32 DifficultySpellID[MAX_DIFFICULTY]; // 1-4 instance modes: 10N, 25N, 10H, 25H or Normal/Heroic if only 1-2 is set, if 3-4 is 0 then Mode-2
};
-struct SpellFocusObjectEntry
+struct SpellDurationEntry
{
- uint32 ID; // 0
- //char* Name[16]; // 1-15 unused
- // 16 string flags, unused
+ uint32 ID; // 0
+ int32 Duration; // 1
+ int32 DurationPerLevel; // 2
+ int32 MaxDuration; // 3
};
-struct SpellRadiusEntry
+struct SpellFocusObjectEntry
{
- uint32 ID;
- float RadiusMin;
- float RadiusPerLevel;
- float RadiusMax;
+ uint32 ID; // 0
+ //char* Name[16]; // 1-15
+ //uint32 Name_lang_mask; // 16
};
-struct SpellRangeEntry
+struct SpellItemEnchantmentEntry
{
- uint32 ID;
- float minRangeHostile;
- float minRangeFriend;
- float maxRangeHostile;
- float maxRangeFriend;
- uint32 type;
- //char* Name[16]; // 7-23 unused
- // 24 string flags, unused
- //char* Name2[16]; // 25-40 unused
- // 41 string flags, unused
+ uint32 ID; // 0
+ //uint32 Charges; // 1
+ uint32 Effect[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 2-4
+ uint32 EffectPointsMin[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 5-7
+ //uint32 EffectPointsMax[MAX_ITEM_ENCHANTMENT_EFFECTS] // 8-10
+ uint32 EffectArg[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 11-13
+ char* Name[16]; // 14-29
+ //uint32 Name_lang_mask; // 30
+ uint32 ItemVisual; // 31
+ uint32 Flags; // 32
+ uint32 SrcItemID; // 33
+ uint32 ConditionID; // 34
+ uint32 RequiredSkillID; // 35
+ uint32 RequiredSkillRank; // 36
+ uint32 MinLevel; // 37
};
-struct SpellRuneCostEntry
+struct SpellItemEnchantmentConditionEntry
{
- uint32 ID; // 0
- uint32 RuneCost[3]; // 1-3 (0=blood, 1=frost, 2=unholy)
- uint32 runePowerGain; // 4
-
- bool NoRuneCost() const { return RuneCost[0] == 0 && RuneCost[1] == 0 && RuneCost[2] == 0; }
- bool NoRunicPowerGain() const { return runePowerGain == 0; }
+ uint32 ID; // 0
+ uint8 LtOperandType[5]; // 1-5
+ //uint32 LtOperand[5]; // 6-10
+ uint8 Operator[5]; // 11-15
+ uint8 RtOperandType[5]; // 15-20
+ uint32 RtOperand[5]; // 21-25
+ //uint8 Logic[5]; // 25-30
};
-#define MAX_SHAPESHIFT_SPELLS 8
-
-struct SpellShapeshiftEntry
+struct SpellRadiusEntry
{
uint32 ID; // 0
- //uint32 buttonPosition; // 1 unused
- //char* Name[16]; // 2-17 unused
- //uint32 NameFlags; // 18 unused
- uint32 flags1; // 19
- int32 creatureType; // 20 <= 0 humanoid, other normal creature types
- //uint32 unk1; // 21 unused
- uint32 attackSpeed; // 22
- uint32 modelID_A; // 23 alliance modelid
- uint32 modelID_H; // 24 horde modelid (only one form)
- //uint32 unk3; // 25 unused
- //uint32 unk4; // 26 unused
- uint32 stanceSpell[MAX_SHAPESHIFT_SPELLS]; // 27 - 34 unused
+ float Radius; // 1
+ float RadiusPerLevel; // 2
+ float RadiusMax; // 3
};
-struct SpellDurationEntry
+struct SpellRangeEntry
{
- uint32 ID;
- int32 Duration[3];
+ uint32 ID; // 0
+ float RangeMin[2]; // 1-2 [0] Hostile [1] Friendly
+ float RangeMax[2]; // 3-4 [0] Hostile [1] Friendly
+ uint32 Flags; // 5
+ //char* DisplayName[16]; // 6-21
+ //uint32 DisplayName_lang_mask; // 22
+ //char* DisplayNameShort[16]; // 23-38
+ //uint32 DisplayNameShort_lang_mask; // 39
};
-struct SpellItemEnchantmentEntry
+struct SpellRuneCostEntry
{
- uint32 ID; // 0 m_ID
- //uint32 charges; // 1 m_charges
- uint32 type[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 2-4 m_effect[MAX_ITEM_ENCHANTMENT_EFFECTS]
- uint32 amount[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 5-7 m_effectPointsMin[MAX_ITEM_ENCHANTMENT_EFFECTS]
- //uint32 amount2[MAX_ITEM_ENCHANTMENT_EFFECTS] // 8-10 m_effectPointsMax[MAX_ITEM_ENCHANTMENT_EFFECTS]
- uint32 spellid[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 11-13 m_effectArg[MAX_ITEM_ENCHANTMENT_EFFECTS]
- char* description[16]; // 14-29 m_name_lang[16]
- //uint32 descriptionFlags; // 30 name flags
- uint32 aura_id; // 31 m_itemVisual
- uint32 slot; // 32 m_flags
- uint32 GemID; // 33 m_src_itemID
- uint32 EnchantmentCondition; // 34 m_condition_id
- uint32 requiredSkill; // 35 m_requiredSkillID
- uint32 requiredSkillValue; // 36 m_requiredSkillRank
- uint32 requiredLevel; // 37 m_requiredLevel
+ uint32 ID; // 0
+ uint32 RuneCost[3]; // 1-3 [0] Blood [1] Unholy [2] Frost
+ uint32 RunicPower; // 4
+
+ bool NoRuneCost() const { return RuneCost[0] == 0 && RuneCost[1] == 0 && RuneCost[2] == 0; }
+ bool NoRunicPowerGain() const { return RunicPower == 0; }
};
-struct SpellItemEnchantmentConditionEntry
+#define MAX_SHAPESHIFT_SPELLS 8
+
+struct SpellShapeshiftFormEntry
{
- uint32 ID; // 0 m_ID
- uint8 Color[5]; // 1-5 m_lt_operandType[5]
- //uint32 LT_Operand[5]; // 6-10 m_lt_operand[5]
- uint8 Comparator[5]; // 11-15 m_operator[5]
- uint8 CompareColor[5]; // 15-20 m_rt_operandType[5]
- uint32 Value[5]; // 21-25 m_rt_operand[5]
- //uint8 Logic[5] // 25-30 m_logic[5]
+ uint32 ID; // 0
+ //uint32 BonusActionBar; // 1
+ //char* Name[16]; // 2-17
+ //uint32 Name_lang_mask; // 18
+ uint32 Flags; // 19
+ int32 CreatureType; // 20 <= 0 humanoid, other normal creature types
+ //uint32 AttackIconID; // 21
+ uint32 CombatRoundTime; // 22
+ uint32 CreatureDisplayID[4]; // 23-26 [0] Alliance [1] Horde [2] Unk [3] Unk
+ uint32 PresetSpellID[MAX_SHAPESHIFT_SPELLS]; // 27-34
};
struct SpellVisualEntry
{
- //uint32 Id;
- //uint32 PrecastKit;
- //uint32 CastingKit;
- //uint32 ImpactKit;
- //uint32 StateKit;
- //uint32 StateDoneKit;
- //uint32 ChannelKit;
- uint32 HasMissile;
- int32 MissileModel;
- //uint32 MissilePathType;
- //uint32 MissileDestinationAttachment;
- //uint32 MissileSound;
- //uint32 AnimEventSoundID;
- //uint32 Flags;
- //uint32 CasterImpactKit;
- //uint32 TargetImpactKit;
- //int32 MissileAttachment;
- //uint32 MissileFollowGroundHeight;
- //uint32 MissileFollowGroundDropSpeed;
- //uint32 MissileFollowGroundApprach;
- //uint32 MissileFollowGroundFlags;
- //uint32 MissileMotionId;
- //uint32 MissileTargetingKit;
- //uint32 InstantAreaKit;
- //uint32 ImpactAreaKit;
- //uint32 PersistentAreaKit;
- //DBCPosition3D MissileCastOffset;
- //DBCPosition3D MissileImpactOffset;
+ //uint32 ID; // 0
+ //uint32 PrecastKit; // 1
+ //uint32 CastKit; // 2
+ //uint32 ImpactKit; // 3
+ //uint32 StateKit; // 4
+ //uint32 StateDoneKit; // 5
+ //uint32 ChannelKit; // 6
+ uint32 HasMissile; // 7
+ int32 MissileModel; // 8
+ //uint32 MissilePathType; // 9
+ //uint32 MissileDestinationAttachment; // 10
+ //uint32 MissileSound; // 11
+ //uint32 AnimEventSoundID; // 12
+ //uint32 Flags; // 13
+ //uint32 CasterImpactKit; // 14
+ //uint32 TargetImpactKit; // 15
+ //int32 MissileAttachment; // 16
+ //uint32 MissileFollowGroundHeight; // 17
+ //uint32 MissileFollowGroundDropSpeed; // 18
+ //uint32 MissileFollowGroundApproach; // 19
+ //uint32 MissileFollowGroundFlags; // 20
+ //uint32 MissileMotion; // 21
+ //uint32 MissileTargetingKit; // 22
+ //uint32 InstantAreaKit; // 23
+ //uint32 ImpactAreaKit; // 24
+ //uint32 PersistentAreaKit; // 25
+ //DBCPosition3D MissileCastOffset; // 26-28
+ //DBCPosition3D MissileImpactOffset; // 29-31
};
struct StableSlotPricesEntry
{
- uint32 Slot;
- uint32 Price;
+ uint32 ID; // 0
+ uint32 Cost; // 1
};
struct SummonPropertiesEntry
{
- uint32 Id; // 0
- uint32 Category; // 1, 0 - can't be controlled?, 1 - something guardian?, 2 - pet?, 3 - something controllable?, 4 - taxi/mount?
- uint32 Faction; // 2, 14 rows > 0
- uint32 Type; // 3, see enum
- uint32 Slot; // 4, 0-6
- uint32 Flags; // 5
+ uint32 ID; // 0
+ uint32 Control; // 1
+ uint32 Faction; // 2
+ uint32 Title; // 3
+ uint32 Slot; // 4
+ uint32 Flags; // 5
};
struct TalentEntry
{
- uint32 TalentID; // 0
- uint32 TalentTab; // 1 index in TalentTab.dbc (TalentTabEntry)
- uint32 Row; // 2
- uint32 Col; // 3
- uint32 RankID[MAX_TALENT_RANK]; // 4-8
- // 9-12 not used, always 0, maybe not used high ranks
- uint32 DependsOn; // 13 index in Talent.dbc (TalentEntry)
- // 14-15 not used
- uint32 DependsOnRank; // 16
- // 17-18 not used
- //uint32 needAddInSpellBook; // 19 also need disable higest ranks on reset talent tree
- //uint32 unk2; // 20, all 0
- //uint64 allowForPet; // 21 its a 64 bit mask for pet 1<<m_categoryEnumID in CreatureFamily.dbc
+ uint32 ID; // 0
+ uint32 TabID; // 1 index in TalentTab.dbc (TalentTabEntry)
+ uint32 TierID; // 2
+ uint32 ColumnIndex; // 3
+ uint32 SpellRank[MAX_TALENT_RANK]; // 4-8
+ //uint32 SpellRankUnused[4]; // 9-12
+ uint32 PrereqTalent; // 13 index in Talent.dbc (TalentEntry)
+ //uint32 PrereqTalentUnused[2]; // 14-15
+ uint32 PrereqRank; // 16
+ //uint32 PrereqRankUnused[2]; // 17-18
+ //uint32 Flags; // 19
+ //uint32 RequiredSpellID; // 20 all 0
+ //uint32 CategoryMask[2]; // 21 its a 64 bit mask for pet 1<<CategoryEnumID in CreatureFamily.dbc
};
struct TalentTabEntry
{
- uint32 TalentTabID; // 0
- //char* name[16]; // 1-16, unused
- //uint32 nameFlags; // 17, unused
- //unit32 spellicon; // 18
- // 19 not used
- uint32 ClassMask; // 20
- uint32 petTalentMask; // 21
- uint32 tabpage; // 22
- //char* internalname; // 23
+ uint32 ID; // 0
+ //char* Name[16]; // 1-16
+ //uint32 Name_lang_mask; // 17
+ //unit32 SpellIconID; // 18
+ //uint32 RaceMask; // 19
+ uint32 ClassMask; // 20
+ uint32 CategoryEnumID; // 21
+ uint32 OrderIndex; // 22
+ //char* BackgroundFile; // 23
};
struct TaxiNodesEntry
{
- uint32 ID; // 0 m_ID
- uint32 map_id; // 1 m_ContinentID
- float x; // 2 m_x
- float y; // 3 m_y
- float z; // 4 m_z
- char* name[16]; // 5-21 m_Name_lang
- // 22 string flags
- uint32 MountCreatureID[2]; // 23-24 m_MountCreatureID[2]
+ uint32 ID; // 0
+ uint32 ContinentID; // 1
+ DBCPosition3D Pos; // 2-4
+ char* Name[16]; // 5-21
+ //uint32 Name_lang_mask; // 22
+ uint32 MountCreatureID[2]; // 23-24
};
struct TaxiPathEntry
{
- uint32 ID; // 0 m_ID
- uint32 from; // 1 m_FromTaxiNode
- uint32 to; // 2 m_ToTaxiNode
- uint32 price; // 3 m_Cost
+ uint32 ID; // 0
+ uint32 FromTaxiNode; // 1
+ uint32 ToTaxiNode; // 2
+ uint32 Cost; // 3
};
struct TaxiPathNodeEntry
{
- // 0 ID
- uint32 PathID; // 1
- uint32 NodeIndex; // 2
- uint32 MapID; // 3
- float LocX; // 4
- float LocY; // 5
- float LocZ; // 6
- uint32 Flags; // 7
- uint32 Delay; // 8
- uint32 ArrivalEventID; // 9
- uint32 DepartureEventID; // 10
+ //uint32 ID; // 0
+ uint32 PathID; // 1
+ uint32 NodeIndex; // 2
+ uint32 ContinentID; // 3
+ DBCPosition3D Loc; // 4-6
+ uint32 Flags; // 7
+ uint32 Delay; // 8
+ uint32 ArrivalEventID; // 9
+ uint32 DepartureEventID; // 10
};
struct TeamContributionPointsEntry
{
- //uint32 entry; // 0
- float value; // 1 (???)
+ //uint32 ID; // 0
+ float Data; // 1
};
struct TotemCategoryEntry
{
- uint32 ID; // 0
- //char* name[16]; // 1-16
- // 17 string flags, unused
- uint32 categoryType; // 18 (one for specialization)
- uint32 categoryMask; // 19 (compatibility mask for same type: different for totems, compatible from high to low for rods)
+ uint32 ID; // 0
+ //char* Name[16]; // 1-16
+ //uint32 Name_lang_mask; // 17
+ uint32 TotemCategoryType; // 18 (one for specialization)
+ uint32 TotemCategoryMask; // 19 (compatibility mask for same type: different for totems, compatible from high to low for rods)
};
struct TransportAnimationEntry
{
- //uint32 Id;
- uint32 TransportEntry;
- uint32 TimeSeg;
- float X;
- float Y;
- float Z;
- //uint32 MovementId;
+ //uint32 ID; // 0
+ uint32 TransportID; // 1
+ uint32 TimeIndex; // 2
+ DBCPosition3D Pos; // 3
+ //uint32 SequenceID; // 4
};
struct TransportRotationEntry
{
- //uint32 Id;
- uint32 TransportEntry;
- uint32 TimeSeg;
- float X;
- float Y;
- float Z;
- float W;
+ //uint32 ID; // 0
+ uint32 GameObjectsID; // 1
+ uint32 TimeIndex; // 2
+ float X; // 3
+ float Y; // 4
+ float Z; // 5
+ float W; // 6
};
#define MAX_VEHICLE_SEATS 8
struct VehicleEntry
{
- uint32 m_ID; // 0
- uint32 m_flags; // 1
- float m_turnSpeed; // 2
- float m_pitchSpeed; // 3
- float m_pitchMin; // 4
- float m_pitchMax; // 5
- uint32 m_seatID[MAX_VEHICLE_SEATS]; // 6-13
- float m_mouseLookOffsetPitch; // 14
- float m_cameraFadeDistScalarMin; // 15
- float m_cameraFadeDistScalarMax; // 16
- float m_cameraPitchOffset; // 17
- //int m_powerType[3]; // removed in 3.1
- //int m_powerToken[3]; // removed in 3.1
- float m_facingLimitRight; // 18
- float m_facingLimitLeft; // 19
- float m_msslTrgtTurnLingering; // 20
- float m_msslTrgtPitchLingering; // 21
- float m_msslTrgtMouseLingering; // 22
- float m_msslTrgtEndOpacity; // 23
- float m_msslTrgtArcSpeed; // 24
- float m_msslTrgtArcRepeat; // 25
- float m_msslTrgtArcWidth; // 26
- float m_msslTrgtImpactRadius[2]; // 27-28
- char* m_msslTrgtArcTexture; // 29
- char* m_msslTrgtImpactTexture; // 30
- char* m_msslTrgtImpactModel[2]; // 31-32
- float m_cameraYawOffset; // 33
- uint32 m_uiLocomotionType; // 34
- float m_msslTrgtImpactTexRadius; // 35
- uint32 m_uiSeatIndicatorType; // 36
- uint32 m_powerDisplayId; // 37, new in 3.1
- // 38, new in 3.1
- // 39, new in 3.1
+ uint32 ID; // 0
+ uint32 Flags; // 1
+ float TurnSpeed; // 2
+ float PitchSpeed; // 3
+ float PitchMin; // 4
+ float PitchMax; // 5
+ uint32 SeatID[MAX_VEHICLE_SEATS]; // 6-13
+ float MouseLookOffsetPitch; // 14
+ float CameraFadeDistScalarMin; // 15
+ float CameraFadeDistScalarMax; // 16
+ float CameraPitchOffset; // 17
+ float FacingLimitRight; // 18
+ float FacingLimitLeft; // 19
+ float MsslTrgtTurnLingering; // 20
+ float MsslTrgtPitchLingering; // 21
+ float MsslTrgtMouseLingering; // 22
+ float MsslTrgtEndOpacity; // 23
+ float MsslTrgtArcSpeed; // 24
+ float MsslTrgtArcRepeat; // 25
+ float MsslTrgtArcWidth; // 26
+ float MsslTrgtImpactRadius[2]; // 27-28
+ char* MsslTrgtArcTexture; // 29
+ char* MsslTrgtImpactTexture; // 30
+ char* MsslTrgtImpactModel[2]; // 31-32
+ float CameraYawOffset; // 33
+ uint32 UiLocomotionType; // 34
+ float MsslTrgtImpactTexRadius; // 35
+ uint32 VehicleUIIndicatorID; // 36
+ uint32 PowerDisplayID; // 37
+ //uint32 PowerDisplayIDUnused[2]; // 38-39
};
struct VehicleSeatEntry
{
- uint32 m_ID; // 0
- uint32 m_flags; // 1
- int32 m_attachmentID; // 2
- float m_attachmentOffsetX; // 3
- float m_attachmentOffsetY; // 4
- float m_attachmentOffsetZ; // 5
- float m_enterPreDelay; // 6
- float m_enterSpeed; // 7
- float m_enterGravity; // 8
- float m_enterMinDuration; // 9
- float m_enterMaxDuration; // 10
- float m_enterMinArcHeight; // 11
- float m_enterMaxArcHeight; // 12
- int32 m_enterAnimStart; // 13
- int32 m_enterAnimLoop; // 14
- int32 m_rideAnimStart; // 15
- int32 m_rideAnimLoop; // 16
- int32 m_rideUpperAnimStart; // 17
- int32 m_rideUpperAnimLoop; // 18
- float m_exitPreDelay; // 19
- float m_exitSpeed; // 20
- float m_exitGravity; // 21
- float m_exitMinDuration; // 22
- float m_exitMaxDuration; // 23
- float m_exitMinArcHeight; // 24
- float m_exitMaxArcHeight; // 25
- int32 m_exitAnimStart; // 26
- int32 m_exitAnimLoop; // 27
- int32 m_exitAnimEnd; // 28
- float m_passengerYaw; // 29
- float m_passengerPitch; // 30
- float m_passengerRoll; // 31
- int32 m_passengerAttachmentID; // 32
- int32 m_vehicleEnterAnim; // 33
- int32 m_vehicleExitAnim; // 34
- int32 m_vehicleRideAnimLoop; // 35
- int32 m_vehicleEnterAnimBone; // 36
- int32 m_vehicleExitAnimBone; // 37
- int32 m_vehicleRideAnimLoopBone; // 38
- float m_vehicleEnterAnimDelay; // 39
- float m_vehicleExitAnimDelay; // 40
- uint32 m_vehicleAbilityDisplay; // 41
- uint32 m_enterUISoundID; // 42
- uint32 m_exitUISoundID; // 43
- int32 m_uiSkin; // 44
- uint32 m_flagsB; // 45
- // 46-57 added in 3.1, floats mostly
-
- inline bool HasFlag(VehicleSeatFlags flag) const { return !!(m_flags & flag); }
- inline bool HasFlag(VehicleSeatFlagsB flag) const { return !!(m_flagsB & flag); }
+ uint32 ID; // 0
+ uint32 Flags; // 1
+ int32 AttachmentID; // 2
+ DBCPosition3D AttachmentOffset; // 3-5
+ float EnterPreDelay; // 6
+ float EnterSpeed; // 7
+ float EnterGravity; // 8
+ float EnterMinDuration; // 9
+ float EnterMaxDuration; // 10
+ float EnterMinArcHeight; // 11
+ float EnterMaxArcHeight; // 12
+ int32 EnterAnimStart; // 13
+ int32 EnterAnimLoop; // 14
+ int32 RideAnimStart; // 15
+ int32 RideAnimLoop; // 16
+ int32 RideUpperAnimStart; // 17
+ int32 RideUpperAnimLoop; // 18
+ float ExitPreDelay; // 19
+ float ExitSpeed; // 20
+ float ExitGravity; // 21
+ float ExitMinDuration; // 22
+ float ExitMaxDuration; // 23
+ float ExitMinArcHeight; // 24
+ float ExitMaxArcHeight; // 25
+ int32 ExitAnimStart; // 26
+ int32 ExitAnimLoop; // 27
+ int32 ExitAnimEnd; // 28
+ float PassengerYaw; // 29
+ float PassengerPitch; // 30
+ float PassengerRoll; // 31
+ int32 PassengerAttachmentID; // 32
+ int32 VehicleEnterAnim; // 33
+ int32 VehicleExitAnim; // 34
+ int32 VehicleRideAnimLoop; // 35
+ int32 VehicleEnterAnimBone; // 36
+ int32 VehicleExitAnimBone; // 37
+ int32 VehicleRideAnimLoopBone; // 38
+ float VehicleEnterAnimDelay; // 39
+ float VehicleExitAnimDelay; // 40
+ uint32 VehicleAbilityDisplay; // 41
+ uint32 EnterUISoundID; // 42
+ uint32 ExitUISoundID; // 43
+ int32 UiSkin; // 44
+ uint32 FlagsB; // 45
+ //float CameraEnteringDelay; // 46
+ //float CameraEnteringDuration; // 47
+ //float CameraExitingDelay; // 48
+ //float CameraExitingDuration; // 49
+ //DBCPosition3D CameraOffset; // 50-52
+ //float CameraPosChaseRate; // 53
+ //float CameraFacingChaseRate; // 54
+ //float CameraEnteringZoom; // 55
+ //float CameraSeatZoomMin; // 56
+ //float CameraSeatZoomMax; // 57
+
+ inline bool HasFlag(VehicleSeatFlags flag) const { return (Flags & flag) != 0; }
+ inline bool HasFlag(VehicleSeatFlagsB flag) const { return (FlagsB & flag) != 0; }
inline bool CanEnterOrExit() const { return HasFlag(VehicleSeatFlags(VEHICLE_SEAT_FLAG_CAN_ENTER_OR_EXIT | VEHICLE_SEAT_FLAG_CAN_CONTROL | VEHICLE_SEAT_FLAG_SHOULD_USE_VEH_SEAT_EXIT_ANIM_ON_VOLUNTARY_EXIT)); }
inline bool CanSwitchFromSeat() const { return HasFlag(VEHICLE_SEAT_FLAG_CAN_SWITCH); }
@@ -1836,92 +1852,98 @@ struct VehicleSeatEntry
struct WMOAreaTableEntry
{
- uint32 Id; // 0 index
- int32 rootId; // 1 used in root WMO
- int32 adtId; // 2 used in adt file
- int32 groupId; // 3 used in group WMO
- //uint32 field4;
- //uint32 field5;
- //uint32 field6;
- //uint32 field7;
- //uint32 field8;
+ uint32 ID; // 0 index
+ int32 WMOID; // 1 used in root WMO
+ int32 NameSetID; // 2 used in adt file
+ int32 WMOGroupID; // 3 used in group WMO
+ //uint32 SoundProviderPref; // 4
+ //uint32 SoundProviderPrefUnderwater; // 5
+ //uint32 AmbienceID; // 6
+ //uint32 ZoneMusic; // 7
+ //uint32 IntroSound; // 8
uint32 Flags; // 9 used for indoor/outdoor determination
- uint32 areaId; // 10 link to AreaTableEntry.ID
- //char *Name[16];
- //uint32 nameFlags;
+ uint32 AreaTableID; // 10 link to AreaTableEntry.ID
+ //char* AreaName[16]; // 11
+ //uint32 AreaName_lang_mask; // 12
};
struct WorldMapAreaEntry
{
- //uint32 ID; // 0
- uint32 map_id; // 1
- uint32 area_id; // 2 index (continent 0 areas ignored)
- //char* internal_name // 3
- float y1; // 4
- float y2; // 5
- float x1; // 6
- float x2; // 7
- int32 virtual_map_id; // 8 -1 (map_id have correct map) other: virtual map where zone show (map_id - where zone in fact internally)
- // int32 dungeonMap_id; // 9 pointer to DungeonMap.dbc (owerride x1, x2, y1, y2 coordinates)
- // uint32 parentMapID; // 10
+ //uint32 ID; // 0
+ uint32 MapID; // 1
+ uint32 AreaID; // 2
+ //char* AreaName // 3
+ float LocLeft; // 4
+ float LocRight; // 5
+ float LocTop; // 6
+ float LocBottom; // 7
+ int32 DisplayMapID; // 8 -1 (map_id have correct map) other: virtual map where zone show (map_id - where zone in fact internally)
+ //int32 DefaultDungeonFloor; // 9 pointer to DungeonMap.dbc (override x1, x2, y1, y2 coordinates)
+ //uint32 ParentWorldMapID; // 10
};
#define MAX_WORLD_MAP_OVERLAY_AREA_IDX 4
struct WorldMapOverlayEntry
{
- uint32 ID; // 0
- //uint32 worldMapAreaId; // 1 idx in WorldMapArea.dbc
- uint32 areatableID[MAX_WORLD_MAP_OVERLAY_AREA_IDX]; // 2-5
- // 6-7 always 0, possible part of areatableID[]
- //char* internal_name // 8
- // 9-16 some ints
+ uint32 ID; // 0
+ //uint32 MapAreaID; // 1 ID in WorldMapArea.dbc
+ uint32 AreaID[MAX_WORLD_MAP_OVERLAY_AREA_IDX]; // 2-5
+ //uint32 MapPointX; // 6
+ //uint32 MapPointY; // 7
+ //char* TextureName // 8
+ //uint32 TextureWidth; // 9
+ //uint32 TextureHeight; // 10
+ //uint32 OffsetX; // 11
+ //uint32 OffsetY; // 12
+ //uint32 HitRectTop; // 13
+ //uint32 HitRectLeft; // 14
+ //uint32 HitRectBottom; // 15
+ //uint32 HitRectRight; // 16
};
struct WorldSafeLocsEntry
{
- uint32 ID; // 0
- uint32 map_id; // 1
- float x; // 2
- float y; // 3
- float z; // 4
- //char* name[16] // 5-20 name, unused
- // 21 name flags, unused
+ uint32 ID; // 0
+ uint32 Continent; // 1
+ DBCPosition3D Loc; // 2-4
+ //char* AreaName[16] // 5-20
+ //uint32 AreaName_lang_mask; // 21
};
/*
-struct WorldStateSounds
-{
- uint32 ID; // 0 Worldstate
- uint32 unk; // 1
- uint32 areaTable; // 2
- uint32 WMOAreaTable; // 3
- uint32 zoneIntroMusicTable; // 4
- uint32 zoneIntroMusic; // 5
- uint32 zoneMusic; // 6
- uint32 soundAmbience; // 7
- uint32 soundProviderPreferences; // 8
+struct WorldStateUI
+{
+ uint32 ID; // 0
+ uint32 MapID; // 1 Can be -1 to show up everywhere.
+ uint32 AreaID; // 2 Can be zero for "everywhere".
+ uint32 PhaseShift; // 3 Phase this WorldState is avaliable in
+ char* Icon; // 4 The icon that is used in the interface.
+ char* String; // 5-20
+ uint32 String_lang_mask; // 21
+ char* Tooltip; // 22-37
+ uint32 Tooltip_lang_mask; // 38
+ uint32 StateVariable; // 39
+ uint32 Type; // 40 0 = unknown, 1 = unknown, 2 = not shown in ui, 3 = wintergrasp
+ char* DynamicIcon; // 41
+ char* DynamicTooltip[16]; // 42-57
+ uint32 DynamicTooltip_lang_mask; // 58
+ char* ExtendedUI; // 59
+ uint32 ExtendedUIStateVariable[3]; // 60-62
};
*/
/*
-struct WorldStateUI
-{
- uint32 ID; // 0
- uint32 map_id; // 1 Can be -1 to show up everywhere.
- uint32 zone; // 2 Can be zero for "everywhere".
- uint32 phaseMask; // 3 Phase this WorldState is avaliable in
- uint32 icon; // 4 The icon that is used in the interface.
- char* textureFilename; // 5
- char* text; // 6-21 The worldstate text
- char* description; // 22-38 Text shown when hovering mouse on icon
- uint32 worldstateID; // 39 This is the actual ID used
- uint32 type; // 40 0 = unknown, 1 = unknown, 2 = not shown in ui, 3 = wintergrasp
- uint32 unk1; // 41
- uint32 unk2; // 43
- uint32 unk3; // 44-58
- uint32 unk4; // 59-61 Used for some progress bars.
- uint32 unk7; // 62 Unused in 3.3.5a
+struct WorldStateZoneSounds
+{
+ uint32 WorldStateID; // 0
+ uint32 WorldStateValue; // 1
+ uint32 AreaID; // 2
+ uint32 WMOAreaID; // 3
+ uint32 ZoneIntroMusicID; // 4
+ uint32 ZoneMusicID; // 5
+ uint32 SoundAmbienceID; // 6
+ uint32 SoundProviderPreferencesID; // 7
};
*/
diff --git a/src/server/shared/DataStores/DBCfmt.h b/src/server/shared/DataStores/DBCfmt.h
index 0370fea071b..1d0f3df9afb 100644
--- a/src/server/shared/DataStores/DBCfmt.h
+++ b/src/server/shared/DataStores/DBCfmt.h
@@ -18,7 +18,7 @@
#ifndef TRINITY_DBCSFRM_H
#define TRINITY_DBCSFRM_H
-char constexpr Achievementfmt[] = "niixssssssssssssssssxxxxxxxxxxxxxxxxxxiixixxxxxxxxxxxxxxxxxxii";
+char constexpr Achievementfmt[] = "niixssssssssssssssssxxxxxxxxxxxxxxxxxxiixixxxxxxxxxxxxxxxxxxii";
char constexpr CustomAchievementfmt[] = "pppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapapaaaaaaaaaaaaaaaaaapp";
char constexpr CustomAchievementIndex[] = "ID";
char constexpr AchievementCriteriafmt[] = "niiiiiiiixxxxxxxxxxxxxxxxxiiiix";
@@ -39,7 +39,7 @@ char constexpr ChatChannelsEntryfmt[] = "nixssssssssssssssssxxxxxxxxxxxxxxxxxx";
char constexpr ChrClassesEntryfmt[] = "nxixssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixii";
char constexpr ChrRacesEntryfmt[] = "niixiixiiixxiissssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi";
char constexpr CinematicCameraEntryfmt[] = "nsiffff";
-char constexpr CinematicSequencesEntryfmt[] = "nxixxxxxxx";
+char constexpr CinematicSequencesEntryfmt[] = "nxiiiiiiii";
char constexpr CreatureDisplayInfofmt[] = "nixifxxxxxxxxxxx";
char constexpr CreatureDisplayInfoExtrafmt[] = "diixxxxxxxxxxxxxxxxxx";
char constexpr CreatureFamilyfmt[] = "nfifiiiiixssssssssssssssssxx";
@@ -54,7 +54,7 @@ char constexpr DurabilityQualityfmt[] = "nf";
char constexpr EmotesEntryfmt[] = "nxxiiix";
char constexpr EmotesTextEntryfmt[] = "nxixxxxxxxxxxxxxxxx";
char constexpr EmotesTextSoundEntryfmt[] = "niiii";
-char constexpr FactionEntryfmt[] = "niiiiiiiiiiiiiiiiiiffixssssssssssssssssxxxxxxxxxxxxxxxxxx";
+char constexpr FactionEntryfmt[] = "niiiiiiiiiiiiiiiiiiffiissssssssssssssssxxxxxxxxxxxxxxxxxx";
char constexpr FactionTemplateEntryfmt[] = "niiiiiiiiiiiii";
char constexpr GameObjectDisplayInfofmt[] = "nsxxxxxxxxxxffffffx";
char constexpr GemPropertiesEntryfmt[] = "nixxi";
@@ -98,7 +98,7 @@ char constexpr QuestSortEntryfmt[] = "nxxxxxxxxxxxxxxxxx";
char constexpr QuestXPfmt[] = "niiiiiiiiii";
char constexpr PowerDisplayfmt[] = "nixxxx";
char constexpr PvPDifficultyfmt[] = "diiiii";
-char constexpr RandomPropertiesPointsfmt[] = "niiiiiiiiiiiiiii";
+char constexpr RandPropPointsfmt[] = "niiiiiiiiiiiiiii";
char constexpr ScalingStatDistributionfmt[] = "niiiiiiiiiiiiiiiiiiiii";
char constexpr ScalingStatValuesfmt[] = "iniiiiiiiiiiiiiiiiiiiiii";
char constexpr SkillLinefmt[] = "nixssssssssssssssssxxxxxxxxxxxxxxxxxxixxxxxxxxxxxxxxxxxi";
@@ -108,11 +108,11 @@ char constexpr SkillTiersfmt[] = "nxxxxxxxxxxxxxxxxiiiiiiiiiiiiiiii";
char constexpr SoundEntriesfmt[] = "nxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
char constexpr SpellCastTimefmt[] = "nixx";
char constexpr SpellCategoryfmt[] = "ni";
-char constexpr SpellDifficultyfmt[] = "niiii";
+char constexpr SpellDifficultyfmt[] = "niiii";
char constexpr CustomSpellDifficultyfmt[] = "ppppp";
char constexpr CustomSpellDifficultyIndex[] = "id";
char constexpr SpellDurationfmt[] = "niii";
-char constexpr SpellEntryfmt[] = "niiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiifxiiiiiiiiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiifffiiiiiiiiiiiiiissssssssssssssssxssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiiiiiiiiiiixfffxxxiiiiixxfffxx";
+char constexpr SpellEntryfmt[] = "niiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiifxiiiiiiiiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiiiiiiiifffiiiiiiiiiiiiiiifffiiiiiiiiiiiiiissssssssssssssssxssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiiiiiiiiiiixfffxxxiiiiixxfffxx";
char constexpr CustomSpellEntryfmt[] = "papppppppppppapapaaaaaaaaaaapaaapapppppppaaaaapaapaaaaaaaaaaaaaaaaaappppppppppppppppppppppppppppppppppppaaappppppppppppaaapppppppppaaaaapaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaappppppppapppaaaaappaaaaaaaa";
char constexpr CustomSpellEntryIndex[] = "Id";
char constexpr SpellFocusObjectfmt[] = "nxxxxxxxxxxxxxxxxx";
@@ -121,7 +121,7 @@ char constexpr SpellItemEnchantmentConditionfmt[] = "nbbbbbxxxxxbbbbbbbbbbiiiiiX
char constexpr SpellRadiusfmt[] = "nfff";
char constexpr SpellRangefmt[] = "nffffixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
char constexpr SpellRuneCostfmt[] = "niiii";
-char constexpr SpellShapeshiftfmt[] = "nxxxxxxxxxxxxxxxxxxiixiiixxiiiiiiii";
+char constexpr SpellShapeshiftFormfmt[] = "nxxxxxxxxxxxxxxxxxxiixiiiiiiiiiiiii";
char constexpr SpellVisualfmt[] = "dxxxxxxiixxxxxxxxxxxxxxxxxxxxxxx";
char constexpr StableSlotPricesfmt[] = "ni";
char constexpr SummonPropertiesfmt[] = "niiiii";
diff --git a/src/server/shared/SharedDefines.h b/src/server/shared/SharedDefines.h
index ab4265d087d..6b27202f749 100644
--- a/src/server/shared/SharedDefines.h
+++ b/src/server/shared/SharedDefines.h
@@ -3213,7 +3213,7 @@ enum ChatLinkColors : uint32
CHAT_LINK_COLOR_GLYPH = 0xff66bbff
};
-// Values from ItemPetFood (power of (value-1) used for compare with CreatureFamilyEntry.petDietMask
+// Values from ItemPetFood (power of (value-1) used for compare with CreatureFamilyEntry.PetFoodMask
enum PetDiet
{
PET_DIET_MEAT = 1,