Core/DataStores: Updated db2 structures to 7.3.2.25480

This commit is contained in:
Shauren
2017-11-18 20:12:12 +01:00
parent 20a3c9eed2
commit 7bb62cd23d
26 changed files with 1757 additions and 1217 deletions

View File

@@ -0,0 +1,316 @@
--
-- Table structure for table `achievement`
--
ALTER TABLE `achievement`
MODIFY `Faction` tinyint(4) NOT NULL DEFAULT '0' AFTER `SharesCriteria`,
MODIFY `Points` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `Faction`,
MODIFY `MinimumCriteria` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `Points`,
MODIFY `ID` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `MinimumCriteria`,
MODIFY `IconFileDataID` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `ID`,
MODIFY `CriteriaTree` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `IconFileDataID`;
--
-- Table structure for table `chr_races`
--
ALTER TABLE `chr_races`
MODIFY `MaleDisplayID` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `Flags`,
MODIFY `FemaleDisplayID` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `MaleDisplayID`,
CHANGE `Unk1` `AlteredFormTransitionSpellVisualID1` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `HighResFemaleDisplayID`,
CHANGE `Unk2` `AlteredFormTransitionSpellVisualID2` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `AlteredFormTransitionSpellVisualID1`,
CHANGE `Unk3` `AlteredFormTransitionSpellVisualID3` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `AlteredFormTransitionSpellVisualID2`,
ADD `AlteredFormTransitionSpellVisualKitID1` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `AlteredFormTransitionSpellVisualID3`,
ADD `AlteredFormTransitionSpellVisualKitID2` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `AlteredFormTransitionSpellVisualKitID1`,
ADD `AlteredFormTransitionSpellVisualKitID3` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `AlteredFormTransitionSpellVisualKitID2`;
--
-- Table structure for table `conversation_line`
--
ALTER TABLE `conversation_line`
MODIFY `BroadcastTextID` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `ID`,
MODIFY `SpellVisualKitID` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `BroadcastTextID`,
MODIFY `Duration` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `SpellVisualKitID`,
MODIFY `NextLineID` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `Duration`,
MODIFY `Unk1` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `NextLineID`,
MODIFY `Yell` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `Unk1`,
MODIFY `Unk2` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `Yell`,
MODIFY `Unk3` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `Unk2`,
MODIFY `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0' AFTER `Unk3`;
--
-- Table structure for table `criteria`
--
ALTER TABLE `criteria` MODIFY `ModifierTreeId` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `FailAsset`;
--
-- Table structure for table `criteria_tree`
--
ALTER TABLE `criteria_tree` MODIFY `Parent` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `CriteriaID`;
--
-- Table structure for table `item_level_selector`
--
ALTER TABLE `item_level_selector` ADD `ItemLevelSelectorQualitySetID` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `ItemLevel`;
--
-- Table structure for table `item_level_selector_quality`
--
DROP TABLE IF EXISTS `item_level_selector_quality`;
CREATE TABLE `item_level_selector_quality` (
`ID` int(10) unsigned NOT NULL DEFAULT '0',
`ItemBonusListID` int(10) unsigned NOT NULL DEFAULT '0',
`ItemLevelSelectorQualitySetID` smallint(5) unsigned NOT NULL DEFAULT '0',
`Quality` tinyint(3) unsigned NOT NULL DEFAULT '0',
`VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Table structure for table `item_level_selector_quality_set`
--
DROP TABLE IF EXISTS `item_level_selector_quality_set`;
CREATE TABLE `item_level_selector_quality_set` (
`ID` int(10) unsigned NOT NULL DEFAULT '0',
`ItemLevelMin` smallint(5) unsigned NOT NULL DEFAULT '0',
`ItemLevelMax` smallint(5) unsigned NOT NULL DEFAULT '0',
`VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Table structure for table `item_search_name`
--
ALTER TABLE `item_search_name`
MODIFY `RequiredReputationFaction` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `AllowableClass`,
MODIFY `RequiredReputationRank` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `RequiredReputationFaction`,
MODIFY `RequiredSkill` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `RequiredReputationRank`,
MODIFY `RequiredSkillRank` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `RequiredSkill`,
MODIFY `RequiredSpell` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `RequiredSkillRank`;
--
-- Table structure for table `item_sparse`
--
ALTER TABLE `item_sparse` ADD `Flags4` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Flags3`;
--
-- Table structure for table `keychain`
--
RENAME TABLE `key_chain` TO `keychain`;
--
-- Table structure for table `modifier_tree`
--
ALTER TABLE `modifier_tree` MODIFY `Parent` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `Asset2`;
--
-- Table structure for table `player_condition`
--
ALTER TABLE `player_condition`
MODIFY `Time1` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `RaceMask`,
MODIFY `Time2` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `Time1`,
MODIFY `AuraSpellID1` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `Time2`,
MODIFY `AuraSpellID2` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `AuraSpellID1`,
MODIFY `AuraSpellID3` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `AuraSpellID2`,
MODIFY `AuraSpellID4` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `AuraSpellID3`,
MODIFY `FailureDescription` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `AuraSpellID4`,
MODIFY `SkillID1` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `FailureDescription`,
MODIFY `SkillID2` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `SkillID1`,
MODIFY `SkillID3` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `SkillID2`,
MODIFY `SkillID4` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `SkillID3`,
MODIFY `MinSkill1` smallint(6) NOT NULL DEFAULT '0' AFTER `SkillID4`,
MODIFY `MinSkill2` smallint(6) NOT NULL DEFAULT '0' AFTER `MinSkill1`,
MODIFY `MinSkill3` smallint(6) NOT NULL DEFAULT '0' AFTER `MinSkill2`,
MODIFY `MinSkill4` smallint(6) NOT NULL DEFAULT '0' AFTER `MinSkill3`,
MODIFY `MaxSkill1` smallint(6) NOT NULL DEFAULT '0' AFTER `MinSkill4`,
MODIFY `MaxSkill2` smallint(6) NOT NULL DEFAULT '0' AFTER `MaxSkill1`,
MODIFY `MaxSkill3` smallint(6) NOT NULL DEFAULT '0' AFTER `MaxSkill2`,
MODIFY `MaxSkill4` smallint(6) NOT NULL DEFAULT '0' AFTER `MaxSkill3`,
MODIFY `PrevQuestID1` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `MaxSkill4`,
MODIFY `PrevQuestID2` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `PrevQuestID1`,
MODIFY `PrevQuestID3` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `PrevQuestID2`,
MODIFY `PrevQuestID4` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `PrevQuestID3`,
MODIFY `CurrQuestID1` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `PrevQuestID4`,
MODIFY `CurrQuestID2` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `CurrQuestID1`,
MODIFY `CurrQuestID3` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `CurrQuestID2`,
MODIFY `CurrQuestID4` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `CurrQuestID3`,
MODIFY `CurrentCompletedQuestID1` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `CurrQuestID4`,
MODIFY `CurrentCompletedQuestID2` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `CurrentCompletedQuestID1`,
MODIFY `CurrentCompletedQuestID3` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `CurrentCompletedQuestID2`,
MODIFY `CurrentCompletedQuestID4` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `CurrentCompletedQuestID3`,
MODIFY `Explored1` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `CurrentCompletedQuestID4`,
MODIFY `Explored2` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `Explored1`,
MODIFY `Achievement1` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `Explored2`,
MODIFY `Achievement2` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `Achievement1`,
MODIFY `Achievement3` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `Achievement2`,
MODIFY `Achievement4` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `Achievement3`,
MODIFY `AreaID1` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `Achievement4`,
MODIFY `AreaID2` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `AreaID1`,
MODIFY `AreaID3` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `AreaID2`,
MODIFY `AreaID4` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `AreaID3`,
MODIFY `Flags` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `AreaID4`,
MODIFY `MinReputation1` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `Flags`,
MODIFY `MinReputation2` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `MinReputation1`,
MODIFY `MinReputation3` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `MinReputation2`,
MODIFY `AuraCount1` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `MinReputation3`,
MODIFY `AuraCount2` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `AuraCount1`,
MODIFY `AuraCount3` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `AuraCount2`,
MODIFY `AuraCount4` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `AuraCount3`,
MODIFY `LfgStatus1` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `AuraCount4`,
MODIFY `LfgStatus2` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `LfgStatus1`,
MODIFY `LfgStatus3` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `LfgStatus2`,
MODIFY `LfgStatus4` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `LfgStatus3`,
MODIFY `LfgCompare1` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `LfgStatus4`,
MODIFY `LfgCompare2` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `LfgCompare1`,
MODIFY `LfgCompare3` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `LfgCompare2`,
MODIFY `LfgCompare4` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `LfgCompare3`,
MODIFY `CurrencyCount1` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `LfgCompare4`,
MODIFY `CurrencyCount2` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `CurrencyCount1`,
MODIFY `CurrencyCount3` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `CurrencyCount2`,
MODIFY `CurrencyCount4` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `CurrencyCount3`,
MODIFY `ClassMask` int(11) NOT NULL DEFAULT '0' AFTER `CurrencyCount4`,
MODIFY `MinFactionID1` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `ClassMask`,
MODIFY `MinFactionID2` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `MinFactionID1`,
MODIFY `MinFactionID3` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `MinFactionID2`,
MODIFY `SpellID1` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `MinFactionID3`,
MODIFY `SpellID2` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `SpellID1`,
MODIFY `SpellID3` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `SpellID2`,
MODIFY `SpellID4` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `SpellID3`,
MODIFY `ItemID1` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `SpellID4`,
MODIFY `ItemID2` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `ItemID1`,
MODIFY `ItemID3` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `ItemID2`,
MODIFY `ItemID4` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `ItemID3`,
MODIFY `ItemCount1` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `ItemID4`,
MODIFY `ItemCount2` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `ItemCount1`,
MODIFY `ItemCount3` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `ItemCount2`,
MODIFY `ItemCount4` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `ItemCount3`,
MODIFY `LfgValue1` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `ItemCount4`,
MODIFY `LfgValue2` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `LfgValue1`,
MODIFY `LfgValue3` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `LfgValue2`,
MODIFY `LfgValue4` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `LfgValue3`,
MODIFY `CurrencyID1` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `LfgValue4`,
MODIFY `CurrencyID2` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `CurrencyID1`,
MODIFY `CurrencyID3` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `CurrencyID2`,
MODIFY `CurrencyID4` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `CurrencyID3`,
MODIFY `QuestKillMonster1` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `CurrencyID4`,
MODIFY `QuestKillMonster2` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `QuestKillMonster1`,
MODIFY `QuestKillMonster3` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `QuestKillMonster2`,
MODIFY `QuestKillMonster4` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `QuestKillMonster3`,
MODIFY `QuestKillMonster5` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `QuestKillMonster4`,
MODIFY `QuestKillMonster6` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `QuestKillMonster5`,
MODIFY `MovementFlags1` int(11) NOT NULL DEFAULT '0' AFTER `QuestKillMonster6`,
MODIFY `MovementFlags2` int(11) NOT NULL DEFAULT '0' AFTER `MovementFlags1`,
MODIFY `MinLevel` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `MovementFlags2`,
MODIFY `MaxLevel` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `MinLevel`,
MODIFY `Gender` tinyint(4) NOT NULL DEFAULT '0' AFTER `MaxLevel`,
MODIFY `NativeGender` tinyint(4) NOT NULL DEFAULT '0' AFTER `Gender`,
MODIFY `LanguageID` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `SkillLogic`,
MODIFY `MinLanguage` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `LanguageID`,
MODIFY `MaxLanguage` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `MinLanguage`,
MODIFY `MaxFactionID` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `MaxLanguage`,
MODIFY `MaxReputation` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `MaxFactionID`,
MODIFY `Unknown1` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `ReputationLogic`,
MODIFY `MinPVPRank` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `Unknown1`,
MODIFY `MaxPVPRank` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `MinPVPRank`,
MODIFY `PvpMedal` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `MaxPVPRank`,
MODIFY `ItemFlags` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `ItemLogic`,
MODIFY `WorldStateExpressionID` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `AuraSpellLogic`,
MODIFY `WeatherID` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `WorldStateExpressionID`,
MODIFY `PartyStatus` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `WeatherID`,
MODIFY `LifetimeMaxPVPRank` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `PartyStatus`,
MODIFY `LfgLogic` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `AchievementLogic`,
MODIFY `CurrencyLogic` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `AreaLogic`,
MODIFY `QuestKillID` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `CurrencyLogic`,
MODIFY `MinExpansionLevel` tinyint(4) NOT NULL DEFAULT '0' AFTER `QuestKillLogic`,
MODIFY `MaxExpansionLevel` tinyint(4) NOT NULL DEFAULT '0' AFTER `MinExpansionLevel`,
MODIFY `MinExpansionTier` tinyint(4) NOT NULL DEFAULT '0' AFTER `MaxExpansionLevel`,
MODIFY `MaxExpansionTier` tinyint(4) NOT NULL DEFAULT '0' AFTER `MinExpansionTier`,
MODIFY `MinGuildLevel` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `MaxExpansionTier`,
MODIFY `MaxGuildLevel` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `MinGuildLevel`,
MODIFY `PhaseUseFlags` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `MaxGuildLevel`,
MODIFY `PhaseGroupID` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `PhaseID`,
MODIFY `MinAvgItemLevel` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `PhaseGroupID`,
MODIFY `MaxAvgItemLevel` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `MinAvgItemLevel`,
MODIFY `ChrSpecializationIndex` tinyint(4) NOT NULL DEFAULT '0' AFTER `MaxAvgEquippedItemLevel`,
MODIFY `ChrSpecializationRole` tinyint(4) NOT NULL DEFAULT '0' AFTER `ChrSpecializationIndex`,
MODIFY `PowerType` tinyint(4) NOT NULL DEFAULT '0' AFTER `ChrSpecializationRole`,
MODIFY `PowerTypeComp` tinyint(4) NOT NULL DEFAULT '0' AFTER `PowerType`,
MODIFY `PowerTypeValue` tinyint(4) NOT NULL DEFAULT '0' AFTER `PowerTypeComp`,
MODIFY `ModifierTreeID` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `PowerTypeValue`;
--
-- Table structure for table `scenario_step`
--
ALTER TABLE `scenario_step` MODIFY `CriteriaTreeID` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `Flags`;
--
-- Table structure for table `sound_kit`
--
ALTER TABLE `sound_kit`
MODIFY `ID` int(10) UNSIGNED NOT NULL DEFAULT '0' FIRST,
MODIFY `Flags` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `DistanceCutoff`,
MODIFY `SoundEntriesAdvancedID` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `Flags`,
MODIFY `SoundType` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `SoundEntriesAdvancedID`,
MODIFY `DialogType` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `SoundType`,
MODIFY `EAXDef` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `DialogType`,
DROP `Name`;
DROP TABLE `sound_kit_locale`;
--
-- Table structure for table `spell_aura_options`
--
ALTER TABLE `spell_aura_options` MODIFY `SpellProcsPerMinuteID` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `CumulativeAura`;
--
-- Table structure for table `spell_procs_per_minute_mod`
--
ALTER TABLE `spell_procs_per_minute_mod` MODIFY `SpellProcsPerMinuteID` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `Param`;
--
-- Table structure for table `taxi_nodes`
--
ALTER TABLE `taxi_nodes`
MODIFY `ID` int(10) UNSIGNED NOT NULL DEFAULT '0' FIRST,
ADD `Unk730` float NOT NULL DEFAULT '0' AFTER `MapOffsetY`,
ADD `FlightMapOffsetX` float NOT NULL DEFAULT '0' AFTER `Unk730`,
ADD `FlightMapOffsetY` float NOT NULL DEFAULT '0' AFTER `FlightMapOffsetX`,
ADD `UiTextureKitPrefixID` int(11) NOT NULL DEFAULT '0' AFTER `Flags`,
ADD `SpecialAtlasIconPlayerConditionID` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `UiTextureKitPrefixID`;
--
-- Table structure for table `taxi_path_node`
--
ALTER TABLE `taxi_path_node`
MODIFY `Flags` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `ID`,
MODIFY `Delay` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `Flags`,
MODIFY `ArrivalEventID` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `Delay`,
MODIFY `DepartureEventID` smallint(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `ArrivalEventID`;
--
-- Table structure for table `vehicle`
--
ALTER TABLE `vehicle`
ADD `MissileTargetingID` int(11) NOT NULL DEFAULT '0' AFTER `UILocomotionType`,
DROP `MsslTrgtTurnLingering`,
DROP `MsslTrgtPitchLingering`,
DROP `MsslTrgtMouseLingering`,
DROP `MsslTrgtEndOpacity`,
DROP `MsslTrgtArcSpeed`,
DROP `MsslTrgtArcRepeat`,
DROP `MsslTrgtArcWidth`,
DROP `MsslTrgtImpactRadius1`,
DROP `MsslTrgtImpactRadius2`,
DROP `MsslTrgtArcTexture`,
DROP `MsslTrgtImpactTexture`,
DROP `MsslTrgtImpactModel1`,
DROP `MsslTrgtImpactModel2`,
DROP `MsslTrgtImpactTexRadius`;
--
-- Table structure for table `world_map_area`
--
ALTER TABLE `world_map_area` MODIFY `Flags` int(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `LocBottom`;
--
-- Table structure for table `world_map_transforms`
--
ALTER TABLE `world_map_transforms` ADD `Priority` int(11) NOT NULL DEFAULT '0' AFTER `Flags`;

View File

@@ -573,7 +573,6 @@ void DB2FileLoaderRegularImpl::FillCommonValues(char** indexTable)
ASSERT(_loadInfo->Meta->Types[field] == FT_SHORT);
uint16 value = *reinterpret_cast<uint16*>(commonDataItr);
EndianConvert(value);
commonDataItr += sizeof(uint16);
for (uint32 arrayIndex = 0; arrayIndex < _loadInfo->Meta->ArraySizes[field]; ++arrayIndex)
*reinterpret_cast<uint16*>(&recordData[fieldOffset + sizeof(uint16) * arrayIndex]) = value;
break;
@@ -582,7 +581,6 @@ void DB2FileLoaderRegularImpl::FillCommonValues(char** indexTable)
{
ASSERT(_loadInfo->Meta->Types[field] == FT_BYTE);
uint8 value = *reinterpret_cast<uint8*>(commonDataItr);
commonDataItr += sizeof(uint8);
for (uint32 arrayIndex = 0; arrayIndex < _loadInfo->Meta->ArraySizes[field]; ++arrayIndex)
*reinterpret_cast<uint8*>(&recordData[fieldOffset + sizeof(uint8) * arrayIndex]) = value;
break;
@@ -592,7 +590,6 @@ void DB2FileLoaderRegularImpl::FillCommonValues(char** indexTable)
ASSERT(_loadInfo->Meta->Types[field] == FT_FLOAT);
float value = *reinterpret_cast<float*>(commonDataItr);
EndianConvert(value);
commonDataItr += sizeof(float);
for (uint32 arrayIndex = 0; arrayIndex < _loadInfo->Meta->ArraySizes[field]; ++arrayIndex)
*reinterpret_cast<float*>(&recordData[fieldOffset + sizeof(float) * arrayIndex]) = value;
break;
@@ -602,14 +599,16 @@ void DB2FileLoaderRegularImpl::FillCommonValues(char** indexTable)
ASSERT(_loadInfo->Meta->Types[field] == FT_INT);
uint32 value = *reinterpret_cast<uint32*>(commonDataItr);
EndianConvert(value);
commonDataItr += sizeof(uint32);
for (uint32 arrayIndex = 0; arrayIndex < _loadInfo->Meta->ArraySizes[field]; ++arrayIndex)
*reinterpret_cast<uint32*>(&recordData[fieldOffset + sizeof(uint32) * arrayIndex]) = value;
break;
}
default:
ASSERT(false, "Unhandled common value type %d found in %s", dataType, fileName);
break;
}
commonDataItr += sizeof(uint32);
}
switch (_loadInfo->Meta->Types[field])

View File

@@ -33,7 +33,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// Achievement.db2
PrepareStatement(HOTFIX_SEL_ACHIEVEMENT, "SELECT Title, Description, Flags, Reward, MapID, Supercedes, Category, UIOrder, SharesCriteria, "
"CriteriaTree, Faction, Points, MinimumCriteria, ID, IconFileDataID FROM achievement ORDER BY ID DESC", CONNECTION_SYNCH);
"Faction, Points, MinimumCriteria, ID, IconFileDataID, CriteriaTree FROM achievement ORDER BY ID DESC", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_ACHIEVEMENT, "SELECT ID, Title_lang, Description_lang, Reward_lang FROM achievement_locale WHERE locale = ?", CONNECTION_SYNCH);
// AnimKit.db2
@@ -170,12 +170,14 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PrepareStatement(HOTFIX_SEL_CHR_CLASSES_X_POWER_TYPES, "SELECT ID, ClassID, PowerType FROM chr_classes_x_power_types ORDER BY ID DESC", CONNECTION_SYNCH);
// ChrRaces.db2
PrepareStatement(HOTFIX_SEL_CHR_RACES, "SELECT ID, Flags, ClientPrefix, ClientFileString, Name, NameFemale, NameMale, FacialHairCustomization1, "
"FacialHairCustomization2, HairCustomization, CreateScreenFileDataID, SelectScreenFileDataID, MaleCustomizeOffset1, MaleCustomizeOffset2, "
"MaleCustomizeOffset3, FemaleCustomizeOffset1, FemaleCustomizeOffset2, FemaleCustomizeOffset3, LowResScreenFileDataID, FactionID, "
"MaleDisplayID, FemaleDisplayID, ResSicknessSpellID, SplashSoundID, CinematicSequenceID, BaseLanguage, CreatureType, TeamID, RaceRelated, "
PrepareStatement(HOTFIX_SEL_CHR_RACES, "SELECT ID, Flags, MaleDisplayID, FemaleDisplayID, ClientPrefix, ClientFileString, Name, NameFemale, "
"NameMale, FacialHairCustomization1, FacialHairCustomization2, HairCustomization, CreateScreenFileDataID, SelectScreenFileDataID, "
"MaleCustomizeOffset1, MaleCustomizeOffset2, MaleCustomizeOffset3, FemaleCustomizeOffset1, FemaleCustomizeOffset2, FemaleCustomizeOffset3, "
"LowResScreenFileDataID, FactionID, ResSicknessSpellID, SplashSoundID, CinematicSequenceID, BaseLanguage, CreatureType, TeamID, RaceRelated, "
"UnalteredVisualRaceID, CharComponentTextureLayoutID, DefaultClassID, NeutralRaceID, ItemAppearanceFrameRaceID, "
"CharComponentTexLayoutHiResID, HighResMaleDisplayID, HighResFemaleDisplayID, Unk1, Unk2, Unk3 FROM chr_races ORDER BY ID DESC", CONNECTION_SYNCH);
"CharComponentTexLayoutHiResID, HighResMaleDisplayID, HighResFemaleDisplayID, AlteredFormTransitionSpellVisualID1, "
"AlteredFormTransitionSpellVisualID2, AlteredFormTransitionSpellVisualID3, AlteredFormTransitionSpellVisualKitID1, "
"AlteredFormTransitionSpellVisualKitID2, AlteredFormTransitionSpellVisualKitID3 FROM chr_races ORDER BY ID DESC", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_RACES, "SELECT ID, Name_lang, NameFemale_lang, NameMale_lang FROM chr_races_locale WHERE locale = ?", CONNECTION_SYNCH);
// ChrSpecialization.db2
@@ -224,11 +226,11 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PREPARE_LOCALE_STMT(HOTFIX_SEL_CREATURE_TYPE, "SELECT ID, Name_lang FROM creature_type_locale WHERE locale = ?", CONNECTION_SYNCH);
// Criteria.db2
PrepareStatement(HOTFIX_SEL_CRITERIA, "SELECT ID, Asset, StartAsset, FailAsset, StartTimer, ModifierTreeId, EligibilityWorldStateID, Type, "
PrepareStatement(HOTFIX_SEL_CRITERIA, "SELECT ID, Asset, StartAsset, FailAsset, ModifierTreeId, StartTimer, EligibilityWorldStateID, Type, "
"StartEvent, FailEvent, Flags, EligibilityWorldStateValue FROM criteria ORDER BY ID DESC", CONNECTION_SYNCH);
// CriteriaTree.db2
PrepareStatement(HOTFIX_SEL_CRITERIA_TREE, "SELECT ID, Amount, Description, Parent, Flags, Operator, CriteriaID, OrderIndex FROM criteria_tree"
PrepareStatement(HOTFIX_SEL_CRITERIA_TREE, "SELECT ID, Amount, Description, Flags, Operator, CriteriaID, Parent, OrderIndex FROM criteria_tree"
" ORDER BY ID DESC", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_CRITERIA_TREE, "SELECT ID, Description_lang FROM criteria_tree_locale WHERE locale = ?", CONNECTION_SYNCH);
@@ -491,7 +493,15 @@ void HotfixDatabaseConnection::DoPrepareStatements()
"RequirementFlags, RequiredAchievement FROM item_extended_cost ORDER BY ID DESC", CONNECTION_SYNCH);
// ItemLevelSelector.db2
PrepareStatement(HOTFIX_SEL_ITEM_LEVEL_SELECTOR, "SELECT ID, ItemLevel FROM item_level_selector ORDER BY ID DESC", CONNECTION_SYNCH);
PrepareStatement(HOTFIX_SEL_ITEM_LEVEL_SELECTOR, "SELECT ID, ItemLevel, ItemLevelSelectorQualitySetID FROM item_level_selector ORDER BY ID DESC", CONNECTION_SYNCH);
// ItemLevelSelectorQuality.db2
PrepareStatement(HOTFIX_SEL_ITEM_LEVEL_SELECTOR_QUALITY, "SELECT ID, ItemBonusListID, ItemLevelSelectorQualitySetID, Quality"
" FROM item_level_selector_quality ORDER BY ID DESC", CONNECTION_SYNCH);
// ItemLevelSelectorQualitySet.db2
PrepareStatement(HOTFIX_SEL_ITEM_LEVEL_SELECTOR_QUALITY_SET, "SELECT ID, ItemLevelMin, ItemLevelMax FROM item_level_selector_quality_set"
" ORDER BY ID DESC", CONNECTION_SYNCH);
// ItemLimitCategory.db2
PrepareStatement(HOTFIX_SEL_ITEM_LIMIT_CATEGORY, "SELECT ID, Name, Quantity, Flags FROM item_limit_category ORDER BY ID DESC", CONNECTION_SYNCH);
@@ -515,8 +525,8 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_RANDOM_SUFFIX, "SELECT ID, Name_lang FROM item_random_suffix_locale WHERE locale = ?", CONNECTION_SYNCH);
// ItemSearchName.db2
PrepareStatement(HOTFIX_SEL_ITEM_SEARCH_NAME, "SELECT ID, Name, Flags1, Flags2, Flags3, AllowableRace, RequiredSpell, RequiredReputationFaction, "
"RequiredSkill, RequiredSkillRank, ItemLevel, Quality, RequiredExpansion, RequiredReputationRank, RequiredLevel, AllowableClass"
PrepareStatement(HOTFIX_SEL_ITEM_SEARCH_NAME, "SELECT ID, Name, Flags1, Flags2, Flags3, AllowableRace, ItemLevel, Quality, RequiredExpansion, "
"RequiredLevel, AllowableClass, RequiredReputationFaction, RequiredReputationRank, RequiredSkill, RequiredSkillRank, RequiredSpell"
" FROM item_search_name ORDER BY ID DESC", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_SEARCH_NAME, "SELECT ID, Name_lang FROM item_search_name_locale WHERE locale = ?", CONNECTION_SYNCH);
@@ -530,7 +540,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PrepareStatement(HOTFIX_SEL_ITEM_SET_SPELL, "SELECT ID, SpellID, ItemSetID, ChrSpecID, Threshold FROM item_set_spell ORDER BY ID DESC", CONNECTION_SYNCH);
// ItemSparse.db2
PrepareStatement(HOTFIX_SEL_ITEM_SPARSE, "SELECT ID, Flags1, Flags2, Flags3, Unk1, Unk2, BuyCount, BuyPrice, SellPrice, AllowableRace, "
PrepareStatement(HOTFIX_SEL_ITEM_SPARSE, "SELECT ID, Flags1, Flags2, Flags3, Flags4, Unk1, Unk2, BuyCount, BuyPrice, SellPrice, AllowableRace, "
"RequiredSpell, MaxCount, Stackable, ItemStatAllocation1, ItemStatAllocation2, ItemStatAllocation3, ItemStatAllocation4, ItemStatAllocation5, "
"ItemStatAllocation6, ItemStatAllocation7, ItemStatAllocation8, ItemStatAllocation9, ItemStatAllocation10, ItemStatSocketCostMultiplier1, "
"ItemStatSocketCostMultiplier2, ItemStatSocketCostMultiplier3, ItemStatSocketCostMultiplier4, ItemStatSocketCostMultiplier5, "
@@ -561,9 +571,9 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// ItemXBonusTree.db2
PrepareStatement(HOTFIX_SEL_ITEM_X_BONUS_TREE, "SELECT ID, ItemID, BonusTreeID FROM item_x_bonus_tree ORDER BY ID DESC", CONNECTION_SYNCH);
// KeyChain.db2
PrepareStatement(HOTFIX_SEL_KEY_CHAIN, "SELECT ID, Key1, Key2, Key3, Key4, Key5, Key6, Key7, Key8, Key9, Key10, Key11, Key12, Key13, Key14, "
"Key15, Key16, Key17, Key18, Key19, Key20, Key21, Key22, Key23, Key24, Key25, Key26, Key27, Key28, Key29, Key30, Key31, Key32 FROM key_chain"
// Keychain.db2
PrepareStatement(HOTFIX_SEL_KEYCHAIN, "SELECT ID, Key1, Key2, Key3, Key4, Key5, Key6, Key7, Key8, Key9, Key10, Key11, Key12, Key13, Key14, Key15, "
"Key16, Key17, Key18, Key19, Key20, Key21, Key22, Key23, Key24, Key25, Key26, Key27, Key28, Key29, Key30, Key31, Key32 FROM keychain"
" ORDER BY ID DESC", CONNECTION_SYNCH);
// LfgDungeons.db2
@@ -653,22 +663,23 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PrepareStatement(HOTFIX_SEL_PHASE_X_PHASE_GROUP, "SELECT ID, PhaseID, PhaseGroupID FROM phase_x_phase_group ORDER BY ID DESC", CONNECTION_SYNCH);
// PlayerCondition.db2
PrepareStatement(HOTFIX_SEL_PLAYER_CONDITION, "SELECT ID, RaceMask, SkillLogic, ReputationLogic, PrevQuestLogic, CurrQuestLogic, "
"CurrentCompletedQuestLogic, SpellLogic, ItemLogic, Time1, Time2, AuraSpellLogic, AuraSpellID1, AuraSpellID2, AuraSpellID3, AuraSpellID4, "
"AchievementLogic, AreaLogic, QuestKillLogic, FailureDescription, MinLevel, MaxLevel, SkillID1, SkillID2, SkillID3, SkillID4, MinSkill1, "
"MinSkill2, MinSkill3, MinSkill4, MaxSkill1, MaxSkill2, MaxSkill3, MaxSkill4, MaxFactionID, PrevQuestID1, PrevQuestID2, PrevQuestID3, "
"PrevQuestID4, CurrQuestID1, CurrQuestID2, CurrQuestID3, CurrQuestID4, CurrentCompletedQuestID1, CurrentCompletedQuestID2, "
"CurrentCompletedQuestID3, CurrentCompletedQuestID4, Explored1, Explored2, WorldStateExpressionID, Achievement1, Achievement2, Achievement3, "
"Achievement4, AreaID1, AreaID2, AreaID3, AreaID4, QuestKillID, PhaseID, MinAvgEquippedItemLevel, MaxAvgEquippedItemLevel, ModifierTreeID, "
"Flags, Gender, NativeGender, MinLanguage, MaxLanguage, MinReputation1, MinReputation2, MinReputation3, MaxReputation, Unknown1, MinPVPRank, "
"MaxPVPRank, PvpMedal, ItemFlags, AuraCount1, AuraCount2, AuraCount3, AuraCount4, WeatherID, PartyStatus, LifetimeMaxPVPRank, LfgStatus1, "
"LfgStatus2, LfgStatus3, LfgStatus4, LfgCompare1, LfgCompare2, LfgCompare3, LfgCompare4, CurrencyCount1, CurrencyCount2, CurrencyCount3, "
"CurrencyCount4, MinExpansionLevel, MaxExpansionLevel, MinExpansionTier, MaxExpansionTier, MinGuildLevel, MaxGuildLevel, PhaseUseFlags, "
"ChrSpecializationIndex, ChrSpecializationRole, PowerType, PowerTypeComp, PowerTypeValue, ClassMask, LanguageID, MinFactionID1, "
"MinFactionID2, MinFactionID3, SpellID1, SpellID2, SpellID3, SpellID4, ItemID1, ItemID2, ItemID3, ItemID4, ItemCount1, ItemCount2, "
"ItemCount3, ItemCount4, LfgLogic, LfgValue1, LfgValue2, LfgValue3, LfgValue4, CurrencyLogic, CurrencyID1, CurrencyID2, CurrencyID3, "
"CurrencyID4, QuestKillMonster1, QuestKillMonster2, QuestKillMonster3, QuestKillMonster4, QuestKillMonster5, QuestKillMonster6, PhaseGroupID, "
"MinAvgItemLevel, MaxAvgItemLevel, MovementFlags1, MovementFlags2, MainHandItemSubclassMask FROM player_condition ORDER BY ID DESC", CONNECTION_SYNCH);
PrepareStatement(HOTFIX_SEL_PLAYER_CONDITION, "SELECT ID, RaceMask, Time1, Time2, AuraSpellID1, AuraSpellID2, AuraSpellID3, AuraSpellID4, "
"FailureDescription, SkillID1, SkillID2, SkillID3, SkillID4, MinSkill1, MinSkill2, MinSkill3, MinSkill4, MaxSkill1, MaxSkill2, MaxSkill3, "
"MaxSkill4, PrevQuestID1, PrevQuestID2, PrevQuestID3, PrevQuestID4, CurrQuestID1, CurrQuestID2, CurrQuestID3, CurrQuestID4, "
"CurrentCompletedQuestID1, CurrentCompletedQuestID2, CurrentCompletedQuestID3, CurrentCompletedQuestID4, Explored1, Explored2, Achievement1, "
"Achievement2, Achievement3, Achievement4, AreaID1, AreaID2, AreaID3, AreaID4, Flags, MinReputation1, MinReputation2, MinReputation3, "
"AuraCount1, AuraCount2, AuraCount3, AuraCount4, LfgStatus1, LfgStatus2, LfgStatus3, LfgStatus4, LfgCompare1, LfgCompare2, LfgCompare3, "
"LfgCompare4, CurrencyCount1, CurrencyCount2, CurrencyCount3, CurrencyCount4, ClassMask, MinFactionID1, MinFactionID2, MinFactionID3, "
"SpellID1, SpellID2, SpellID3, SpellID4, ItemID1, ItemID2, ItemID3, ItemID4, ItemCount1, ItemCount2, ItemCount3, ItemCount4, LfgValue1, "
"LfgValue2, LfgValue3, LfgValue4, CurrencyID1, CurrencyID2, CurrencyID3, CurrencyID4, QuestKillMonster1, QuestKillMonster2, "
"QuestKillMonster3, QuestKillMonster4, QuestKillMonster5, QuestKillMonster6, MovementFlags1, MovementFlags2, MinLevel, MaxLevel, Gender, "
"NativeGender, SkillLogic, LanguageID, MinLanguage, MaxLanguage, MaxFactionID, MaxReputation, ReputationLogic, Unknown1, MinPVPRank, "
"MaxPVPRank, PvpMedal, PrevQuestLogic, CurrQuestLogic, CurrentCompletedQuestLogic, SpellLogic, ItemLogic, ItemFlags, AuraSpellLogic, "
"WorldStateExpressionID, WeatherID, PartyStatus, LifetimeMaxPVPRank, AchievementLogic, LfgLogic, AreaLogic, CurrencyLogic, QuestKillID, "
"QuestKillLogic, MinExpansionLevel, MaxExpansionLevel, MinExpansionTier, MaxExpansionTier, MinGuildLevel, MaxGuildLevel, PhaseUseFlags, "
"PhaseID, PhaseGroupID, MinAvgItemLevel, MaxAvgItemLevel, MinAvgEquippedItemLevel, MaxAvgEquippedItemLevel, ChrSpecializationIndex, "
"ChrSpecializationRole, PowerType, PowerTypeComp, PowerTypeValue, ModifierTreeID, MainHandItemSubclassMask FROM player_condition"
" ORDER BY ID DESC", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_PLAYER_CONDITION, "SELECT ID, FailureDescription_lang FROM player_condition_locale WHERE locale = ?", CONNECTION_SYNCH);
// PowerDisplay.db2
@@ -735,7 +746,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PREPARE_LOCALE_STMT(HOTFIX_SEL_SCENARIO, "SELECT ID, Name_lang FROM scenario_locale WHERE locale = ?", CONNECTION_SYNCH);
// ScenarioStep.db2
PrepareStatement(HOTFIX_SEL_SCENARIO_STEP, "SELECT ID, Description, Name, CriteriaTreeID, ScenarioID, PreviousStepID, QuestRewardID, Step, Flags, "
PrepareStatement(HOTFIX_SEL_SCENARIO_STEP, "SELECT ID, Description, Name, ScenarioID, PreviousStepID, QuestRewardID, Step, Flags, CriteriaTreeID, "
"BonusRequiredStepID FROM scenario_step ORDER BY ID DESC", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_SCENARIO_STEP, "SELECT ID, Description_lang, Name_lang FROM scenario_step_locale WHERE locale = ?", CONNECTION_SYNCH);
@@ -761,10 +772,9 @@ void HotfixDatabaseConnection::DoPrepareStatements()
" FROM skill_race_class_info ORDER BY ID DESC", CONNECTION_SYNCH);
// SoundKit.db2
PrepareStatement(HOTFIX_SEL_SOUND_KIT, "SELECT Name, VolumeFloat, MinDistance, DistanceCutoff, VolumeVariationPlus, VolumeVariationMinus, "
"PitchVariationPlus, PitchVariationMinus, PitchAdjust, Flags, SoundEntriesAdvancedID, BusOverwriteID, SoundType, EAXDef, DialogType, Unk700, "
"ID FROM sound_kit ORDER BY ID DESC", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_SOUND_KIT, "SELECT ID, Name_lang FROM sound_kit_locale WHERE locale = ?", CONNECTION_SYNCH);
PrepareStatement(HOTFIX_SEL_SOUND_KIT, "SELECT ID, VolumeFloat, MinDistance, DistanceCutoff, Flags, SoundEntriesAdvancedID, SoundType, "
"DialogType, EAXDef, VolumeVariationPlus, VolumeVariationMinus, PitchVariationPlus, PitchVariationMinus, PitchAdjust, BusOverwriteID, Unk700"
" FROM sound_kit ORDER BY ID DESC", CONNECTION_SYNCH);
// SpecializationSpells.db2
PrepareStatement(HOTFIX_SEL_SPECIALIZATION_SPELLS, "SELECT SpellID, OverridesSpellID, Description, SpecID, OrderIndex, ID"
@@ -779,7 +789,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// SpellAuraOptions.db2
PrepareStatement(HOTFIX_SEL_SPELL_AURA_OPTIONS, "SELECT ID, SpellID, ProcCharges, ProcTypeMask, ProcCategoryRecovery, CumulativeAura, "
"DifficultyID, ProcChance, SpellProcsPerMinuteID FROM spell_aura_options ORDER BY ID DESC", CONNECTION_SYNCH);
"SpellProcsPerMinuteID, DifficultyID, ProcChance FROM spell_aura_options ORDER BY ID DESC", CONNECTION_SYNCH);
// SpellAuraRestrictions.db2
PrepareStatement(HOTFIX_SEL_SPELL_AURA_RESTRICTIONS, "SELECT ID, SpellID, CasterAuraSpell, TargetAuraSpell, ExcludeCasterAuraSpell, "
@@ -874,7 +884,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PrepareStatement(HOTFIX_SEL_SPELL_PROCS_PER_MINUTE, "SELECT ID, BaseProcRate, Flags FROM spell_procs_per_minute ORDER BY ID DESC", CONNECTION_SYNCH);
// SpellProcsPerMinuteMod.db2
PrepareStatement(HOTFIX_SEL_SPELL_PROCS_PER_MINUTE_MOD, "SELECT ID, Coeff, Param, Type, SpellProcsPerMinuteID FROM spell_procs_per_minute_mod"
PrepareStatement(HOTFIX_SEL_SPELL_PROCS_PER_MINUTE_MOD, "SELECT ID, Coeff, Param, SpellProcsPerMinuteID, Type FROM spell_procs_per_minute_mod"
" ORDER BY ID DESC", CONNECTION_SYNCH);
// SpellRadius.db2
@@ -931,16 +941,17 @@ void HotfixDatabaseConnection::DoPrepareStatements()
PREPARE_LOCALE_STMT(HOTFIX_SEL_TALENT, "SELECT ID, Description_lang FROM talent_locale WHERE locale = ?", CONNECTION_SYNCH);
// TaxiNodes.db2
PrepareStatement(HOTFIX_SEL_TAXI_NODES, "SELECT PosX, PosY, PosZ, Name, MountCreatureID1, MountCreatureID2, MapOffsetX, MapOffsetY, MapID, "
"ConditionID, LearnableIndex, Flags, ID FROM taxi_nodes ORDER BY ID DESC", CONNECTION_SYNCH);
PrepareStatement(HOTFIX_SEL_TAXI_NODES, "SELECT ID, PosX, PosY, PosZ, Name, MountCreatureID1, MountCreatureID2, MapOffsetX, MapOffsetY, Unk730, "
"FlightMapOffsetX, FlightMapOffsetY, MapID, ConditionID, LearnableIndex, Flags, UiTextureKitPrefixID, SpecialAtlasIconPlayerConditionID"
" FROM taxi_nodes ORDER BY ID DESC", CONNECTION_SYNCH);
PREPARE_LOCALE_STMT(HOTFIX_SEL_TAXI_NODES, "SELECT ID, Name_lang FROM taxi_nodes_locale WHERE locale = ?", CONNECTION_SYNCH);
// TaxiPath.db2
PrepareStatement(HOTFIX_SEL_TAXI_PATH, "SELECT `From`, `To`, ID, Cost FROM taxi_path ORDER BY ID DESC", CONNECTION_SYNCH);
// TaxiPathNode.db2
PrepareStatement(HOTFIX_SEL_TAXI_PATH_NODE, "SELECT LocX, LocY, LocZ, Delay, PathID, MapID, ArrivalEventID, DepartureEventID, NodeIndex, Flags, "
"ID FROM taxi_path_node ORDER BY ID DESC", CONNECTION_SYNCH);
PrepareStatement(HOTFIX_SEL_TAXI_PATH_NODE, "SELECT LocX, LocY, LocZ, PathID, MapID, NodeIndex, ID, Flags, Delay, ArrivalEventID, "
"DepartureEventID FROM taxi_path_node ORDER BY ID DESC", CONNECTION_SYNCH);
// TotemCategory.db2
PrepareStatement(HOTFIX_SEL_TOTEM_CATEGORY, "SELECT ID, Name, CategoryMask, CategoryType FROM totem_category ORDER BY ID DESC", CONNECTION_SYNCH);
@@ -981,11 +992,9 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// Vehicle.db2
PrepareStatement(HOTFIX_SEL_VEHICLE, "SELECT ID, Flags, TurnSpeed, PitchSpeed, PitchMin, PitchMax, MouseLookOffsetPitch, CameraFadeDistScalarMin, "
"CameraFadeDistScalarMax, CameraPitchOffset, FacingLimitRight, FacingLimitLeft, MsslTrgtTurnLingering, MsslTrgtPitchLingering, "
"MsslTrgtMouseLingering, MsslTrgtEndOpacity, MsslTrgtArcSpeed, MsslTrgtArcRepeat, MsslTrgtArcWidth, MsslTrgtImpactRadius1, "
"MsslTrgtImpactRadius2, MsslTrgtArcTexture, MsslTrgtImpactTexture, MsslTrgtImpactModel1, MsslTrgtImpactModel2, CameraYawOffset, "
"MsslTrgtImpactTexRadius, SeatID1, SeatID2, SeatID3, SeatID4, SeatID5, SeatID6, SeatID7, SeatID8, VehicleUIIndicatorID, PowerDisplayID1, "
"PowerDisplayID2, PowerDisplayID3, FlagsB, UILocomotionType FROM vehicle ORDER BY ID DESC", CONNECTION_SYNCH);
"CameraFadeDistScalarMax, CameraPitchOffset, FacingLimitRight, FacingLimitLeft, CameraYawOffset, SeatID1, SeatID2, SeatID3, SeatID4, SeatID5, "
"SeatID6, SeatID7, SeatID8, VehicleUIIndicatorID, PowerDisplayID1, PowerDisplayID2, PowerDisplayID3, FlagsB, UILocomotionType, "
"MissileTargetingID FROM vehicle ORDER BY ID DESC", CONNECTION_SYNCH);
// VehicleSeat.db2
PrepareStatement(HOTFIX_SEL_VEHICLE_SEAT, "SELECT ID, Flags1, Flags2, Flags3, AttachmentOffsetX, AttachmentOffsetY, AttachmentOffsetZ, "
@@ -1009,8 +1018,8 @@ void HotfixDatabaseConnection::DoPrepareStatements()
"PlayerConditionID FROM world_effect ORDER BY ID DESC", CONNECTION_SYNCH);
// WorldMapArea.db2
PrepareStatement(HOTFIX_SEL_WORLD_MAP_AREA, "SELECT AreaName, LocLeft, LocRight, LocTop, LocBottom, MapID, AreaID, DisplayMapID, "
"DefaultDungeonFloor, ParentWorldMapID, Flags, LevelRangeMin, LevelRangeMax, BountySetID, BountyBoardLocation, ID, PlayerConditionID"
PrepareStatement(HOTFIX_SEL_WORLD_MAP_AREA, "SELECT AreaName, LocLeft, LocRight, LocTop, LocBottom, Flags, MapID, AreaID, DisplayMapID, "
"DefaultDungeonFloor, ParentWorldMapID, LevelRangeMin, LevelRangeMax, BountySetID, BountyBoardLocation, ID, PlayerConditionID"
" FROM world_map_area ORDER BY ID DESC", CONNECTION_SYNCH);
// WorldMapOverlay.db2
@@ -1020,7 +1029,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
// WorldMapTransforms.db2
PrepareStatement(HOTFIX_SEL_WORLD_MAP_TRANSFORMS, "SELECT ID, RegionMinX, RegionMinY, RegionMinZ, RegionMaxX, RegionMaxY, RegionMaxZ, "
"RegionOffsetX, RegionOffsetY, RegionScale, MapID, AreaID, NewMapID, NewDungeonMapID, NewAreaID, Flags FROM world_map_transforms"
"RegionOffsetX, RegionOffsetY, RegionScale, MapID, AreaID, NewMapID, NewDungeonMapID, NewAreaID, Flags, Priority FROM world_map_transforms"
" ORDER BY ID DESC", CONNECTION_SYNCH);
// WorldSafeLocs.db2

View File

@@ -276,6 +276,10 @@ enum HotfixDatabaseStatements : uint32
HOTFIX_SEL_ITEM_LEVEL_SELECTOR,
HOTFIX_SEL_ITEM_LEVEL_SELECTOR_QUALITY,
HOTFIX_SEL_ITEM_LEVEL_SELECTOR_QUALITY_SET,
HOTFIX_SEL_ITEM_LIMIT_CATEGORY,
HOTFIX_SEL_ITEM_LIMIT_CATEGORY_LOCALE,
@@ -308,7 +312,7 @@ enum HotfixDatabaseStatements : uint32
HOTFIX_SEL_ITEM_X_BONUS_TREE,
HOTFIX_SEL_KEY_CHAIN,
HOTFIX_SEL_KEYCHAIN,
HOTFIX_SEL_LFG_DUNGEONS,
HOTFIX_SEL_LFG_DUNGEONS_LOCALE,
@@ -412,7 +416,6 @@ enum HotfixDatabaseStatements : uint32
HOTFIX_SEL_SKILL_RACE_CLASS_INFO,
HOTFIX_SEL_SOUND_KIT,
HOTFIX_SEL_SOUND_KIT_LOCALE,
HOTFIX_SEL_SPECIALIZATION_SPELLS,
HOTFIX_SEL_SPECIALIZATION_SPELLS_LOCALE,

View File

@@ -1904,7 +1904,7 @@ void Battleground::StartCriteriaTimer(CriteriaTimedTypes type, uint32 entry)
player->StartCriteriaTimer(type, entry);
}
void Battleground::SetBracket(PvpDifficultyEntry const* bracketEntry)
void Battleground::SetBracket(PVPDifficultyEntry const* bracketEntry)
{
m_BracketId = bracketEntry->GetBracketId();
SetLevelRange(bracketEntry->MinLevel, bracketEntry->MaxLevel);

View File

@@ -35,7 +35,7 @@ class Unit;
class WorldObject;
class WorldPacket;
struct BattlegroundScore;
struct PvpDifficultyEntry;
struct PVPDifficultyEntry;
struct WorldSafeLocsEntry;
namespace WorldPackets
@@ -301,7 +301,7 @@ class TC_GAME_API Battleground
void SetTypeID(BattlegroundTypeId TypeID) { m_TypeID = TypeID; }
void SetRandomTypeID(BattlegroundTypeId TypeID) { m_RandomTypeID = TypeID; }
//here we can count minlevel and maxlevel for players
void SetBracket(PvpDifficultyEntry const* bracketEntry);
void SetBracket(PVPDifficultyEntry const* bracketEntry);
void SetInstanceID(uint32 InstanceID) { m_InstanceID = InstanceID; }
void SetStatus(BattlegroundStatus Status) { m_Status = Status; }
void SetClientInstanceID(uint32 InstanceID) { m_ClientInstanceID = InstanceID; }

View File

@@ -296,7 +296,7 @@ uint32 BattlegroundMgr::CreateClientVisibleInstanceId(BattlegroundTypeId bgTypeI
}
// create a new battleground that will really be used to play
Battleground* BattlegroundMgr::CreateNewBattleground(BattlegroundTypeId originalBgTypeId, PvpDifficultyEntry const* bracketEntry, uint8 arenaType, bool isRated)
Battleground* BattlegroundMgr::CreateNewBattleground(BattlegroundTypeId originalBgTypeId, PVPDifficultyEntry const* bracketEntry, uint8 arenaType, bool isRated)
{
BattlegroundTypeId bgTypeId = GetRandomBG(originalBgTypeId);

View File

@@ -98,7 +98,7 @@ class TC_GAME_API BattlegroundMgr
/* Battlegrounds */
Battleground* GetBattleground(uint32 InstanceID, BattlegroundTypeId bgTypeId);
Battleground* GetBattlegroundTemplate(BattlegroundTypeId bgTypeId);
Battleground* CreateNewBattleground(BattlegroundTypeId bgTypeId, PvpDifficultyEntry const* bracketEntry, uint8 arenaType, bool isRated);
Battleground* CreateNewBattleground(BattlegroundTypeId bgTypeId, PVPDifficultyEntry const* bracketEntry, uint8 arenaType, bool isRated);
void AddBattleground(Battleground* bg);
void RemoveBattleground(BattlegroundTypeId bgTypeId, uint32 instanceId);

View File

@@ -130,7 +130,7 @@ bool BattlegroundQueue::SelectionPool::AddGroup(GroupQueueInfo* ginfo, uint32 de
/*********************************************************/
// add group or player (grp == NULL) to bg queue with the given leader and bg specifications
GroupQueueInfo* BattlegroundQueue::AddGroup(Player* leader, Group* grp, BattlegroundTypeId BgTypeId, PvpDifficultyEntry const* bracketEntry, uint8 ArenaType, bool isRated, bool isPremade, uint32 ArenaRating, uint32 MatchmakerRating, uint32 arenateamid)
GroupQueueInfo* BattlegroundQueue::AddGroup(Player* leader, Group* grp, BattlegroundTypeId BgTypeId, PVPDifficultyEntry const* bracketEntry, uint8 ArenaType, bool isRated, bool isPremade, uint32 ArenaRating, uint32 MatchmakerRating, uint32 arenateamid)
{
BattlegroundBracketId bracketId = bracketEntry->GetBracketId();
@@ -818,7 +818,7 @@ void BattlegroundQueue::BattlegroundQueueUpdate(uint32 /*diff*/, BattlegroundTyp
return;
}
PvpDifficultyEntry const* bracketEntry = DB2Manager::GetBattlegroundBracketById(bg_template->GetMapId(), bracket_id);
PVPDifficultyEntry const* bracketEntry = DB2Manager::GetBattlegroundBracketById(bg_template->GetMapId(), bracket_id);
if (!bracketEntry)
{
TC_LOG_ERROR("bg.battleground", "Battleground: Update: bg bracket entry not found for map %u bracket id %u", bg_template->GetMapId(), bracket_id);

View File

@@ -85,7 +85,7 @@ class TC_GAME_API BattlegroundQueue
bool CheckPremadeMatch(BattlegroundBracketId bracket_id, uint32 MinPlayersPerTeam, uint32 MaxPlayersPerTeam);
bool CheckNormalMatch(Battleground* bg_template, BattlegroundBracketId bracket_id, uint32 minPlayers, uint32 maxPlayers);
bool CheckSkirmishForSameFaction(BattlegroundBracketId bracket_id, uint32 minPlayersPerTeam);
GroupQueueInfo* AddGroup(Player* leader, Group* group, BattlegroundTypeId bgTypeId, PvpDifficultyEntry const* bracketEntry, uint8 ArenaType, bool isRated, bool isPremade, uint32 ArenaRating, uint32 MatchmakerRating, uint32 ArenaTeamId = 0);
GroupQueueInfo* AddGroup(Player* leader, Group* group, BattlegroundTypeId bgTypeId, PVPDifficultyEntry const* bracketEntry, uint8 ArenaType, bool isRated, bool isPremade, uint32 ArenaRating, uint32 MatchmakerRating, uint32 ArenaTeamId = 0);
void RemovePlayer(ObjectGuid guid, bool decreaseInvitedCount);
bool IsPlayerInvited(ObjectGuid pl_guid, const uint32 bgInstanceGuid, const uint32 removeTime);
bool GetPlayerGroupInfoData(ObjectGuid guid, GroupQueueInfo* ginfo);

View File

@@ -39,12 +39,12 @@ struct AchievementLoadInfo
{ false, FT_SHORT, "Category" },
{ false, FT_SHORT, "UIOrder" },
{ false, FT_SHORT, "SharesCriteria" },
{ false, FT_SHORT, "CriteriaTree" },
{ true, FT_BYTE, "Faction" },
{ false, FT_BYTE, "Points" },
{ false, FT_BYTE, "MinimumCriteria" },
{ false, FT_INT, "ID" },
{ false, FT_INT, "IconFileDataID" },
{ false, FT_INT, "CriteriaTree" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, AchievementMeta::Instance(), HOTFIX_SEL_ACHIEVEMENT);
return &loadInfo;
@@ -387,7 +387,7 @@ struct BannedAddonsLoadInfo
{ false, FT_STRING_NOT_LOCALIZED, "Version" },
{ false, FT_BYTE, "Flags" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, BannedAddOnsMeta::Instance(), HOTFIX_SEL_BANNED_ADDONS);
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, BannedAddonsMeta::Instance(), HOTFIX_SEL_BANNED_ADDONS);
return &loadInfo;
}
};
@@ -744,6 +744,8 @@ struct ChrRacesLoadInfo
{
{ false, FT_INT, "ID" },
{ false, FT_INT, "Flags" },
{ false, FT_INT, "MaleDisplayID" },
{ false, FT_INT, "FemaleDisplayID" },
{ false, FT_STRING_NOT_LOCALIZED, "ClientPrefix" },
{ false, FT_STRING_NOT_LOCALIZED, "ClientFileString" },
{ false, FT_STRING, "Name" },
@@ -762,8 +764,6 @@ struct ChrRacesLoadInfo
{ false, FT_FLOAT, "FemaleCustomizeOffset3" },
{ false, FT_INT, "LowResScreenFileDataID" },
{ false, FT_SHORT, "FactionID" },
{ false, FT_SHORT, "MaleDisplayID" },
{ false, FT_SHORT, "FemaleDisplayID" },
{ false, FT_SHORT, "ResSicknessSpellID" },
{ false, FT_SHORT, "SplashSoundID" },
{ false, FT_SHORT, "CinematicSequenceID" },
@@ -779,9 +779,12 @@ struct ChrRacesLoadInfo
{ false, FT_BYTE, "CharComponentTexLayoutHiResID" },
{ false, FT_INT, "HighResMaleDisplayID" },
{ false, FT_INT, "HighResFemaleDisplayID" },
{ false, FT_INT, "Unk1" },
{ false, FT_INT, "Unk2" },
{ false, FT_INT, "Unk3" },
{ false, FT_INT, "AlteredFormTransitionSpellVisualID1" },
{ false, FT_INT, "AlteredFormTransitionSpellVisualID2" },
{ false, FT_INT, "AlteredFormTransitionSpellVisualID3" },
{ false, FT_INT, "AlteredFormTransitionSpellVisualKitID1" },
{ false, FT_INT, "AlteredFormTransitionSpellVisualKitID2" },
{ false, FT_INT, "AlteredFormTransitionSpellVisualKitID3" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, ChrRacesMeta::Instance(), HOTFIX_SEL_CHR_RACES);
return &loadInfo;
@@ -1034,8 +1037,8 @@ struct CriteriaLoadInfo
{ false, FT_INT, "Asset" },
{ false, FT_INT, "StartAsset" },
{ false, FT_INT, "FailAsset" },
{ false, FT_INT, "ModifierTreeId" },
{ false, FT_SHORT, "StartTimer" },
{ false, FT_SHORT, "ModifierTreeId" },
{ false, FT_SHORT, "EligibilityWorldStateID" },
{ false, FT_BYTE, "Type" },
{ false, FT_BYTE, "StartEvent" },
@@ -1057,10 +1060,10 @@ struct CriteriaTreeLoadInfo
{ false, FT_INT, "ID" },
{ false, FT_INT, "Amount" },
{ false, FT_STRING, "Description" },
{ false, FT_SHORT, "Parent" },
{ false, FT_SHORT, "Flags" },
{ false, FT_BYTE, "Operator" },
{ false, FT_INT, "CriteriaID" },
{ false, FT_INT, "Parent" },
{ true, FT_INT, "OrderIndex" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, CriteriaTreeMeta::Instance(), HOTFIX_SEL_CRITERIA_TREE);
@@ -2364,12 +2367,44 @@ struct ItemLevelSelectorLoadInfo
{
{ false, FT_INT, "ID" },
{ false, FT_SHORT, "ItemLevel" },
{ false, FT_SHORT, "ItemLevelSelectorQualitySetID" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, ItemLevelSelectorMeta::Instance(), HOTFIX_SEL_ITEM_LEVEL_SELECTOR);
return &loadInfo;
}
};
struct ItemLevelSelectorQualityLoadInfo
{
static DB2LoadInfo const* Instance()
{
static DB2FieldMeta const fields[] =
{
{ false, FT_INT, "ID" },
{ false, FT_INT, "ItemBonusListID" },
{ false, FT_SHORT, "ItemLevelSelectorQualitySetID" },
{ false, FT_BYTE, "Quality" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, ItemLevelSelectorQualityMeta::Instance(), HOTFIX_SEL_ITEM_LEVEL_SELECTOR_QUALITY);
return &loadInfo;
}
};
struct ItemLevelSelectorQualitySetLoadInfo
{
static DB2LoadInfo const* Instance()
{
static DB2FieldMeta const fields[] =
{
{ false, FT_INT, "ID" },
{ false, FT_SHORT, "ItemLevelMin" },
{ false, FT_SHORT, "ItemLevelMax" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, ItemLevelSelectorQualitySetMeta::Instance(), HOTFIX_SEL_ITEM_LEVEL_SELECTOR_QUALITY_SET);
return &loadInfo;
}
};
struct ItemLimitCategoryLoadInfo
{
static DB2LoadInfo const* Instance()
@@ -2475,16 +2510,16 @@ struct ItemSearchNameLoadInfo
{ false, FT_INT, "Flags2" },
{ false, FT_INT, "Flags3" },
{ false, FT_INT, "AllowableRace" },
{ false, FT_INT, "RequiredSpell" },
{ false, FT_SHORT, "RequiredReputationFaction" },
{ false, FT_SHORT, "RequiredSkill" },
{ false, FT_SHORT, "RequiredSkillRank" },
{ false, FT_SHORT, "ItemLevel" },
{ false, FT_BYTE, "Quality" },
{ false, FT_BYTE, "RequiredExpansion" },
{ false, FT_BYTE, "RequiredReputationRank" },
{ false, FT_BYTE, "RequiredLevel" },
{ true, FT_INT, "AllowableClass" },
{ false, FT_SHORT, "RequiredReputationFaction" },
{ false, FT_BYTE, "RequiredReputationRank" },
{ false, FT_SHORT, "RequiredSkill" },
{ false, FT_SHORT, "RequiredSkillRank" },
{ false, FT_INT, "RequiredSpell" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, ItemSearchNameMeta::Instance(), HOTFIX_SEL_ITEM_SEARCH_NAME);
return &loadInfo;
@@ -2552,6 +2587,7 @@ struct ItemSparseLoadInfo
{ false, FT_INT, "Flags1" },
{ false, FT_INT, "Flags2" },
{ false, FT_INT, "Flags3" },
{ false, FT_INT, "Flags4" },
{ false, FT_FLOAT, "Unk1" },
{ false, FT_FLOAT, "Unk2" },
{ false, FT_INT, "BuyCount" },
@@ -2726,7 +2762,7 @@ struct ItemXBonusTreeLoadInfo
}
};
struct KeyChainLoadInfo
struct KeychainLoadInfo
{
static DB2LoadInfo const* Instance()
{
@@ -2766,7 +2802,7 @@ struct KeyChainLoadInfo
{ false, FT_BYTE, "Key31" },
{ false, FT_BYTE, "Key32" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, KeyChainMeta::Instance(), HOTFIX_SEL_KEY_CHAIN);
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, KeychainMeta::Instance(), HOTFIX_SEL_KEYCHAIN);
return &loadInfo;
}
};
@@ -2812,7 +2848,7 @@ struct LfgDungeonsLoadInfo
{ true, FT_INT, "RewardIconFileDataID" },
{ true, FT_INT, "ProposalTextureFileDataID" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, LfgDungeonsMeta::Instance(), HOTFIX_SEL_LFG_DUNGEONS);
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, LFGDungeonsMeta::Instance(), HOTFIX_SEL_LFG_DUNGEONS);
return &loadInfo;
}
};
@@ -3033,7 +3069,7 @@ struct ModifierTreeLoadInfo
{ false, FT_INT, "ID" },
{ false, FT_INT, "Asset1" },
{ false, FT_INT, "Asset2" },
{ false, FT_SHORT, "Parent" },
{ false, FT_INT, "Parent" },
{ false, FT_BYTE, "Type" },
{ false, FT_BYTE, "Unk700" },
{ false, FT_BYTE, "Operator" },
@@ -3258,26 +3294,13 @@ struct PlayerConditionLoadInfo
{
{ false, FT_INT, "ID" },
{ false, FT_INT, "RaceMask" },
{ false, FT_INT, "SkillLogic" },
{ false, FT_INT, "ReputationLogic" },
{ false, FT_INT, "PrevQuestLogic" },
{ false, FT_INT, "CurrQuestLogic" },
{ false, FT_INT, "CurrentCompletedQuestLogic" },
{ false, FT_INT, "SpellLogic" },
{ false, FT_INT, "ItemLogic" },
{ false, FT_INT, "Time1" },
{ false, FT_INT, "Time2" },
{ false, FT_INT, "AuraSpellLogic" },
{ false, FT_INT, "AuraSpellID1" },
{ false, FT_INT, "AuraSpellID2" },
{ false, FT_INT, "AuraSpellID3" },
{ false, FT_INT, "AuraSpellID4" },
{ false, FT_INT, "AchievementLogic" },
{ false, FT_INT, "AreaLogic" },
{ false, FT_INT, "QuestKillLogic" },
{ false, FT_STRING, "FailureDescription" },
{ false, FT_SHORT, "MinLevel" },
{ false, FT_SHORT, "MaxLevel" },
{ false, FT_SHORT, "SkillID1" },
{ false, FT_SHORT, "SkillID2" },
{ false, FT_SHORT, "SkillID3" },
@@ -3290,7 +3313,6 @@ struct PlayerConditionLoadInfo
{ true, FT_SHORT, "MaxSkill2" },
{ true, FT_SHORT, "MaxSkill3" },
{ true, FT_SHORT, "MaxSkill4" },
{ false, FT_SHORT, "MaxFactionID" },
{ false, FT_SHORT, "PrevQuestID1" },
{ false, FT_SHORT, "PrevQuestID2" },
{ false, FT_SHORT, "PrevQuestID3" },
@@ -3305,7 +3327,6 @@ struct PlayerConditionLoadInfo
{ false, FT_SHORT, "CurrentCompletedQuestID4" },
{ false, FT_SHORT, "Explored1" },
{ false, FT_SHORT, "Explored2" },
{ false, FT_SHORT, "WorldStateExpressionID" },
{ false, FT_SHORT, "Achievement1" },
{ false, FT_SHORT, "Achievement2" },
{ false, FT_SHORT, "Achievement3" },
@@ -3314,32 +3335,14 @@ struct PlayerConditionLoadInfo
{ false, FT_SHORT, "AreaID2" },
{ false, FT_SHORT, "AreaID3" },
{ false, FT_SHORT, "AreaID4" },
{ false, FT_SHORT, "QuestKillID" },
{ false, FT_SHORT, "PhaseID" },
{ false, FT_SHORT, "MinAvgEquippedItemLevel" },
{ false, FT_SHORT, "MaxAvgEquippedItemLevel" },
{ false, FT_SHORT, "ModifierTreeID" },
{ false, FT_BYTE, "Flags" },
{ true, FT_BYTE, "Gender" },
{ true, FT_BYTE, "NativeGender" },
{ false, FT_BYTE, "MinLanguage" },
{ false, FT_BYTE, "MaxLanguage" },
{ false, FT_BYTE, "MinReputation1" },
{ false, FT_BYTE, "MinReputation2" },
{ false, FT_BYTE, "MinReputation3" },
{ false, FT_BYTE, "MaxReputation" },
{ false, FT_BYTE, "Unknown1" },
{ false, FT_BYTE, "MinPVPRank" },
{ false, FT_BYTE, "MaxPVPRank" },
{ false, FT_BYTE, "PvpMedal" },
{ false, FT_BYTE, "ItemFlags" },
{ false, FT_BYTE, "AuraCount1" },
{ false, FT_BYTE, "AuraCount2" },
{ false, FT_BYTE, "AuraCount3" },
{ false, FT_BYTE, "AuraCount4" },
{ false, FT_BYTE, "WeatherID" },
{ false, FT_BYTE, "PartyStatus" },
{ false, FT_BYTE, "LifetimeMaxPVPRank" },
{ false, FT_BYTE, "LfgStatus1" },
{ false, FT_BYTE, "LfgStatus2" },
{ false, FT_BYTE, "LfgStatus3" },
@@ -3352,20 +3355,7 @@ struct PlayerConditionLoadInfo
{ false, FT_BYTE, "CurrencyCount2" },
{ false, FT_BYTE, "CurrencyCount3" },
{ false, FT_BYTE, "CurrencyCount4" },
{ true, FT_BYTE, "MinExpansionLevel" },
{ true, FT_BYTE, "MaxExpansionLevel" },
{ true, FT_BYTE, "MinExpansionTier" },
{ true, FT_BYTE, "MaxExpansionTier" },
{ false, FT_BYTE, "MinGuildLevel" },
{ false, FT_BYTE, "MaxGuildLevel" },
{ false, FT_BYTE, "PhaseUseFlags" },
{ true, FT_BYTE, "ChrSpecializationIndex" },
{ true, FT_BYTE, "ChrSpecializationRole" },
{ true, FT_BYTE, "PowerType" },
{ true, FT_BYTE, "PowerTypeComp" },
{ true, FT_BYTE, "PowerTypeValue" },
{ true, FT_INT, "ClassMask" },
{ false, FT_INT, "LanguageID" },
{ false, FT_INT, "MinFactionID1" },
{ false, FT_INT, "MinFactionID2" },
{ false, FT_INT, "MinFactionID3" },
@@ -3381,12 +3371,10 @@ struct PlayerConditionLoadInfo
{ false, FT_INT, "ItemCount2" },
{ false, FT_INT, "ItemCount3" },
{ false, FT_INT, "ItemCount4" },
{ false, FT_INT, "LfgLogic" },
{ false, FT_INT, "LfgValue1" },
{ false, FT_INT, "LfgValue2" },
{ false, FT_INT, "LfgValue3" },
{ false, FT_INT, "LfgValue4" },
{ false, FT_INT, "CurrencyLogic" },
{ false, FT_INT, "CurrencyID1" },
{ false, FT_INT, "CurrencyID2" },
{ false, FT_INT, "CurrencyID3" },
@@ -3397,11 +3385,59 @@ struct PlayerConditionLoadInfo
{ false, FT_INT, "QuestKillMonster4" },
{ false, FT_INT, "QuestKillMonster5" },
{ false, FT_INT, "QuestKillMonster6" },
{ true, FT_INT, "MovementFlags1" },
{ true, FT_INT, "MovementFlags2" },
{ false, FT_SHORT, "MinLevel" },
{ false, FT_SHORT, "MaxLevel" },
{ true, FT_BYTE, "Gender" },
{ true, FT_BYTE, "NativeGender" },
{ false, FT_INT, "SkillLogic" },
{ false, FT_BYTE, "LanguageID" },
{ false, FT_BYTE, "MinLanguage" },
{ false, FT_INT, "MaxLanguage" },
{ false, FT_SHORT, "MaxFactionID" },
{ false, FT_BYTE, "MaxReputation" },
{ false, FT_INT, "ReputationLogic" },
{ false, FT_BYTE, "Unknown1" },
{ false, FT_BYTE, "MinPVPRank" },
{ false, FT_BYTE, "MaxPVPRank" },
{ false, FT_BYTE, "PvpMedal" },
{ false, FT_INT, "PrevQuestLogic" },
{ false, FT_INT, "CurrQuestLogic" },
{ false, FT_INT, "CurrentCompletedQuestLogic" },
{ false, FT_INT, "SpellLogic" },
{ false, FT_INT, "ItemLogic" },
{ false, FT_BYTE, "ItemFlags" },
{ false, FT_INT, "AuraSpellLogic" },
{ false, FT_SHORT, "WorldStateExpressionID" },
{ false, FT_BYTE, "WeatherID" },
{ false, FT_BYTE, "PartyStatus" },
{ false, FT_BYTE, "LifetimeMaxPVPRank" },
{ false, FT_INT, "AchievementLogic" },
{ false, FT_INT, "LfgLogic" },
{ false, FT_INT, "AreaLogic" },
{ false, FT_INT, "CurrencyLogic" },
{ false, FT_SHORT, "QuestKillID" },
{ false, FT_INT, "QuestKillLogic" },
{ true, FT_BYTE, "MinExpansionLevel" },
{ true, FT_BYTE, "MaxExpansionLevel" },
{ true, FT_BYTE, "MinExpansionTier" },
{ true, FT_BYTE, "MaxExpansionTier" },
{ false, FT_BYTE, "MinGuildLevel" },
{ false, FT_BYTE, "MaxGuildLevel" },
{ false, FT_BYTE, "PhaseUseFlags" },
{ false, FT_SHORT, "PhaseID" },
{ false, FT_INT, "PhaseGroupID" },
{ false, FT_INT, "MinAvgItemLevel" },
{ false, FT_INT, "MaxAvgItemLevel" },
{ true, FT_INT, "MovementFlags1" },
{ true, FT_INT, "MovementFlags2" },
{ false, FT_SHORT, "MinAvgEquippedItemLevel" },
{ false, FT_SHORT, "MaxAvgEquippedItemLevel" },
{ true, FT_BYTE, "ChrSpecializationIndex" },
{ true, FT_BYTE, "ChrSpecializationRole" },
{ true, FT_BYTE, "PowerType" },
{ true, FT_BYTE, "PowerTypeComp" },
{ true, FT_BYTE, "PowerTypeValue" },
{ false, FT_INT, "ModifierTreeID" },
{ false, FT_INT, "MainHandItemSubclassMask" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, PlayerConditionMeta::Instance(), HOTFIX_SEL_PLAYER_CONDITION);
@@ -3481,7 +3517,7 @@ struct PvpDifficultyLoadInfo
{ false, FT_BYTE, "MinLevel" },
{ false, FT_BYTE, "MaxLevel" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, PvpDifficultyMeta::Instance(), HOTFIX_SEL_PVP_DIFFICULTY);
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, PVPDifficultyMeta::Instance(), HOTFIX_SEL_PVP_DIFFICULTY);
return &loadInfo;
}
};
@@ -3737,12 +3773,12 @@ struct ScenarioStepLoadInfo
{ false, FT_INT, "ID" },
{ false, FT_STRING, "Description" },
{ false, FT_STRING, "Name" },
{ false, FT_SHORT, "CriteriaTreeID" },
{ false, FT_SHORT, "ScenarioID" },
{ false, FT_SHORT, "PreviousStepID" },
{ false, FT_SHORT, "QuestRewardID" },
{ false, FT_BYTE, "Step" },
{ false, FT_BYTE, "Flags" },
{ false, FT_INT, "CriteriaTreeID" },
{ false, FT_INT, "BonusRequiredStepID" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, ScenarioStepMeta::Instance(), HOTFIX_SEL_SCENARIO_STEP);
@@ -3854,23 +3890,22 @@ struct SoundKitLoadInfo
{
static DB2FieldMeta const fields[] =
{
{ false, FT_STRING, "Name" },
{ false, FT_INT, "ID" },
{ false, FT_FLOAT, "VolumeFloat" },
{ false, FT_FLOAT, "MinDistance" },
{ false, FT_FLOAT, "DistanceCutoff" },
{ false, FT_SHORT, "Flags" },
{ false, FT_SHORT, "SoundEntriesAdvancedID" },
{ false, FT_BYTE, "SoundType" },
{ false, FT_BYTE, "DialogType" },
{ false, FT_BYTE, "EAXDef" },
{ false, FT_FLOAT, "VolumeVariationPlus" },
{ false, FT_FLOAT, "VolumeVariationMinus" },
{ false, FT_FLOAT, "PitchVariationPlus" },
{ false, FT_FLOAT, "PitchVariationMinus" },
{ false, FT_FLOAT, "PitchAdjust" },
{ false, FT_SHORT, "Flags" },
{ false, FT_SHORT, "SoundEntriesAdvancedID" },
{ false, FT_SHORT, "BusOverwriteID" },
{ false, FT_BYTE, "SoundType" },
{ false, FT_BYTE, "EAXDef" },
{ false, FT_BYTE, "DialogType" },
{ false, FT_BYTE, "Unk700" },
{ false, FT_INT, "ID" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, SoundKitMeta::Instance(), HOTFIX_SEL_SOUND_KIT);
return &loadInfo;
@@ -3926,9 +3961,9 @@ struct SpellAuraOptionsLoadInfo
{ false, FT_INT, "ProcTypeMask" },
{ false, FT_INT, "ProcCategoryRecovery" },
{ false, FT_SHORT, "CumulativeAura" },
{ false, FT_SHORT, "SpellProcsPerMinuteID" },
{ false, FT_BYTE, "DifficultyID" },
{ false, FT_BYTE, "ProcChance" },
{ false, FT_BYTE, "SpellProcsPerMinuteID" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, SpellAuraOptionsMeta::Instance(), HOTFIX_SEL_SPELL_AURA_OPTIONS);
return &loadInfo;
@@ -4419,8 +4454,8 @@ struct SpellProcsPerMinuteModLoadInfo
{ false, FT_INT, "ID" },
{ false, FT_FLOAT, "Coeff" },
{ false, FT_SHORT, "Param" },
{ false, FT_SHORT, "SpellProcsPerMinuteID" },
{ false, FT_BYTE, "Type" },
{ false, FT_BYTE, "SpellProcsPerMinuteID" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, SpellProcsPerMinuteModMeta::Instance(), HOTFIX_SEL_SPELL_PROCS_PER_MINUTE_MOD);
return &loadInfo;
@@ -4704,6 +4739,7 @@ struct TaxiNodesLoadInfo
{
static DB2FieldMeta const fields[] =
{
{ false, FT_INT, "ID" },
{ false, FT_FLOAT, "PosX" },
{ false, FT_FLOAT, "PosY" },
{ false, FT_FLOAT, "PosZ" },
@@ -4712,11 +4748,15 @@ struct TaxiNodesLoadInfo
{ false, FT_INT, "MountCreatureID2" },
{ false, FT_FLOAT, "MapOffsetX" },
{ false, FT_FLOAT, "MapOffsetY" },
{ false, FT_FLOAT, "Unk730" },
{ false, FT_FLOAT, "FlightMapOffsetX" },
{ false, FT_FLOAT, "FlightMapOffsetY" },
{ false, FT_SHORT, "MapID" },
{ false, FT_SHORT, "ConditionID" },
{ false, FT_SHORT, "LearnableIndex" },
{ false, FT_BYTE, "Flags" },
{ false, FT_INT, "ID" },
{ true, FT_INT, "UiTextureKitPrefixID" },
{ false, FT_INT, "SpecialAtlasIconPlayerConditionID" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, TaxiNodesMeta::Instance(), HOTFIX_SEL_TAXI_NODES);
return &loadInfo;
@@ -4748,14 +4788,14 @@ struct TaxiPathNodeLoadInfo
{ false, FT_FLOAT, "LocX" },
{ false, FT_FLOAT, "LocY" },
{ false, FT_FLOAT, "LocZ" },
{ false, FT_INT, "Delay" },
{ false, FT_SHORT, "PathID" },
{ false, FT_SHORT, "MapID" },
{ false, FT_BYTE, "NodeIndex" },
{ false, FT_INT, "ID" },
{ false, FT_BYTE, "Flags" },
{ false, FT_INT, "Delay" },
{ false, FT_SHORT, "ArrivalEventID" },
{ false, FT_SHORT, "DepartureEventID" },
{ false, FT_BYTE, "NodeIndex" },
{ false, FT_BYTE, "Flags" },
{ false, FT_INT, "ID" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, TaxiPathNodeMeta::Instance(), HOTFIX_SEL_TAXI_PATH_NODE);
return &loadInfo;
@@ -4956,21 +4996,7 @@ struct VehicleLoadInfo
{ false, FT_FLOAT, "CameraPitchOffset" },
{ false, FT_FLOAT, "FacingLimitRight" },
{ false, FT_FLOAT, "FacingLimitLeft" },
{ false, FT_FLOAT, "MsslTrgtTurnLingering" },
{ false, FT_FLOAT, "MsslTrgtPitchLingering" },
{ false, FT_FLOAT, "MsslTrgtMouseLingering" },
{ false, FT_FLOAT, "MsslTrgtEndOpacity" },
{ false, FT_FLOAT, "MsslTrgtArcSpeed" },
{ false, FT_FLOAT, "MsslTrgtArcRepeat" },
{ false, FT_FLOAT, "MsslTrgtArcWidth" },
{ false, FT_FLOAT, "MsslTrgtImpactRadius1" },
{ false, FT_FLOAT, "MsslTrgtImpactRadius2" },
{ false, FT_STRING_NOT_LOCALIZED, "MsslTrgtArcTexture" },
{ false, FT_STRING_NOT_LOCALIZED, "MsslTrgtImpactTexture" },
{ false, FT_STRING_NOT_LOCALIZED, "MsslTrgtImpactModel1" },
{ false, FT_STRING_NOT_LOCALIZED, "MsslTrgtImpactModel2" },
{ false, FT_FLOAT, "CameraYawOffset" },
{ false, FT_FLOAT, "MsslTrgtImpactTexRadius" },
{ false, FT_SHORT, "SeatID1" },
{ false, FT_SHORT, "SeatID2" },
{ false, FT_SHORT, "SeatID3" },
@@ -4985,6 +5011,7 @@ struct VehicleLoadInfo
{ false, FT_SHORT, "PowerDisplayID3" },
{ false, FT_BYTE, "FlagsB" },
{ false, FT_BYTE, "UILocomotionType" },
{ true, FT_INT, "MissileTargetingID" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, VehicleMeta::Instance(), HOTFIX_SEL_VEHICLE);
return &loadInfo;
@@ -5126,12 +5153,12 @@ struct WorldMapAreaLoadInfo
{ false, FT_FLOAT, "LocRight" },
{ false, FT_FLOAT, "LocTop" },
{ false, FT_FLOAT, "LocBottom" },
{ false, FT_INT, "Flags" },
{ false, FT_SHORT, "MapID" },
{ false, FT_SHORT, "AreaID" },
{ true, FT_SHORT, "DisplayMapID" },
{ true, FT_SHORT, "DefaultDungeonFloor" },
{ false, FT_SHORT, "ParentWorldMapID" },
{ false, FT_SHORT, "Flags" },
{ false, FT_BYTE, "LevelRangeMin" },
{ false, FT_BYTE, "LevelRangeMax" },
{ false, FT_BYTE, "BountySetID" },
@@ -5195,6 +5222,7 @@ struct WorldMapTransformsLoadInfo
{ false, FT_SHORT, "NewDungeonMapID" },
{ false, FT_SHORT, "NewAreaID" },
{ false, FT_BYTE, "Flags" },
{ true, FT_INT, "Priority" },
};
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, WorldMapTransformsMeta::Instance(), HOTFIX_SEL_WORLD_MAP_TRANSFORMS);
return &loadInfo;

File diff suppressed because it is too large Load Diff

View File

@@ -52,7 +52,7 @@ DB2Storage<ArtifactPowerRankEntry> sArtifactPowerRankStore("Artifac
DB2Storage<ArtifactQuestXPEntry> sArtifactQuestXPStore("ArtifactQuestXP.db2", ArtifactQuestXpLoadInfo::Instance());
DB2Storage<AuctionHouseEntry> sAuctionHouseStore("AuctionHouse.db2", AuctionHouseLoadInfo::Instance());
DB2Storage<BankBagSlotPricesEntry> sBankBagSlotPricesStore("BankBagSlotPrices.db2", BankBagSlotPricesLoadInfo::Instance());
DB2Storage<BannedAddOnsEntry> sBannedAddOnsStore("BannedAddOns.db2", BannedAddonsLoadInfo::Instance());
DB2Storage<BannedAddonsEntry> sBannedAddonsStore("BannedAddons.db2", BannedAddonsLoadInfo::Instance());
DB2Storage<BarberShopStyleEntry> sBarberShopStyleStore("BarberShopStyle.db2", BarberShopStyleLoadInfo::Instance());
DB2Storage<BattlePetBreedQualityEntry> sBattlePetBreedQualityStore("BattlePetBreedQuality.db2", BattlePetBreedQualityLoadInfo::Instance());
DB2Storage<BattlePetBreedStateEntry> sBattlePetBreedStateStore("BattlePetBreedState.db2", BattlePetBreedStateLoadInfo::Instance());
@@ -141,6 +141,8 @@ DB2Storage<ItemEffectEntry> sItemEffectStore("ItemEffect.db2
DB2Storage<ItemEntry> sItemStore("Item.db2", ItemLoadInfo::Instance());
DB2Storage<ItemExtendedCostEntry> sItemExtendedCostStore("ItemExtendedCost.db2", ItemExtendedCostLoadInfo::Instance());
DB2Storage<ItemLevelSelectorEntry> sItemLevelSelectorStore("ItemLevelSelector.db2", ItemLevelSelectorLoadInfo::Instance());
DB2Storage<ItemLevelSelectorQualityEntry> sItemLevelSelectorQualityStore("ItemLevelSelectorQuality.db2", ItemLevelSelectorQualityLoadInfo::Instance());
DB2Storage<ItemLevelSelectorQualitySetEntry> sItemLevelSelectorQualitySetStore("ItemLevelSelectorQualitySet.db2", ItemLevelSelectorQualitySetLoadInfo::Instance());
DB2Storage<ItemLimitCategoryEntry> sItemLimitCategoryStore("ItemLimitCategory.db2", ItemLimitCategoryLoadInfo::Instance());
DB2Storage<ItemModifiedAppearanceEntry> sItemModifiedAppearanceStore("ItemModifiedAppearance.db2", ItemModifiedAppearanceLoadInfo::Instance());
DB2Storage<ItemPriceBaseEntry> sItemPriceBaseStore("ItemPriceBase.db2", ItemPriceBaseLoadInfo::Instance());
@@ -154,8 +156,8 @@ DB2Storage<ItemSpecEntry> sItemSpecStore("ItemSpec.db2", I
DB2Storage<ItemSpecOverrideEntry> sItemSpecOverrideStore("ItemSpecOverride.db2", ItemSpecOverrideLoadInfo::Instance());
DB2Storage<ItemUpgradeEntry> sItemUpgradeStore("ItemUpgrade.db2", ItemUpgradeLoadInfo::Instance());
DB2Storage<ItemXBonusTreeEntry> sItemXBonusTreeStore("ItemXBonusTree.db2", ItemXBonusTreeLoadInfo::Instance());
DB2Storage<KeyChainEntry> sKeyChainStore("KeyChain.db2", KeyChainLoadInfo::Instance());
DB2Storage<LfgDungeonsEntry> sLfgDungeonsStore("LfgDungeons.db2", LfgDungeonsLoadInfo::Instance());
DB2Storage<KeychainEntry> sKeychainStore("Keychain.db2", KeychainLoadInfo::Instance());
DB2Storage<LFGDungeonsEntry> sLFGDungeonsStore("LFGDungeons.db2", LfgDungeonsLoadInfo::Instance());
DB2Storage<LightEntry> sLightStore("Light.db2", LightLoadInfo::Instance());
DB2Storage<LiquidTypeEntry> sLiquidTypeStore("LiquidType.db2", LiquidTypeLoadInfo::Instance());
DB2Storage<LockEntry> sLockStore("Lock.db2", LockLoadInfo::Instance());
@@ -179,7 +181,7 @@ DB2Storage<PlayerConditionEntry> sPlayerConditionStore("PlayerCon
DB2Storage<PowerDisplayEntry> sPowerDisplayStore("PowerDisplay.db2", PowerDisplayLoadInfo::Instance());
DB2Storage<PowerTypeEntry> sPowerTypeStore("PowerType.db2", PowerTypeLoadInfo::Instance());
DB2Storage<PrestigeLevelInfoEntry> sPrestigeLevelInfoStore("PrestigeLevelInfo.db2", PrestigeLevelInfoLoadInfo::Instance());
DB2Storage<PvpDifficultyEntry> sPvpDifficultyStore("PvpDifficulty.db2", PvpDifficultyLoadInfo::Instance());
DB2Storage<PVPDifficultyEntry> sPVPDifficultyStore("PVPDifficulty.db2", PvpDifficultyLoadInfo::Instance());
DB2Storage<PvpRewardEntry> sPvpRewardStore("PvpReward.db2", PvpRewardLoadInfo::Instance());
DB2Storage<QuestFactionRewardEntry> sQuestFactionRewardStore("QuestFactionReward.db2", QuestFactionRewardLoadInfo::Instance());
DB2Storage<QuestMoneyRewardEntry> sQuestMoneyRewardStore("QuestMoneyReward.db2", QuestMoneyRewardLoadInfo::Instance());
@@ -267,6 +269,13 @@ TaxiPathNodesByPath sTaxiPathNodesByPath;
DEFINE_DB2_SET_COMPARATOR(ChrClassesXPowerTypesEntry)
struct ItemLevelSelectorQualityEntryComparator
{
bool operator()(ItemLevelSelectorQualityEntry const* left, ItemLevelSelectorQualityEntry const* right) const { return Compare(left, right); }
bool operator()(ItemLevelSelectorQualityEntry const* left, ItemQualities quality) const { return left->Quality < quality; }
static bool Compare(ItemLevelSelectorQualityEntry const* left, ItemLevelSelectorQualityEntry const* right);
};
typedef std::map<uint32 /*hash*/, DB2StorageBase*> StorageMap;
typedef std::unordered_map<uint32 /*areaGroupId*/, std::vector<uint32/*areaId*/>> AreaGroupMemberContainer;
typedef std::unordered_map<uint32, std::vector<ArtifactPowerEntry const*>> ArtifactPowersContainer;
@@ -286,6 +295,7 @@ typedef std::unordered_map<int16, uint32> ItemBonusListLevelDeltaContainer;
typedef std::unordered_multimap<uint32 /*itemId*/, uint32 /*bonusTreeId*/> ItemToBonusTreeContainer;
typedef std::unordered_map<uint32 /*itemId*/, ItemChildEquipmentEntry const*> ItemChildEquipmentContainer;
typedef std::array<ItemClassEntry const*, 19> ItemClassByOldEnumContainer;
typedef std::set<ItemLevelSelectorQualityEntry const*, ItemLevelSelectorQualityEntryComparator> ItemLevelSelectorQualities;
typedef std::unordered_map<uint32 /*itemId | appearanceMod << 24*/, ItemModifiedAppearanceEntry const*> ItemModifiedAppearanceByItemContainer;
typedef std::unordered_map<uint32, std::set<ItemBonusTreeNodeEntry const*>> ItemBonusTreeContainer;
typedef std::unordered_map<uint32, std::vector<ItemSetSpellEntry const*>> ItemSetSpellContainer;
@@ -336,6 +346,7 @@ namespace
ItemChildEquipmentContainer _itemChildEquipment;
ItemClassByOldEnumContainer _itemClassByOldEnum;
std::unordered_set<uint32> _itemsWithCurrencyCost;
std::unordered_map<uint32 /*itemLevelSelectorQualitySetId*/, ItemLevelSelectorQualities> _itemLevelQualitySelectorQualities;
ItemModifiedAppearanceByItemContainer _itemModifiedAppearancesByItem;
ItemToBonusTreeContainer _itemToBonusTree;
ItemSetSpellContainer _itemSetSpells;
@@ -462,7 +473,7 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale)
LOAD_DB2(sArtifactPowerRankStore);
LOAD_DB2(sAuctionHouseStore);
LOAD_DB2(sBankBagSlotPricesStore);
LOAD_DB2(sBannedAddOnsStore);
LOAD_DB2(sBannedAddonsStore);
LOAD_DB2(sBarberShopStyleStore);
LOAD_DB2(sBattlePetBreedQualityStore);
LOAD_DB2(sBattlePetBreedStateStore);
@@ -551,6 +562,8 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale)
LOAD_DB2(sItemStore);
LOAD_DB2(sItemExtendedCostStore);
LOAD_DB2(sItemLevelSelectorStore);
LOAD_DB2(sItemLevelSelectorQualityStore);
LOAD_DB2(sItemLevelSelectorQualitySetStore);
LOAD_DB2(sItemLimitCategoryStore);
LOAD_DB2(sItemModifiedAppearanceStore);
LOAD_DB2(sItemPriceBaseStore);
@@ -564,8 +577,8 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale)
LOAD_DB2(sItemSpecOverrideStore);
LOAD_DB2(sItemUpgradeStore);
LOAD_DB2(sItemXBonusTreeStore);
LOAD_DB2(sKeyChainStore);
LOAD_DB2(sLfgDungeonsStore);
LOAD_DB2(sKeychainStore);
LOAD_DB2(sLFGDungeonsStore);
LOAD_DB2(sLightStore);
LOAD_DB2(sLiquidTypeStore);
LOAD_DB2(sLockStore);
@@ -589,7 +602,7 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale)
LOAD_DB2(sPowerDisplayStore);
LOAD_DB2(sPowerTypeStore);
LOAD_DB2(sPrestigeLevelInfoStore);
LOAD_DB2(sPvpDifficultyStore);
LOAD_DB2(sPVPDifficultyStore);
LOAD_DB2(sPvpRewardStore);
LOAD_DB2(sQuestFactionRewardStore);
LOAD_DB2(sQuestMoneyRewardStore);
@@ -828,6 +841,9 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale)
for (ItemCurrencyCostEntry const* itemCurrencyCost : sItemCurrencyCostStore)
_itemsWithCurrencyCost.insert(itemCurrencyCost->ItemId);
for (ItemLevelSelectorQualityEntry const* itemLevelSelectorQuality : sItemLevelSelectorQualityStore)
_itemLevelQualitySelectorQualities[itemLevelSelectorQuality->ItemLevelSelectorQualitySetID].insert(itemLevelSelectorQuality);
for (ItemModifiedAppearanceEntry const* appearanceMod : sItemModifiedAppearanceStore)
{
ASSERT(appearanceMod->ItemID <= 0xFFFFFF);
@@ -912,7 +928,7 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale)
_powerTypes[powerType->PowerTypeEnum] = powerType;
}
for (PvpDifficultyEntry const* entry : sPvpDifficultyStore)
for (PVPDifficultyEntry const* entry : sPVPDifficultyStore)
{
ASSERT(entry->BracketID < MAX_BATTLEGROUND_BRACKETS, "PvpDifficulty bracket (%d) exceeded max allowed value (%d)", entry->BracketID, MAX_BATTLEGROUND_BRACKETS);
}
@@ -1069,13 +1085,13 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale)
}
// Check loaded DB2 files proper version
if (!sAreaTableStore.LookupEntry(8485) || // last area (areaflag) added in 7.0.3 (22594)
!sCharTitlesStore.LookupEntry(486) || // last char title added in 7.0.3 (22594)
!sGemPropertiesStore.LookupEntry(3363) || // last gem property added in 7.0.3 (22594)
!sItemStore.LookupEntry(142526) || // last item added in 7.0.3 (22594)
!sItemExtendedCostStore.LookupEntry(6125) || // last item extended cost added in 7.0.3 (22594)
!sMapStore.LookupEntry(1670) || // last map added in 7.0.3 (22594)
!sSpellStore.LookupEntry(231371)) // last spell added in 7.0.3 (22594)
if (!sAreaTableStore.LookupEntry(9333) || // last area added in 7.3.2 (25480)
!sCharTitlesStore.LookupEntry(518) || // last char title added in 7.3.2 (25480)
!sGemPropertiesStore.LookupEntry(3632) || // last gem property added in 7.3.2 (25480)
!sItemStore.LookupEntry(155880) || // last item added in 7.3.2 (25480)
!sItemExtendedCostStore.LookupEntry(6255) || // last item extended cost added in 7.3.2 (25480)
!sMapStore.LookupEntry(1817) || // last map added in 7.3.2 (25480)
!sSpellStore.LookupEntry(259088)) // last spell added in 7.3.2 (25480)
{
TC_LOG_ERROR("misc", "You have _outdated_ DB2 files. Please extract correct versions from current using client.");
exit(1);
@@ -1086,7 +1102,7 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale)
DB2StorageBase const* DB2Manager::GetStorage(uint32 type) const
{
StorageMap::const_iterator itr = _stores.find(type);
auto itr = _stores.find(type);
if (itr != _stores.end())
return itr->second;
@@ -1554,6 +1570,25 @@ std::set<uint32> DB2Manager::GetItemBonusTree(uint32 itemId, uint32 itemBonusTre
if (uint32 bonus = GetItemBonusListForItemLevelDelta(delta))
bonusListIDs.insert(bonus);
if (ItemLevelSelectorQualitySetEntry const* selectorQualitySet = sItemLevelSelectorQualitySetStore.LookupEntry(selector->ItemLevelSelectorQualitySetID))
{
auto itemSelectorQualities = _itemLevelQualitySelectorQualities.find(selector->ItemLevelSelectorQualitySetID);
if (itemSelectorQualities != _itemLevelQualitySelectorQualities.end())
{
ItemQualities quality = ITEM_QUALITY_UNCOMMON;
if (selector->ItemLevel >= selectorQualitySet->ItemLevelMax)
quality = ITEM_QUALITY_EPIC;
else if (selector->ItemLevel >= selectorQualitySet->ItemLevelMin)
quality = ITEM_QUALITY_RARE;
auto itemSelectorQuality = std::lower_bound(itemSelectorQualities->second.begin(), itemSelectorQualities->second.end(),
quality, ItemLevelSelectorQualityEntryComparator{});
if (itemSelectorQuality != itemSelectorQualities->second.end())
bonusListIDs.insert((*itemSelectorQuality)->ItemBonusListID);
}
}
}
}
}
@@ -1633,9 +1668,9 @@ std::vector<ItemSpecOverrideEntry const*> const* DB2Manager::GetItemSpecOverride
return nullptr;
}
LfgDungeonsEntry const* DB2Manager::GetLfgDungeon(uint32 mapId, Difficulty difficulty)
LFGDungeonsEntry const* DB2Manager::GetLfgDungeon(uint32 mapId, Difficulty difficulty)
{
for (LfgDungeonsEntry const* dungeon : sLfgDungeonsStore)
for (LFGDungeonsEntry const* dungeon : sLFGDungeonsStore)
if (dungeon->MapID == int32(mapId) && Difficulty(dungeon->DifficultyID) == difficulty)
return dungeon;
@@ -1805,36 +1840,32 @@ uint8 DB2Manager::GetMaxPrestige() const
return max;
}
PvpDifficultyEntry const* DB2Manager::GetBattlegroundBracketByLevel(uint32 mapid, uint32 level)
PVPDifficultyEntry const* DB2Manager::GetBattlegroundBracketByLevel(uint32 mapid, uint32 level)
{
PvpDifficultyEntry const* maxEntry = nullptr; // used for level > max listed level case
for (uint32 i = 0; i < sPvpDifficultyStore.GetNumRows(); ++i)
PVPDifficultyEntry const* maxEntry = nullptr; // used for level > max listed level case
for (PVPDifficultyEntry const* entry : sPVPDifficultyStore)
{
if (PvpDifficultyEntry const* entry = sPvpDifficultyStore.LookupEntry(i))
{
// skip unrelated and too-high brackets
if (entry->MapID != mapid || entry->MinLevel > level)
continue;
// skip unrelated and too-high brackets
if (entry->MapID != mapid || entry->MinLevel > level)
continue;
// exactly fit
if (entry->MaxLevel >= level)
return entry;
// exactly fit
if (entry->MaxLevel >= level)
return entry;
// remember for possible out-of-range case (search higher from existed)
if (!maxEntry || maxEntry->MaxLevel < entry->MaxLevel)
maxEntry = entry;
}
// remember for possible out-of-range case (search higher from existed)
if (!maxEntry || maxEntry->MaxLevel < entry->MaxLevel)
maxEntry = entry;
}
return maxEntry;
}
PvpDifficultyEntry const* DB2Manager::GetBattlegroundBracketById(uint32 mapid, BattlegroundBracketId id)
PVPDifficultyEntry const* DB2Manager::GetBattlegroundBracketById(uint32 mapid, BattlegroundBracketId id)
{
for (uint32 i = 0; i < sPvpDifficultyStore.GetNumRows(); ++i)
if (PvpDifficultyEntry const* entry = sPvpDifficultyStore.LookupEntry(i))
if (entry->MapID == mapid && entry->GetBracketId() == id)
return entry;
for (PVPDifficultyEntry const* entry : sPVPDifficultyStore)
if (entry->MapID == mapid && entry->GetBracketId() == id)
return entry;
return nullptr;
}
@@ -2100,7 +2131,10 @@ void DB2Manager::DeterminaAlternateMapPosition(uint32 mapId, float x, float y, f
{
if (transform->MapID != mapId)
continue;
if (transform->AreaID)
continue;
if (transform->Flags & WORLD_MAP_TRANSFORMS_FLAG_DUNGEON)
continue;
if (transform->RegionMin.X > x || transform->RegionMax.X < x)
continue;
if (transform->RegionMin.Y > y || transform->RegionMax.Y < y)
@@ -2108,8 +2142,8 @@ void DB2Manager::DeterminaAlternateMapPosition(uint32 mapId, float x, float y, f
if (transform->RegionMin.Z > z || transform->RegionMax.Z < z)
continue;
transformation = transform;
break;
if (!transformation || transformation->Priority < transform->Priority)
transformation = transform;
}
if (!transformation)
@@ -2131,7 +2165,7 @@ void DB2Manager::DeterminaAlternateMapPosition(uint32 mapId, float x, float y, f
if (!newPos)
return;
if (transformation->RegionScale > 0.0f && transformation->RegionScale < 1.0f)
if (std::abs(transformation->RegionScale - 1.0f) > 0.001f)
{
x = (x - transformation->RegionMin.X) * transformation->RegionScale + transformation->RegionMin.X;
y = (y - transformation->RegionMin.Y) * transformation->RegionScale + transformation->RegionMin.Y;
@@ -2148,6 +2182,11 @@ bool ChrClassesXPowerTypesEntryComparator::Compare(ChrClassesXPowerTypesEntry co
return left->PowerType < right->PowerType;
}
bool ItemLevelSelectorQualityEntryComparator::Compare(ItemLevelSelectorQualityEntry const* left, ItemLevelSelectorQualityEntry const* right)
{
return left->Quality > right->Quality;
}
bool DB2Manager::MountTypeXCapabilityEntryComparator::Compare(MountTypeXCapabilityEntry const* left, MountTypeXCapabilityEntry const* right)
{
if (left->MountTypeID == right->MountTypeID)

View File

@@ -45,7 +45,7 @@ TC_GAME_API extern DB2Storage<ArtifactPowerEntry> sArtifactPow
TC_GAME_API extern DB2Storage<ArtifactPowerPickerEntry> sArtifactPowerPickerStore;
TC_GAME_API extern DB2Storage<AuctionHouseEntry> sAuctionHouseStore;
TC_GAME_API extern DB2Storage<BankBagSlotPricesEntry> sBankBagSlotPricesStore;
TC_GAME_API extern DB2Storage<BannedAddOnsEntry> sBannedAddOnsStore;
TC_GAME_API extern DB2Storage<BannedAddonsEntry> sBannedAddonsStore;
TC_GAME_API extern DB2Storage<BarberShopStyleEntry> sBarberShopStyleStore;
TC_GAME_API extern DB2Storage<BattlePetBreedQualityEntry> sBattlePetBreedQualityStore;
TC_GAME_API extern DB2Storage<BattlePetBreedStateEntry> sBattlePetBreedStateStore;
@@ -130,7 +130,7 @@ TC_GAME_API extern DB2Storage<ItemSparseEntry> sItemSparseS
TC_GAME_API extern DB2Storage<ItemSpecEntry> sItemSpecStore;
TC_GAME_API extern DB2Storage<ItemSpecOverrideEntry> sItemSpecOverrideStore;
TC_GAME_API extern DB2Storage<ItemUpgradeEntry> sItemUpgradeStore;
TC_GAME_API extern DB2Storage<LfgDungeonsEntry> sLfgDungeonsStore;
TC_GAME_API extern DB2Storage<LFGDungeonsEntry> sLFGDungeonsStore;
TC_GAME_API extern DB2Storage<LiquidTypeEntry> sLiquidTypeStore;
TC_GAME_API extern DB2Storage<LockEntry> sLockStore;
TC_GAME_API extern DB2Storage<MailTemplateEntry> sMailTemplateStore;
@@ -286,7 +286,7 @@ public:
ItemModifiedAppearanceEntry const* GetDefaultItemModifiedAppearance(uint32 itemId) const;
std::vector<ItemSetSpellEntry const*> const* GetItemSetSpells(uint32 itemSetId) const;
std::vector<ItemSpecOverrideEntry const*> const* GetItemSpecOverrides(uint32 itemId) const;
static LfgDungeonsEntry const* GetLfgDungeon(uint32 mapId, Difficulty difficulty);
static LFGDungeonsEntry const* GetLfgDungeon(uint32 mapId, Difficulty difficulty);
static uint32 GetDefaultMapLight(uint32 mapId);
static uint32 GetLiquidFlags(uint32 liquidType);
MapDifficultyContainer const& GetMapDifficulties() const;
@@ -303,8 +303,8 @@ public:
PowerTypeEntry const* GetPowerTypeEntry(Powers power) const;
PowerTypeEntry const* GetPowerTypeByName(std::string const& name) const;
uint8 GetMaxPrestige() const;
static PvpDifficultyEntry const* GetBattlegroundBracketByLevel(uint32 mapid, uint32 level);
static PvpDifficultyEntry const* GetBattlegroundBracketById(uint32 mapid, BattlegroundBracketId id);
static PVPDifficultyEntry const* GetBattlegroundBracketByLevel(uint32 mapid, uint32 level);
static PVPDifficultyEntry const* GetBattlegroundBracketById(uint32 mapid, BattlegroundBracketId id);
uint32 GetRewardPackIDForPvpRewardByHonorLevelAndPrestige(uint8 honorLevel, uint8 prestige) const;
std::vector<QuestPackageItemEntry const*> const* GetQuestPackageItems(uint32 questPackageID) const;
std::vector<QuestPackageItemEntry const*> const* GetQuestPackageItemsFallback(uint32 questPackageID) const;

View File

@@ -37,12 +37,12 @@ struct AchievementEntry
uint16 Category;
uint16 UIOrder;
uint16 SharesCriteria; // referenced achievement (counting of all completed criterias)
uint16 CriteriaTree;
int8 Faction; // -1 = all, 0 = horde, 1 = alliance
uint8 Points;
uint8 MinimumCriteria; // need this count of completed criterias (own or referenced achievement criterias)
uint32 ID;
uint32 IconFileDataID;
uint32 CriteriaTree;
};
struct AnimKitEntry
@@ -230,7 +230,7 @@ struct BankBagSlotPricesEntry
uint32 Cost;
};
struct BannedAddOnsEntry
struct BannedAddonsEntry
{
uint32 ID;
char const* Name;
@@ -421,6 +421,8 @@ struct ChrRacesEntry
{
uint32 ID;
uint32 Flags;
uint32 MaleDisplayID;
uint32 FemaleDisplayID;
char const* ClientPrefix;
char const* ClientFileString;
LocalizedString* Name;
@@ -434,8 +436,6 @@ struct ChrRacesEntry
float FemaleCustomizeOffset[3];
uint32 LowResScreenFileDataID;
uint16 FactionID;
uint16 MaleDisplayID;
uint16 FemaleDisplayID;
uint16 ResSicknessSpellID;
uint16 SplashSoundID;
uint16 CinematicSequenceID;
@@ -451,7 +451,8 @@ struct ChrRacesEntry
uint8 CharComponentTexLayoutHiResID;
uint32 HighResMaleDisplayID;
uint32 HighResFemaleDisplayID;
uint32 Unk[3];
uint32 AlteredFormTransitionSpellVisualID[3];
uint32 AlteredFormTransitionSpellVisualKitID[3];
};
#define MAX_MASTERY_SPELLS 2
@@ -679,6 +680,7 @@ struct CriteriaEntry
uint32 WorldMapOverlayID;
// CRITERIA_TYPE_GAIN_REPUTATION = 46
// CRITERIA_TYPE_GAIN_PARAGON_REPUTATION = 206
uint32 FactionID;
// CRITERIA_TYPE_EQUIP_EPIC_ITEM = 49
@@ -733,11 +735,14 @@ struct CriteriaEntry
// CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED = 205
uint32 TransmogSetGroupID;
// CRITERIA_TYPE_RELIC_TALENT_UNLOCKED = 211
uint32 ArtifactPowerID;
} Asset;
uint32 StartAsset;
uint32 FailAsset;
uint32 ModifierTreeId;
uint16 StartTimer;
uint16 ModifierTreeId;
uint16 EligibilityWorldStateID;
uint8 Type;
uint8 StartEvent;
@@ -751,10 +756,10 @@ struct CriteriaTreeEntry
uint32 ID;
uint32 Amount;
LocalizedString* Description;
uint16 Parent;
uint16 Flags;
uint8 Operator;
uint32 CriteriaID;
uint32 Parent;
int32 OrderIndex;
};
@@ -1463,6 +1468,22 @@ struct ItemLevelSelectorEntry
{
uint32 ID;
uint16 ItemLevel;
uint16 ItemLevelSelectorQualitySetID;
};
struct ItemLevelSelectorQualityEntry
{
uint32 ID;
uint32 ItemBonusListID;
uint16 ItemLevelSelectorQualitySetID;
uint8 Quality;
};
struct ItemLevelSelectorQualitySetEntry
{
uint32 ID;
uint16 ItemLevelMin;
uint16 ItemLevelMax;
};
struct ItemLimitCategoryEntry
@@ -1514,16 +1535,16 @@ struct ItemSearchNameEntry
LocalizedString* Name;
uint32 Flags[3];
uint32 AllowableRace;
uint32 RequiredSpell;
uint16 RequiredReputationFaction;
uint16 RequiredSkill;
uint16 RequiredSkillRank;
uint16 ItemLevel;
uint8 Quality;
uint8 RequiredExpansion;
uint8 RequiredReputationRank;
uint8 RequiredLevel;
int32 AllowableClass;
uint16 RequiredReputationFaction;
uint8 RequiredReputationRank;
uint16 RequiredSkill;
uint16 RequiredSkillRank;
uint32 RequiredSpell;
};
#define MAX_ITEM_SET_ITEMS 17
@@ -1653,13 +1674,13 @@ struct ItemXBonusTreeEntry
#define KEYCHAIN_SIZE 32
struct KeyChainEntry
struct KeychainEntry
{
uint32 ID;
uint8 Key[KEYCHAIN_SIZE];
};
struct LfgDungeonsEntry
struct LFGDungeonsEntry
{
uint32 ID;
LocalizedString* Name;
@@ -1835,7 +1856,7 @@ struct ModifierTreeEntry
{
uint32 ID;
uint32 Asset[2];
uint16 Parent;
uint32 Parent;
uint8 Type;
uint8 Unk700;
uint8 Operator;
@@ -1949,57 +1970,65 @@ struct PlayerConditionEntry
{
uint32 ID;
uint32 RaceMask;
uint32 Time[2];
uint32 AuraSpellID[4];
LocalizedString* FailureDescription;
uint16 SkillID[4];
int16 MinSkill[4];
int16 MaxSkill[4];
uint16 PrevQuestID[4];
uint16 CurrQuestID[4];
uint16 CurrentCompletedQuestID[4];
uint16 Explored[2];
uint16 Achievement[4];
uint16 AreaID[4];
uint8 Flags;
uint8 MinReputation[3];
uint8 AuraCount[4];
uint8 LfgStatus[4];
uint8 LfgCompare[4];
uint8 CurrencyCount[4];
int32 ClassMask;
uint32 MinFactionID[3];
uint32 SpellID[4];
uint32 ItemID[4];
uint32 ItemCount[4];
uint32 LfgValue[4];
uint32 CurrencyID[4];
uint32 QuestKillMonster[6];
int32 MovementFlags[2];
uint16 MinLevel;
uint16 MaxLevel;
int8 Gender;
int8 NativeGender;
uint32 SkillLogic;
uint8 LanguageID;
uint8 MinLanguage;
uint32 MaxLanguage;
uint16 MaxFactionID;
uint8 MaxReputation;
uint32 ReputationLogic;
uint8 Unknown1;
uint8 MinPVPRank;
uint8 MaxPVPRank;
uint8 PvpMedal;
uint32 PrevQuestLogic;
uint32 CurrQuestLogic;
uint32 CurrentCompletedQuestLogic;
uint32 SpellLogic;
uint32 ItemLogic;
uint32 Time[2];
uint32 AuraSpellLogic;
uint32 AuraSpellID[4];
uint32 AchievementLogic;
uint32 AreaLogic;
uint32 QuestKillLogic;
LocalizedString* FailureDescription;
uint16 MinLevel;
uint16 MaxLevel;
uint16 SkillID[4];
int16 MinSkill[4];
int16 MaxSkill[4];
uint16 MaxFactionID;
uint16 PrevQuestID[4];
uint16 CurrQuestID[4];
uint16 CurrentCompletedQuestID[4];
uint16 Explored[2];
uint16 WorldStateExpressionID;
uint16 Achievement[4];
uint16 AreaID[4];
uint16 QuestKillID;
uint16 PhaseID;
uint16 MinAvgEquippedItemLevel;
uint16 MaxAvgEquippedItemLevel;
uint16 ModifierTreeID;
uint8 Flags;
int8 Gender;
int8 NativeGender;
uint8 MinLanguage;
uint8 MaxLanguage;
uint8 MinReputation[3];
uint8 MaxReputation;
uint8 Unknown1;
uint8 MinPVPRank;
uint8 MaxPVPRank;
uint8 PvpMedal;
uint8 ItemFlags;
uint8 AuraCount[4];
uint32 AuraSpellLogic;
uint16 WorldStateExpressionID;
uint8 WeatherID;
uint8 PartyStatus;
uint8 LifetimeMaxPVPRank;
uint8 LfgStatus[4];
uint8 LfgCompare[4];
uint8 CurrencyCount[4];
uint32 AchievementLogic;
uint32 LfgLogic;
uint32 AreaLogic;
uint32 CurrencyLogic;
uint16 QuestKillID;
uint32 QuestKillLogic;
int8 MinExpansionLevel;
int8 MaxExpansionLevel;
int8 MinExpansionTier;
@@ -2007,26 +2036,18 @@ struct PlayerConditionEntry
uint8 MinGuildLevel;
uint8 MaxGuildLevel;
uint8 PhaseUseFlags;
uint16 PhaseID;
uint32 PhaseGroupID;
uint32 MinAvgItemLevel;
uint32 MaxAvgItemLevel;
uint16 MinAvgEquippedItemLevel;
uint16 MaxAvgEquippedItemLevel;
int8 ChrSpecializationIndex;
int8 ChrSpecializationRole;
int8 PowerType;
int8 PowerTypeComp;
int8 PowerTypeValue;
int32 ClassMask;
uint32 LanguageID;
uint32 MinFactionID[3];
uint32 SpellID[4];
uint32 ItemID[4];
uint32 ItemCount[4];
uint32 LfgLogic;
uint32 LfgValue[4];
uint32 CurrencyLogic;
uint32 CurrencyID[4];
uint32 QuestKillMonster[6];
uint32 PhaseGroupID;
uint32 MinAvgItemLevel;
uint32 MaxAvgItemLevel;
int32 MovementFlags[2];
uint32 ModifierTreeID;
uint32 MainHandItemSubclassMask;
};
@@ -2068,7 +2089,7 @@ struct PrestigeLevelInfoEntry
bool IsDisabled() const { return (Flags & PRESTIGE_FLAG_DISABLED) != 0; }
};
struct PvpDifficultyEntry
struct PVPDifficultyEntry
{
uint32 ID;
uint16 MapID;
@@ -2184,12 +2205,12 @@ struct ScenarioStepEntry
uint32 ID;
LocalizedString* Description;
LocalizedString* Name;
uint16 CriteriaTreeID;
uint16 ScenarioID;
uint16 PreviousStepID; // Used in conjunction with Proving Grounds scenarios, when sequencing steps (Not using step order?)
uint16 QuestRewardID;
uint8 Step;
uint8 Flags;
uint32 CriteriaTreeID;
uint32 BonusRequiredStepID; // Bonus step can only be completed if scenario is in the step specified in this field
// helpers
@@ -2259,23 +2280,22 @@ struct SkillRaceClassInfoEntry
struct SoundKitEntry
{
LocalizedString* Name;
uint32 ID;
float VolumeFloat;
float MinDistance;
float DistanceCutoff;
uint16 Flags;
uint16 SoundEntriesAdvancedID;
uint8 SoundType;
uint8 DialogType;
uint8 EAXDef;
float VolumeVariationPlus;
float VolumeVariationMinus;
float PitchVariationPlus;
float PitchVariationMinus;
float PitchAdjust;
uint16 Flags;
uint16 SoundEntriesAdvancedID;
uint16 BusOverwriteID;
uint8 SoundType;
uint8 EAXDef;
uint8 DialogType;
uint8 Unk700;
uint32 ID;
};
struct SpecializationSpellsEntry
@@ -2307,9 +2327,9 @@ struct SpellAuraOptionsEntry
uint32 ProcTypeMask;
uint32 ProcCategoryRecovery;
uint16 CumulativeAura;
uint16 SpellProcsPerMinuteID;
uint8 DifficultyID;
uint8 ProcChance;
uint8 SpellProcsPerMinuteID;
};
struct SpellAuraRestrictionsEntry
@@ -2586,8 +2606,8 @@ struct SpellProcsPerMinuteModEntry
uint32 ID;
float Coeff;
uint16 Param;
uint16 SpellProcsPerMinuteID;
uint8 Type;
uint8 SpellProcsPerMinuteID;
};
struct SpellRadiusEntry
@@ -2731,15 +2751,19 @@ struct TalentEntry
struct TaxiNodesEntry
{
uint32 ID;
DBCPosition3D Pos;
LocalizedString* Name;
uint32 MountCreatureID[2];
DBCPosition2D MapOffset;
float Unk730;
DBCPosition2D FlightMapOffset;
uint16 MapID;
uint16 ConditionID;
uint16 LearnableIndex;
uint8 Flags;
uint32 ID;
int32 UiTextureKitPrefixID;
uint32 SpecialAtlasIconPlayerConditionID;
};
struct TaxiPathEntry
@@ -2753,14 +2777,14 @@ struct TaxiPathEntry
struct TaxiPathNodeEntry
{
DBCPosition3D Loc;
uint32 Delay;
uint16 PathID;
uint16 MapID;
uint8 NodeIndex;
uint32 ID;
uint8 Flags;
uint32 Delay;
uint16 ArrivalEventID;
uint16 DepartureEventID;
uint8 NodeIndex;
uint8 Flags;
uint32 ID;
};
struct TotemCategoryEntry
@@ -2871,24 +2895,13 @@ struct VehicleEntry
float CameraPitchOffset;
float FacingLimitRight;
float FacingLimitLeft;
float MsslTrgtTurnLingering;
float MsslTrgtPitchLingering;
float MsslTrgtMouseLingering;
float MsslTrgtEndOpacity;
float MsslTrgtArcSpeed;
float MsslTrgtArcRepeat;
float MsslTrgtArcWidth;
float MsslTrgtImpactRadius[2];
char const* MsslTrgtArcTexture;
char const* MsslTrgtImpactTexture;
char const* MsslTrgtImpactModel[2];
float CameraYawOffset;
float MsslTrgtImpactTexRadius;
uint16 SeatID[MAX_VEHICLE_SEATS];
uint16 VehicleUIIndicatorID;
uint16 PowerDisplayID[3];
uint8 FlagsB;
uint8 UILocomotionType;
int32 MissileTargetingID;
};
struct VehicleSeatEntry
@@ -3007,12 +3020,12 @@ struct WorldMapAreaEntry
float LocRight;
float LocTop;
float LocBottom;
uint32 Flags;
uint16 MapID;
uint16 AreaID;
int16 DisplayMapID;
int16 DefaultDungeonFloor;
uint16 ParentWorldMapID;
uint16 Flags;
uint8 LevelRangeMin;
uint8 LevelRangeMax;
uint8 BountySetID;
@@ -3054,6 +3067,7 @@ struct WorldMapTransformsEntry
uint16 NewDungeonMapID;
uint16 NewAreaID;
uint8 Flags;
int32 Priority;
};
struct WorldSafeLocsEntry

View File

@@ -155,7 +155,7 @@ enum ArtifactPowerFlag : uint8
ARTIFACT_POWER_FLAG_DONT_COUNT_FIRST_BONUS_RANK = 0x10,
};
#define BATTLE_PET_SPECIES_MAX_ID 2073
#define BATTLE_PET_SPECIES_MAX_ID 2137
enum ChrSpecializationFlag
{
@@ -487,10 +487,13 @@ enum CriteriaTypes : uint8
// 202 - 0 criterias (Legion - 23420)
CRITERIA_TYPE_COMPLETE_WORLD_QUEST = 203,
// 204 - Special criteria type to award players for some external events? Comes with what looks like an identifier, so guessing it's not unique.
CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED = 205
CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED = 205,
CRITERIA_TYPE_GAIN_PARAGON_REPUTATION = 206,
CRITERIA_TYPE_EARN_HONOR_XP = 207,
CRITERIA_TYPE_RELIC_TALENT_UNLOCKED = 211
};
#define CRITERIA_TYPE_TOTAL 208
#define CRITERIA_TYPE_TOTAL 212
enum CriteriaTreeFlags : uint16
{
@@ -592,6 +595,7 @@ enum Difficulty : uint8
DIFFICULTY_EVENT_SCENARIO_6 = 30,
DIFFICULTY_WORLD_PVP_SCENARIO_2 = 32,
DIFFICULTY_TIMEWALKING_RAID = 33,
DIFFICULTY_PVP = 34,
MAX_DIFFICULTY
};
@@ -644,7 +648,7 @@ enum FactionMasks
// if none flags set then non-aggressive creature
};
#define MAX_ITEM_PROTO_FLAGS 3
#define MAX_ITEM_PROTO_FLAGS 4
#define MAX_ITEM_PROTO_SOCKETS 3
#define MAX_ITEM_PROTO_STATS 10
@@ -883,7 +887,7 @@ enum SpellShapeshiftFormFlags
SHAPESHIFT_FORM_PREVENT_EMOTE_SOUNDS = 0x1000
};
#define TaxiMaskSize 243
#define TaxiMaskSize 253
typedef std::array<uint8, TaxiMaskSize> TaxiMask;
enum TotemCategoryType
@@ -1028,4 +1032,9 @@ enum CurrencyTypes
CURRENCY_TYPE_ARTIFACT_KNOWLEDGE = 1171,
};
enum WorldMapTransformsFlags
{
WORLD_MAP_TRANSFORMS_FLAG_DUNGEON = 0x04
};
#endif

View File

@@ -48,7 +48,7 @@ requiredItemLevel(0)
{
}
LFGDungeonData::LFGDungeonData(LfgDungeonsEntry const* dbc) : id(dbc->ID), name(dbc->Name->Str[sWorld->GetDefaultDbcLocale()]), map(dbc->MapID),
LFGDungeonData::LFGDungeonData(LFGDungeonsEntry const* dbc) : id(dbc->ID), name(dbc->Name->Str[sWorld->GetDefaultDbcLocale()]), map(dbc->MapID),
type(uint8(dbc->Type)), expansion(uint8(dbc->Expansion)), group(uint8(dbc->GroupID)),
minlevel(uint8(dbc->MinLevel)), maxlevel(uint8(dbc->MaxLevel)), difficulty(Difficulty(dbc->DifficultyID)),
seasonal((dbc->Flags & LFG_FLAG_SEASONAL) != 0), x(0.0f), y(0.0f), z(0.0f), o(0.0f),
@@ -193,9 +193,9 @@ void LFGMgr::LoadLFGDungeons(bool reload /* = false */)
LfgDungeonStore.clear();
// Initialize Dungeon map with data from dbcs
for (uint32 i = 0; i < sLfgDungeonsStore.GetNumRows(); ++i)
for (uint32 i = 0; i < sLFGDungeonsStore.GetNumRows(); ++i)
{
LfgDungeonsEntry const* dungeon = sLfgDungeonsStore.LookupEntry(i);
LFGDungeonsEntry const* dungeon = sLFGDungeonsStore.LookupEntry(i);
if (!dungeon)
continue;

View File

@@ -29,7 +29,7 @@
class Group;
class Player;
class Quest;
struct LfgDungeonsEntry;
struct LFGDungeonsEntry;
enum Difficulty : uint8;
namespace WorldPackets
@@ -289,7 +289,7 @@ struct LfgPlayerBoot
struct LFGDungeonData
{
LFGDungeonData();
LFGDungeonData(LfgDungeonsEntry const* dbc);
LFGDungeonData(LFGDungeonsEntry const* dbc);
uint32 id;
std::string name;

View File

@@ -713,6 +713,7 @@ struct TC_GAME_API ItemTemplate
uint32 GetFlags() const { return ExtendedData->Flags[0]; }
uint32 GetFlags2() const { return ExtendedData->Flags[1]; }
uint32 GetFlags3() const { return ExtendedData->Flags[2]; }
uint32 GetFlags4() const { return ExtendedData->Flags[3]; }
float GetUnk1() const { return ExtendedData->Unk1; }
float GetUnk2() const { return ExtendedData->Unk2; }
uint32 GetBuyCount() const { return std::max<uint32>(ExtendedData->BuyCount, 1u); }

View File

@@ -6115,7 +6115,7 @@ void Player::RewardReputation(Unit* victim, float rate)
// support for: Championing - http://www.wowwiki.com/Championing
Map const* map = GetMap();
if (map->IsNonRaidDungeon())
if (LfgDungeonsEntry const* dungeon = DB2Manager::GetLfgDungeon(map->GetId(), map->GetDifficultyID()))
if (LFGDungeonsEntry const* dungeon = DB2Manager::GetLfgDungeon(map->GetId(), map->GetDifficultyID()))
if (dungeon->TargetLevel == 80)
ChampioningFaction = GetChampioningFaction();
}

View File

@@ -468,7 +468,7 @@ enum PlayerFieldBytesOffsets
PLAYER_FIELD_BYTES_OFFSET_RAF_GRANTABLE_LEVEL = 0,
PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES = 1,
PLAYER_FIELD_BYTES_OFFSET_LIFETIME_MAX_PVP_RANK = 2,
PLAYER_FIELD_BYTES_OFFSET_MAX_ARTIFACT_POWER_RANKS = 3,
PLAYER_FIELD_BYTES_OFFSET_NUM_RESPECS = 3,
};
enum PlayerFieldBytes2Offsets

View File

@@ -1504,7 +1504,7 @@ void Group::SendUpdateToPlayer(ObjectGuid playerGUID, MemberSlot* slot)
{
lfg::LfgDungeonSet const& selectedDungeons = sLFGMgr->GetSelectedDungeons(player->GetGUID());
if (selectedDungeons.size() == 1)
if (LfgDungeonsEntry const* dungeon = sLfgDungeonsStore.LookupEntry(*selectedDungeons.begin()))
if (LFGDungeonsEntry const* dungeon = sLFGDungeonsStore.LookupEntry(*selectedDungeons.begin()))
if (dungeon->Type == lfg::LFG_TYPE_RANDOM)
return dungeon->ID;
@@ -1806,7 +1806,7 @@ GroupJoinBattlegroundResult Group::CanJoinBattlegroundQueue(Battleground const*
if (!reference)
return ERR_BATTLEGROUND_JOIN_FAILED;
PvpDifficultyEntry const* bracketEntry = DB2Manager::GetBattlegroundBracketByLevel(bgOrTemplate->GetMapId(), reference->getLevel());
PVPDifficultyEntry const* bracketEntry = DB2Manager::GetBattlegroundBracketByLevel(bgOrTemplate->GetMapId(), reference->getLevel());
if (!bracketEntry)
return ERR_BATTLEGROUND_JOIN_FAILED;
@@ -1830,7 +1830,7 @@ GroupJoinBattlegroundResult Group::CanJoinBattlegroundQueue(Battleground const*
return ERR_BATTLEGROUND_JOIN_TIMED_OUT;
}
// not in the same battleground level braket, don't let join
PvpDifficultyEntry const* memberBracketEntry = DB2Manager::GetBattlegroundBracketByLevel(bracketEntry->MapID, member->getLevel());
PVPDifficultyEntry const* memberBracketEntry = DB2Manager::GetBattlegroundBracketByLevel(bracketEntry->MapID, member->getLevel());
if (memberBracketEntry != bracketEntry)
return ERR_BATTLEGROUND_JOIN_RANGE_INDEX;
// don't let join rated matches if the arena team id doesn't match

View File

@@ -94,7 +94,7 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPackets::Battleground::Batt
return;
// expected bracket entry
PvpDifficultyEntry const* bracketEntry = DB2Manager::GetBattlegroundBracketByLevel(bg->GetMapId(), _player->getLevel());
PVPDifficultyEntry const* bracketEntry = DB2Manager::GetBattlegroundBracketByLevel(bg->GetMapId(), _player->getLevel());
if (!bracketEntry)
return;
@@ -313,7 +313,7 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPackets::Battleground::Battl
bgTypeId = bg->GetTypeID();
// expected bracket entry
PvpDifficultyEntry const* bracketEntry = DB2Manager::GetBattlegroundBracketByLevel(bg->GetMapId(), _player->getLevel());
PVPDifficultyEntry const* bracketEntry = DB2Manager::GetBattlegroundBracketByLevel(bg->GetMapId(), _player->getLevel());
if (!bracketEntry)
return;
@@ -474,7 +474,7 @@ void WorldSession::HandleRequestBattlefieldStatusOpcode(WorldPackets::Battlegrou
continue;
// expected bracket entry
PvpDifficultyEntry const* bracketEntry = DB2Manager::GetBattlegroundBracketByLevel(bg->GetMapId(), _player->getLevel());
PVPDifficultyEntry const* bracketEntry = DB2Manager::GetBattlegroundBracketByLevel(bg->GetMapId(), _player->getLevel());
if (!bracketEntry)
continue;
@@ -510,7 +510,7 @@ void WorldSession::HandleBattlemasterJoinArena(WorldPackets::Battleground::Battl
BattlegroundTypeId bgTypeId = bg->GetTypeID();
BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(bgTypeId, arenatype);
PvpDifficultyEntry const* bracketEntry = DB2Manager::GetBattlegroundBracketByLevel(bg->GetMapId(), _player->getLevel());
PVPDifficultyEntry const* bracketEntry = DB2Manager::GetBattlegroundBracketByLevel(bg->GetMapId(), _player->getLevel());
if (!bracketEntry)
return;

View File

@@ -45,7 +45,7 @@ void WorldSession::HandleLfgJoinOpcode(WorldPackets::LFG::DFJoin& dfJoin)
for (uint32 slot : dfJoin.Slots)
{
uint32 dungeon = slot & 0x00FFFFFF;
if (sLfgDungeonsStore.LookupEntry(dungeon))
if (sLFGDungeonsStore.LookupEntry(dungeon))
newDungeons.insert(dungeon);
}

View File

@@ -2281,6 +2281,7 @@ enum Targets
TARGET_UNK_146 = 146,
TARGET_UNK_147 = 147,
TARGET_UNK_148 = 148,
TARGET_UNK_149 = 149,
TOTAL_SPELL_TARGETS
};

View File

@@ -366,6 +366,7 @@ SpellImplicitTargetInfo::StaticData SpellImplicitTargetInfo::_data[TOTAL_SPELL_
{TARGET_OBJECT_TYPE_NONE, TARGET_REFERENCE_TYPE_NONE, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 146
{TARGET_OBJECT_TYPE_NONE, TARGET_REFERENCE_TYPE_NONE, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 147
{TARGET_OBJECT_TYPE_NONE, TARGET_REFERENCE_TYPE_NONE, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 148
{TARGET_OBJECT_TYPE_DEST, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_RANDOM}, // 149
};
SpellEffectInfo::SpellEffectInfo(SpellEffectScalingEntry const* spellEffectScaling, SpellInfo const* spellInfo, uint8 effIndex, SpellEffectEntry const* _effect)