From 0ab3b8e8cd33c12137a945d34a9ae5223b6f4a9a Mon Sep 17 00:00:00 2001 From: hondacrx Date: Tue, 13 Mar 2018 15:43:03 -0400 Subject: [PATCH] Core/DataStores: Fixed db2 structures after 7.3.5 --- Source/Framework/Constants/SharedConst.cs | 4 +- .../Database/Databases/HotfixDatabase.cs | 833 +++++----- .../Game/Achievements/AchievementManager.cs | 8 +- Source/Game/Achievements/CriteriaHandler.cs | 6 +- Source/Game/AuctionHouse/AuctionManager.cs | 8 +- Source/Game/BattlePets/BattlePetManager.cs | 26 +- .../Game/Chat/Commands/CharacterCommands.cs | 2 +- Source/Game/Chat/Commands/GoCommands.cs | 20 +- Source/Game/Chat/Commands/LearnCommands.cs | 6 +- Source/Game/Chat/Commands/LookupCommands.cs | 8 +- Source/Game/Chat/Commands/MiscCommands.cs | 2 +- Source/Game/Chat/Commands/ModifyCommands.cs | 4 +- Source/Game/Chat/Commands/ResetCommands.cs | 2 +- Source/Game/Chat/Commands/TitleCommands.cs | 6 +- Source/Game/Conditions/ConditionManager.cs | 8 +- Source/Game/DataStorage/CliDB.cs | 23 +- .../Game/DataStorage/ClientReader/DBReader.cs | 5 +- .../DataStorage/ConversationDataStorage.cs | 4 +- Source/Game/DataStorage/DB2Manager.cs | 215 ++- Source/Game/DataStorage/M2Storage.cs | 2 +- Source/Game/DataStorage/Structs/A_Records.cs | 80 +- Source/Game/DataStorage/Structs/B_Records.cs | 42 +- Source/Game/DataStorage/Structs/C_Records.cs | 146 +- Source/Game/DataStorage/Structs/D_Records.cs | 42 +- Source/Game/DataStorage/Structs/E_Records.cs | 10 +- Source/Game/DataStorage/Structs/F_Records.cs | 28 +- Source/Game/DataStorage/Structs/G_Records.cs | 155 +- Source/Game/DataStorage/Structs/H_Records.cs | 9 +- Source/Game/DataStorage/Structs/I_Records.cs | 241 +-- Source/Game/DataStorage/Structs/L_Records.cs | 34 +- Source/Game/DataStorage/Structs/M_Records.cs | 55 +- Source/Game/DataStorage/Structs/N_Records.cs | 4 +- Source/Game/DataStorage/Structs/O_Records.cs | 4 +- Source/Game/DataStorage/Structs/P_Records.cs | 42 +- Source/Game/DataStorage/Structs/Q_Records.cs | 14 +- Source/Game/DataStorage/Structs/R_Records.cs | 14 +- Source/Game/DataStorage/Structs/S_Records.cs | 137 +- Source/Game/DataStorage/Structs/T_Records.cs | 39 +- Source/Game/DataStorage/Structs/V_Records.cs | 22 +- Source/Game/DataStorage/Structs/W_Records.cs | 16 +- Source/Game/DungeonFinding/LFGManager.cs | 6 +- Source/Game/Entities/GameObject/GameObject.cs | 12 +- Source/Game/Entities/Item/Item.cs | 82 +- Source/Game/Entities/Item/ItemEnchantment.cs | 6 +- Source/Game/Entities/Item/ItemTemplate.cs | 108 +- .../Game/Entities/Player/CollectionManager.cs | 24 +- Source/Game/Entities/Player/Player.DB.cs | 10 +- Source/Game/Entities/Player/Player.Items.cs | 118 +- Source/Game/Entities/Player/Player.Map.cs | 2 +- Source/Game/Entities/Player/Player.PvP.cs | 4 +- Source/Game/Entities/Player/Player.Quest.cs | 14 +- Source/Game/Entities/Player/Player.Spells.cs | 40 +- Source/Game/Entities/Player/Player.cs | 80 +- Source/Game/Entities/StatSystem.cs | 2 +- Source/Game/Entities/Taxi/TaxiPathGraph.cs | 18 +- Source/Game/Entities/TemporarySummon.cs | 4 +- Source/Game/Entities/Transport.cs | 14 +- Source/Game/Entities/Unit/Unit.Movement.cs | 16 +- Source/Game/Entities/Unit/Unit.Pets.cs | 4 +- Source/Game/Entities/Unit/Unit.Spells.cs | 4 +- Source/Game/Entities/Unit/Unit.cs | 16 +- Source/Game/Entities/Vehicle.cs | 12 +- Source/Game/Garrisons/GarrisonManager.cs | 16 +- Source/Game/Garrisons/Garrisons.cs | 36 +- Source/Game/Globals/ObjectManager.cs | 48 +- Source/Game/Groups/Group.cs | 4 +- Source/Game/Guilds/GuildFinderManager.cs | 2 +- Source/Game/Handlers/ArtifactHandler.cs | 12 +- Source/Game/Handlers/CharacterHandler.cs | 4 +- Source/Game/Handlers/CombatHandler.cs | 2 +- Source/Game/Handlers/ItemHandler.cs | 12 +- Source/Game/Handlers/MovementHandler.cs | 6 +- Source/Game/Handlers/QueryHandler.cs | 4 +- Source/Game/Handlers/TaxiHandler.cs | 4 +- .../Handlers/TransmogrificationHandler.cs | 2 +- Source/Game/Handlers/VehicleHandler.cs | 10 +- Source/Game/Loot/Loot.cs | 12 +- Source/Game/Maps/GridMap.cs | 8 +- Source/Game/Maps/Map.cs | 16 +- Source/Game/Maps/TransportManager.cs | 27 +- .../Movement/Generators/WaypointMovement.cs | 12 +- Source/Game/OutdoorPVP/OutdoorPvP.cs | 2 +- Source/Game/Quest/Quest.cs | 4 +- Source/Game/Reputation/ReputationManager.cs | 12 +- Source/Game/Scenarios/Scenario.cs | 8 +- Source/Game/Scenarios/ScenarioManager.cs | 4 +- Source/Game/Spells/Auras/Aura.cs | 10 +- Source/Game/Spells/Auras/AuraEffect.cs | 16 +- Source/Game/Spells/Spell.cs | 23 +- Source/Game/Spells/SpellEffects.cs | 8 +- Source/Game/Spells/SpellHistory.cs | 6 +- Source/Game/Spells/SpellInfo.cs | 102 +- Source/Game/Spells/SpellManager.cs | 22 +- Source/Game/Text/ChatTextBuilder.cs | 2 +- Source/Game/Text/CreatureTextManager.cs | 2 +- Source/Scripts/Spells/Generic.cs | 2 +- .../master/2018_03_12_00_hotfixes.sql | 1464 +++++++++++++++++ 97 files changed, 3139 insertions(+), 1707 deletions(-) create mode 100644 sql/updates/hotfixes/master/2018_03_12_00_hotfixes.sql diff --git a/Source/Framework/Constants/SharedConst.cs b/Source/Framework/Constants/SharedConst.cs index a08502109..fb45a79ab 100644 --- a/Source/Framework/Constants/SharedConst.cs +++ b/Source/Framework/Constants/SharedConst.cs @@ -538,7 +538,7 @@ namespace Framework.Constants MaxAccountExpansions } - public enum PowerType : byte + public enum PowerType : sbyte { Mana = 0, Rage = 1, @@ -561,7 +561,7 @@ namespace Framework.Constants Pain = 18, Max = 19, All = 127, // default for class? - Health = 0xFE, // (-2 as signed value) + Health = -2, // (-2 as signed value) MaxPerClass = 6 } diff --git a/Source/Framework/Database/Databases/HotfixDatabase.cs b/Source/Framework/Database/Databases/HotfixDatabase.cs index 4431fa853..b6d46039c 100644 --- a/Source/Framework/Database/Databases/HotfixDatabase.cs +++ b/Source/Framework/Database/Databases/HotfixDatabase.cs @@ -22,8 +22,8 @@ namespace Framework.Database public override void PreparedStatements() { // Achievement.db2 - PrepareStatement(HotfixStatements.SEL_ACHIEVEMENT, "SELECT Title, Description, Reward, Flags, MapID, Supercedes, Category, UIOrder, SharesCriteria, " + - "Faction, Points, MinimumCriteria, ID, IconFileDataID, CriteriaTree FROM achievement ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ACHIEVEMENT, "SELECT Title, Description, Reward, Flags, InstanceID, Supercedes, Category, UiOrder, SharesCriteria, " + + "Faction, Points, MinimumCriteria, ID, IconFileID, CriteriaTree FROM achievement ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_ACHIEVEMENT_LOCALE, "SELECT ID, Title_lang, Description_lang, Reward_lang FROM achievement_locale WHERE locale = ?"); // AnimKit.db2 @@ -33,56 +33,57 @@ namespace Framework.Database PrepareStatement(HotfixStatements.SEL_AREA_GROUP_MEMBER, "SELECT ID, AreaID, AreaGroupID FROM area_group_member ORDER BY ID DESC"); // AreaTable.db2 - PrepareStatement(HotfixStatements.SEL_AREA_TABLE, "SELECT ID, ZoneName, AreaName, Flags1, Flags2, AmbientMultiplier, MapID, ParentAreaID, AreaBit, " + - "AmbienceID, ZoneMusic, IntroSound, LiquidTypeID1, LiquidTypeID2, LiquidTypeID3, LiquidTypeID4, UWZoneMusic, UWAmbience, " + - "PvPCombatWorldStateID, SoundProviderPref, SoundProviderPrefUnderwater, ExplorationLevel, FactionGroupMask, MountFlags, " + - "WildBattlePetLevelMin, WildBattlePetLevelMax, WindSettingsID, UWIntroSound FROM area_table ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_AREA_TABLE, "SELECT ID, ZoneName, AreaName, Flags1, Flags2, AmbientMultiplier, ContinentID, ParentAreaID, AreaBit, " + + "AmbienceID, ZoneMusic, IntroSound, LiquidTypeID1, LiquidTypeID2, LiquidTypeID3, LiquidTypeID4, UwZoneMusic, UwAmbience, " + + "PvpCombatWorldStateID, SoundProviderPref, SoundProviderPrefUnderwater, ExplorationLevel, FactionGroupMask, MountFlags, " + + "WildBattlePetLevelMin, WildBattlePetLevelMax, WindSettingsID, UwIntroSound FROM area_table ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_AREA_TABLE_LOCALE, "SELECT ID, AreaName_lang FROM area_table_locale WHERE locale = ?"); // AreaTrigger.db2 - PrepareStatement(HotfixStatements.SEL_AREA_TRIGGER, "SELECT PosX, PosY, PosZ, Radius, BoxLength, BoxWidth, BoxHeight, BoxYaw, MapID, PhaseID, PhaseGroupID, " + - "ShapeID, AreaTriggerActionSetID, PhaseUseFlags, ShapeType, Flag, ID FROM area_trigger ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_AREA_TRIGGER, "SELECT PosX, PosY, PosZ, Radius, BoxLength, BoxWidth, BoxHeight, BoxYaw, ContinentID, PhaseID, " + + "PhaseGroupID, ShapeID, AreaTriggerActionSetID, PhaseUseFlags, ShapeType, Flags, ID FROM area_trigger ORDER BY ID DESC"); // ArmorLocation.db2 - PrepareStatement(HotfixStatements.SEL_ARMOR_LOCATION, "SELECT ID, Modifier1, Modifier2, Modifier3, Modifier4, Modifier5 FROM armor_location ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ARMOR_LOCATION, "SELECT ID, Clothmodifier, Leathermodifier, Chainmodifier, Platemodifier, Modifier FROM armor_location" + + " ORDER BY ID DESC"); // Artifact.db2 - PrepareStatement(HotfixStatements.SEL_ARTIFACT, "SELECT ID, Name, BarConnectedColor, BarDisconnectedColor, TitleColor, ClassUiTextureKitID, SpecID, " + - "ArtifactCategoryID, Flags, UiModelSceneID, SpellVisualKitID FROM artifact ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ARTIFACT, "SELECT ID, Name, UiBarOverlayColor, UiBarBackgroundColor, UiNameColor, UiTextureKitID, " + + "ChrSpecializationID, ArtifactCategoryID, Flags, UiModelSceneID, SpellVisualKitID FROM artifact ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_ARTIFACT_LOCALE, "SELECT ID, Name_lang FROM artifact_locale WHERE locale = ?"); // ArtifactAppearance.db2 - PrepareStatement(HotfixStatements.SEL_ARTIFACT_APPEARANCE, "SELECT Name, SwatchColor, ModelDesaturation, ModelAlpha, ShapeshiftDisplayID, " + - "ArtifactAppearanceSetID, Unknown, DisplayIndex, AppearanceModID, Flags, ModifiesShapeshiftFormDisplay, ID, PlayerConditionID, " + - "ItemAppearanceID, AltItemAppearanceID FROM artifact_appearance ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ARTIFACT_APPEARANCE, "SELECT Name, UiSwatchColor, UiModelSaturation, UiModelOpacity, OverrideShapeshiftDisplayID, " + + "ArtifactAppearanceSetID, UiCameraID, DisplayIndex, ItemAppearanceModifierID, Flags, OverrideShapeshiftFormID, ID, UnlockPlayerConditionID, " + + "UiItemAppearanceID, UiAltItemAppearanceID FROM artifact_appearance ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_ARTIFACT_APPEARANCE_LOCALE, "SELECT ID, Name_lang FROM artifact_appearance_locale WHERE locale = ?"); // ArtifactAppearanceSet.db2 - PrepareStatement(HotfixStatements.SEL_ARTIFACT_APPEARANCE_SET, "SELECT Name, Name2, UiCameraID, AltHandUICameraID, DisplayIndex, AttachmentPoint, Flags, " + - "ID, ArtifactID FROM artifact_appearance_set ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_ARTIFACT_APPEARANCE_SET_LOCALE, "SELECT ID, Name_lang, Name2_lang FROM artifact_appearance_set_locale WHERE locale = ?"); + PrepareStatement(HotfixStatements.SEL_ARTIFACT_APPEARANCE_SET, "SELECT Name, Description, UiCameraID, AltHandUICameraID, DisplayIndex, " + + "ForgeAttachmentOverride, Flags, ID, ArtifactID FROM artifact_appearance_set ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ARTIFACT_APPEARANCE_SET_LOCALE, "SELECT ID, Name_lang, Description_lang FROM artifact_appearance_set_locale" + + " WHERE locale = ?"); // ArtifactCategory.db2 - PrepareStatement(HotfixStatements.SEL_ARTIFACT_CATEGORY, "SELECT ID, ArtifactKnowledgeCurrencyID, ArtifactKnowledgeMultiplierCurveID FROM artifact_category" + - " ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ARTIFACT_CATEGORY, "SELECT ID, XpMultCurrencyID, XpMultCurveID FROM artifact_category ORDER BY ID DESC"); // ArtifactPower.db2 - PrepareStatement(HotfixStatements.SEL_ARTIFACT_POWER, "SELECT PosX, PosY, ArtifactID, Flags, MaxRank, ArtifactTier, ID, RelicType FROM artifact_power" + + PrepareStatement(HotfixStatements.SEL_ARTIFACT_POWER, "SELECT PosX, PosY, ArtifactID, Flags, MaxPurchasableRank, Tier, ID, Label FROM artifact_power" + " ORDER BY ID DESC"); // ArtifactPowerLink.db2 - PrepareStatement(HotfixStatements.SEL_ARTIFACT_POWER_LINK, "SELECT ID, FromArtifactPowerID, ToArtifactPowerID FROM artifact_power_link ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ARTIFACT_POWER_LINK, "SELECT ID, PowerA, PowerB FROM artifact_power_link ORDER BY ID DESC"); // ArtifactPowerPicker.db2 PrepareStatement(HotfixStatements.SEL_ARTIFACT_POWER_PICKER, "SELECT ID, PlayerConditionID FROM artifact_power_picker ORDER BY ID DESC"); // ArtifactPowerRank.db2 - PrepareStatement(HotfixStatements.SEL_ARTIFACT_POWER_RANK, "SELECT ID, SpellID, Value, Unknown, Rank, ArtifactPowerID FROM artifact_power_rank" + - " ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ARTIFACT_POWER_RANK, "SELECT ID, SpellID, AuraPointsOverride, ItemBonusListID, RankIndex, ArtifactPowerID" + + " FROM artifact_power_rank ORDER BY ID DESC"); // ArtifactQuestXp.db2 - PrepareStatement(HotfixStatements.SEL_ARTIFACT_QUEST_XP, "SELECT ID, Exp1, Exp2, Exp3, Exp4, Exp5, Exp6, Exp7, Exp8, Exp9, Exp10 FROM artifact_quest_xp" + - " ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ARTIFACT_QUEST_XP, "SELECT ID, Difficulty1, Difficulty2, Difficulty3, Difficulty4, Difficulty5, Difficulty6, " + + "Difficulty7, Difficulty8, Difficulty9, Difficulty10 FROM artifact_quest_xp ORDER BY ID DESC"); // AuctionHouse.db2 PrepareStatement(HotfixStatements.SEL_AUCTION_HOUSE, "SELECT ID, Name, FactionID, DepositRate, ConsignmentRate FROM auction_house ORDER BY ID DESC"); @@ -95,252 +96,253 @@ namespace Framework.Database PrepareStatement(HotfixStatements.SEL_BANNED_ADDONS, "SELECT ID, Name, Version, Flags FROM banned_addons ORDER BY ID DESC"); // BarberShopStyle.db2 - PrepareStatement(HotfixStatements.SEL_BARBER_SHOP_STYLE, "SELECT DisplayName, Description, CostModifier, Type, Race, Sex, Data, ID FROM barber_shop_style" + + PrepareStatement(HotfixStatements.SEL_BARBER_SHOP_STYLE, "SELECT DisplayName, Description, CostModifier, Type, Race, Sex, Data, ID FROM barber_shop_style" + " ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_BARBER_SHOP_STYLE_LOCALE, "SELECT ID, DisplayName_lang, Description_lang FROM barber_shop_style_locale WHERE locale = ?"); // BattlePetBreedQuality.db2 - PrepareStatement(HotfixStatements.SEL_BATTLE_PET_BREED_QUALITY, "SELECT ID, Modifier, Quality FROM battle_pet_breed_quality ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_BATTLE_PET_BREED_QUALITY, "SELECT ID, StateMultiplier, QualityEnum FROM battle_pet_breed_quality ORDER BY ID DESC"); // BattlePetBreedState.db2 - PrepareStatement(HotfixStatements.SEL_BATTLE_PET_BREED_STATE, "SELECT ID, Value, State, BreedID FROM battle_pet_breed_state ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_BATTLE_PET_BREED_STATE, "SELECT ID, Value, BattlePetStateID, BattlePetBreedID FROM battle_pet_breed_state" + + " ORDER BY ID DESC"); // BattlePetSpecies.db2 - PrepareStatement(HotfixStatements.SEL_BATTLE_PET_SPECIES, "SELECT SourceText, Description, CreatureID, IconFileID, SummonSpellID, Flags, PetType, Source, " + - "ID, CardModelSceneID, LoadoutModelSceneID FROM battle_pet_species ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_BATTLE_PET_SPECIES, "SELECT SourceText, Description, CreatureID, IconFileDataID, SummonSpellID, Flags, PetTypeEnum, " + + "SourceTypeEnum, ID, CardUIModelSceneID, LoadoutUIModelSceneID FROM battle_pet_species ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_BATTLE_PET_SPECIES_LOCALE, "SELECT ID, SourceText_lang, Description_lang FROM battle_pet_species_locale WHERE locale = ?"); // BattlePetSpeciesState.db2 - PrepareStatement(HotfixStatements.SEL_BATTLE_PET_SPECIES_STATE, "SELECT ID, Value, State, SpeciesID FROM battle_pet_species_state ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_BATTLE_PET_SPECIES_STATE, "SELECT ID, Value, BattlePetStateID, BattlePetSpeciesID FROM battle_pet_species_state" + + " ORDER BY ID DESC"); // BattlemasterList.db2 - PrepareStatement(HotfixStatements.SEL_BATTLEMASTER_LIST, "SELECT ID, Name, GameType, ShortDescription, LongDescription, IconFileDataID, MapID1, MapID2, " + - "MapID3, MapID4, MapID5, MapID6, MapID7, MapID8, MapID9, MapID10, MapID11, MapID12, MapID13, MapID14, MapID15, MapID16, HolidayWorldState, " + - "PlayerConditionID, InstanceType, GroupsAllowed, MaxGroupSize, MinLevel, MaxLevel, RatedPlayers, MinPlayers, MaxPlayers, Flags" + + PrepareStatement(HotfixStatements.SEL_BATTLEMASTER_LIST, "SELECT ID, Name, GameType, ShortDescription, LongDescription, IconFileDataID, MapID1, MapID2, " + + "MapID3, MapID4, MapID5, MapID6, MapID7, MapID8, MapID9, MapID10, MapID11, MapID12, MapID13, MapID14, MapID15, MapID16, HolidayWorldState, " + + "RequiredPlayerConditionID, InstanceType, GroupsAllowed, MaxGroupSize, MinLevel, MaxLevel, RatedPlayers, MinPlayers, MaxPlayers, Flags" + " FROM battlemaster_list ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_BATTLEMASTER_LIST_LOCALE, "SELECT ID, Name_lang, GameType_lang, ShortDescription_lang, LongDescription_lang" + + PrepareStatement(HotfixStatements.SEL_BATTLEMASTER_LIST_LOCALE, "SELECT ID, Name_lang, GameType_lang, ShortDescription_lang, LongDescription_lang" + " FROM battlemaster_list_locale WHERE locale = ?"); // BroadcastText.db2 - PrepareStatement(HotfixStatements.SEL_BROADCAST_TEXT, "SELECT ID, MaleText, FemaleText, EmoteID1, EmoteID2, EmoteID3, EmoteDelay1, EmoteDelay2, " + - "EmoteDelay3, UnkEmoteID, Language, Type, PlayerConditionID, SoundID1, SoundID2 FROM broadcast_text ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_BROADCAST_TEXT_LOCALE, "SELECT ID, MaleText_lang, FemaleText_lang FROM broadcast_text_locale WHERE locale = ?"); + PrepareStatement(HotfixStatements.SEL_BROADCAST_TEXT, "SELECT ID, Text, Text1, EmoteID1, EmoteID2, EmoteID3, EmoteDelay1, EmoteDelay2, EmoteDelay3, " + + "EmotesID, LanguageID, Flags, ConditionID, SoundEntriesID1, SoundEntriesID2 FROM broadcast_text ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_BROADCAST_TEXT_LOCALE, "SELECT ID, Text_lang, Text1_lang FROM broadcast_text_locale WHERE locale = ?"); // CharacterFacialHairStyles.db2 - PrepareStatement(HotfixStatements.SEL_CHARACTER_FACIAL_HAIR_STYLES, "SELECT ID, Geoset1, Geoset2, Geoset3, Geoset4, Geoset5, RaceID, SexID, VariationID" + + PrepareStatement(HotfixStatements.SEL_CHARACTER_FACIAL_HAIR_STYLES, "SELECT ID, Geoset1, Geoset2, Geoset3, Geoset4, Geoset5, RaceID, SexID, VariationID" + " FROM character_facial_hair_styles ORDER BY ID DESC"); // CharBaseSection.db2 - PrepareStatement(HotfixStatements.SEL_CHAR_BASE_SECTION, "SELECT ID, Variation, ResolutionVariation, Resolution FROM char_base_section ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_CHAR_BASE_SECTION, "SELECT ID, VariationEnum, ResolutionVariationEnum, LayoutResType FROM char_base_section" + + " ORDER BY ID DESC"); // CharSections.db2 - PrepareStatement(HotfixStatements.SEL_CHAR_SECTIONS, "SELECT ID, TextureFileDataID1, TextureFileDataID2, TextureFileDataID3, Flags, RaceID, SexID, " + + PrepareStatement(HotfixStatements.SEL_CHAR_SECTIONS, "SELECT ID, MaterialResourcesID1, MaterialResourcesID2, MaterialResourcesID3, Flags, RaceID, SexID, " + "BaseSection, VariationIndex, ColorIndex FROM char_sections ORDER BY ID DESC"); // CharStartOutfit.db2 - PrepareStatement(HotfixStatements.SEL_CHAR_START_OUTFIT, "SELECT ID, ItemID1, ItemID2, ItemID3, ItemID4, ItemID5, ItemID6, ItemID7, ItemID8, ItemID9, " + - "ItemID10, ItemID11, ItemID12, ItemID13, ItemID14, ItemID15, ItemID16, ItemID17, ItemID18, ItemID19, ItemID20, ItemID21, ItemID22, ItemID23, " + - "ItemID24, PetDisplayID, ClassID, GenderID, OutfitID, PetFamilyID, RaceID FROM char_start_outfit ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_CHAR_START_OUTFIT, "SELECT ID, ItemID1, ItemID2, ItemID3, ItemID4, ItemID5, ItemID6, ItemID7, ItemID8, ItemID9, " + + "ItemID10, ItemID11, ItemID12, ItemID13, ItemID14, ItemID15, ItemID16, ItemID17, ItemID18, ItemID19, ItemID20, ItemID21, ItemID22, ItemID23, " + + "ItemID24, PetDisplayID, ClassID, SexID, OutfitID, PetFamilyID, RaceID FROM char_start_outfit ORDER BY ID DESC"); // CharTitles.db2 - PrepareStatement(HotfixStatements.SEL_CHAR_TITLES, "SELECT ID, NameMale, NameFemale, MaskID, Flags FROM char_titles ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_CHAR_TITLES_LOCALE, "SELECT ID, NameMale_lang, NameFemale_lang FROM char_titles_locale WHERE locale = ?"); + PrepareStatement(HotfixStatements.SEL_CHAR_TITLES, "SELECT ID, Name, Name1, MaskID, Flags FROM char_titles ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_CHAR_TITLES_LOCALE, "SELECT ID, Name_lang, Name1_lang FROM char_titles_locale WHERE locale = ?"); // ChatChannels.db2 PrepareStatement(HotfixStatements.SEL_CHAT_CHANNELS, "SELECT ID, Name, Shortcut, Flags, FactionGroup FROM chat_channels ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_CHAT_CHANNELS_LOCALE, "SELECT ID, Name_lang, Shortcut_lang FROM chat_channels_locale WHERE locale = ?"); // ChrClasses.db2 - PrepareStatement(HotfixStatements.SEL_CHR_CLASSES, "SELECT PetNameToken, Name, NameFemale, NameMale, Filename, CreateScreenFileDataID, " + - "SelectScreenFileDataID, IconFileDataID, LowResScreenFileDataID, StartingLevel, Flags, CinematicSequenceID, DefaultSpec, PowerType, " + - "SpellClassSet, AttackPowerPerStrength, AttackPowerPerAgility, RangedAttackPowerPerAgility, Unk1, ID FROM chr_classes ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_CHR_CLASSES, "SELECT PetNameToken, Name, NameFemale, NameMale, Filename, CreateScreenFileDataID, " + + "SelectScreenFileDataID, LowResScreenFileDataID, IconFileDataID, StartingLevel, Flags, CinematicSequenceID, DefaultSpec, DisplayPower, " + + "SpellClassSet, AttackPowerPerStrength, AttackPowerPerAgility, RangedAttackPowerPerAgility, PrimaryStatPriority, ID FROM chr_classes" + + " ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_CHR_CLASSES_LOCALE, "SELECT ID, Name_lang, NameFemale_lang, NameMale_lang FROM chr_classes_locale WHERE locale = ?"); // ChrClassesXPowerTypes.db2 PrepareStatement(HotfixStatements.SEL_CHR_CLASSES_X_POWER_TYPES, "SELECT ID, PowerType, ClassID FROM chr_classes_x_power_types ORDER BY ID DESC"); // ChrRaces.db2 - PrepareStatement(HotfixStatements.SEL_CHR_RACES, "SELECT ClientPrefix, ClientFileString, Name, NameFemale, LowercaseName, LowercaseNameFemale, Flags, " + - "MaleDisplayID, FemaleDisplayID, CreateScreenFileDataID, SelectScreenFileDataID, MaleCustomizeOffset1, MaleCustomizeOffset2, " + - "MaleCustomizeOffset3, FemaleCustomizeOffset1, FemaleCustomizeOffset2, FemaleCustomizeOffset3, LowResScreenFileDataID, StartingLevel, " + - "UIDisplayOrder, FactionID, ResSicknessSpellID, SplashSoundID, CinematicSequenceID, BaseLanguage, CreatureType, TeamID, RaceRelated, " + - "UnalteredVisualRaceID, CharComponentTextureLayoutID, DefaultClassID, NeutralRaceID, ItemAppearanceFrameRaceID, " + - "CharComponentTexLayoutHiResID, ID, HighResMaleDisplayID, HighResFemaleDisplayID, HeritageArmorAchievementID, MaleCorpseBonesModelFileDataID, " + - "FemaleCorpseBonesModelFileDataID, AlteredFormTransitionSpellVisualID1, AlteredFormTransitionSpellVisualID2, " + - "AlteredFormTransitionSpellVisualID3, AlteredFormTransitionSpellVisualKitID1, AlteredFormTransitionSpellVisualKitID2, " + - "AlteredFormTransitionSpellVisualKitID3 FROM chr_races ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_CHR_RACES_LOCALE, "SELECT ID, Name_lang, NameFemale_lang, LowercaseName_lang, LowercaseNameFemale_lang" + + PrepareStatement(HotfixStatements.SEL_CHR_RACES, "SELECT ClientPrefix, ClientFileString, Name, NameFemale, NameLowercase, NameFemaleLowercase, Flags, " + + "MaleDisplayId, FemaleDisplayId, CreateScreenFileDataID, SelectScreenFileDataID, MaleCustomizeOffset1, MaleCustomizeOffset2, " + + "MaleCustomizeOffset3, FemaleCustomizeOffset1, FemaleCustomizeOffset2, FemaleCustomizeOffset3, LowResScreenFileDataID, StartingLevel, " + + "UiDisplayOrder, FactionID, ResSicknessSpellID, SplashSoundID, CinematicSequenceID, BaseLanguage, CreatureType, Alliance, RaceRelated, " + + "UnalteredVisualRaceID, CharComponentTextureLayoutID, DefaultClassID, NeutralRaceID, DisplayRaceID, CharComponentTexLayoutHiResID, ID, " + + "HighResMaleDisplayId, HighResFemaleDisplayId, HeritageArmorAchievementID, MaleSkeletonFileDataID, FemaleSkeletonFileDataID, " + + "AlteredFormStartVisualKitID1, AlteredFormStartVisualKitID2, AlteredFormStartVisualKitID3, AlteredFormFinishVisualKitID1, " + + "AlteredFormFinishVisualKitID2, AlteredFormFinishVisualKitID3 FROM chr_races ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_CHR_RACES_LOCALE, "SELECT ID, Name_lang, NameFemale_lang, NameLowercase_lang, NameFemaleLowercase_lang" + " FROM chr_races_locale WHERE locale = ?"); // ChrSpecialization.db2 - PrepareStatement(HotfixStatements.SEL_CHR_SPECIALIZATION, "SELECT Name, Name2, Description, MasterySpellID1, MasterySpellID2, ClassID, OrderIndex, " + - "PetTalentType, Role, PrimaryStatOrder, ID, IconFileDataID, Flags, AnimReplacementSetID FROM chr_specialization ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_CHR_SPECIALIZATION_LOCALE, "SELECT ID, Name_lang, Name2_lang, Description_lang FROM chr_specialization_locale" + + PrepareStatement(HotfixStatements.SEL_CHR_SPECIALIZATION, "SELECT Name, FemaleName, Description, MasterySpellID1, MasterySpellID2, ClassID, OrderIndex, " + + "PetTalentType, Role, PrimaryStatPriority, ID, SpellIconFileID, Flags, AnimReplacements FROM chr_specialization ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_CHR_SPECIALIZATION_LOCALE, "SELECT ID, Name_lang, FemaleName_lang, Description_lang FROM chr_specialization_locale" + " WHERE locale = ?"); // CinematicCamera.db2 - PrepareStatement(HotfixStatements.SEL_CINEMATIC_CAMERA, "SELECT ID, SoundID, OriginX, OriginY, OriginZ, OriginFacing, ModelFileDataID FROM cinematic_camera" + + PrepareStatement(HotfixStatements.SEL_CINEMATIC_CAMERA, "SELECT ID, SoundID, OriginX, OriginY, OriginZ, OriginFacing, FileDataID FROM cinematic_camera" + " ORDER BY ID DESC"); // CinematicSequences.db2 - PrepareStatement(HotfixStatements.SEL_CINEMATIC_SEQUENCES, "SELECT ID, SoundID, Camera1, Camera2, Camera3, Camera4, Camera5, Camera6, Camera7, Camera8" + + PrepareStatement(HotfixStatements.SEL_CINEMATIC_SEQUENCES, "SELECT ID, SoundID, Camera1, Camera2, Camera3, Camera4, Camera5, Camera6, Camera7, Camera8" + " FROM cinematic_sequences ORDER BY ID DESC"); // ConversationLine.db2 - PrepareStatement(HotfixStatements.SEL_CONVERSATION_LINE, "SELECT ID, BroadcastTextID, SpellVisualKitID, Duration, NextLineID, Unk1, Yell, Unk2, Unk3" + - " FROM conversation_line ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_CONVERSATION_LINE, "SELECT ID, BroadcastTextID, SpellVisualKitID, AdditionalDuration, NextConversationLineID, " + + "AnimKitID, SpeechType, StartAnimation, EndAnimation FROM conversation_line ORDER BY ID DESC"); // CreatureDisplayInfo.db2 - PrepareStatement(HotfixStatements.SEL_CREATURE_DISPLAY_INFO, "SELECT ID, CreatureModelScale, ModelID, NPCSoundID, SizeClass, Flags, Gender, " + - "ExtendedDisplayInfoID, PortraitTextureFileDataID, CreatureModelAlpha, SoundID, PlayerModelScale, PortraitCreatureDisplayInfoID, BloodID, " + - "ParticleColorID, CreatureGeosetData, ObjectEffectPackageID, AnimReplacementSetID, UnarmedWeaponSubclass, StateSpellVisualKitID, " + - "InstanceOtherPlayerPetScale, MountSpellVisualKitID, TextureVariation1, TextureVariation2, TextureVariation3 FROM creature_display_info" + - " ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_CREATURE_DISPLAY_INFO, "SELECT ID, CreatureModelScale, ModelID, NPCSoundID, SizeClass, Flags, Gender, " + + "ExtendedDisplayInfoID, PortraitTextureFileDataID, CreatureModelAlpha, SoundID, PlayerOverrideScale, PortraitCreatureDisplayInfoID, BloodID, " + + "ParticleColorID, CreatureGeosetData, ObjectEffectPackageID, AnimReplacementSetID, UnarmedWeaponType, StateSpellVisualKitID, " + + "PetInstanceScale, MountPoofSpellVisualKitID, TextureVariationFileDataID1, TextureVariationFileDataID2, TextureVariationFileDataID3" + + " FROM creature_display_info ORDER BY ID DESC"); // CreatureDisplayInfoExtra.db2 - PrepareStatement(HotfixStatements.SEL_CREATURE_DISPLAY_INFO_EXTRA, "SELECT ID, FileDataID, HDFileDataID, DisplayRaceID, DisplaySexID, DisplayClassID, " + - "SkinID, FaceID, HairStyleID, HairColorID, FacialHairID, CustomDisplayOption1, CustomDisplayOption2, CustomDisplayOption3, Flags" + - " FROM creature_display_info_extra ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_CREATURE_DISPLAY_INFO_EXTRA, "SELECT ID, BakeMaterialResourcesID, HDBakeMaterialResourcesID, DisplayRaceID, " + + "DisplaySexID, DisplayClassID, SkinID, FaceID, HairStyleID, HairColorID, FacialHairID, CustomDisplayOption1, CustomDisplayOption2, " + + "CustomDisplayOption3, Flags FROM creature_display_info_extra ORDER BY ID DESC"); // CreatureFamily.db2 - PrepareStatement(HotfixStatements.SEL_CREATURE_FAMILY, "SELECT ID, Name, MinScale, MaxScale, IconFileDataID, SkillLine1, SkillLine2, PetFoodMask, " + + PrepareStatement(HotfixStatements.SEL_CREATURE_FAMILY, "SELECT ID, Name, MinScale, MaxScale, IconFileID, SkillLine1, SkillLine2, PetFoodMask, " + "MinScaleLevel, MaxScaleLevel, PetTalentType FROM creature_family ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_CREATURE_FAMILY_LOCALE, "SELECT ID, Name_lang FROM creature_family_locale WHERE locale = ?"); // CreatureModelData.db2 - PrepareStatement(HotfixStatements.SEL_CREATURE_MODEL_DATA, "SELECT ID, ModelScale, FootprintTextureLength, FootprintTextureWidth, FootprintParticleScale, " + - "CollisionWidth, CollisionHeight, MountHeight, GeoBoxMin1, GeoBoxMin2, GeoBoxMin3, GeoBoxMax1, GeoBoxMax2, GeoBoxMax3, WorldEffectScale, " + - "AttachedEffectScale, MissileCollisionRadius, MissileCollisionPush, MissileCollisionRaise, OverrideLootEffectScale, OverrideNameScale, " + - "OverrideSelectionRadius, TamedPetBaseScale, HoverHeight, Flags, FileDataID, SizeClass, BloodID, FootprintTextureID, FoleyMaterialID, " + - "FootstepEffectID, DeathThudEffectID, SoundID, CreatureGeosetDataID FROM creature_model_data ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_CREATURE_MODEL_DATA, "SELECT ID, ModelScale, FootprintTextureLength, FootprintTextureWidth, FootprintParticleScale, " + + "CollisionWidth, CollisionHeight, MountHeight, GeoBox1, GeoBox2, GeoBox3, GeoBox4, GeoBox5, GeoBox6, WorldEffectScale, AttachedEffectScale, " + + "MissileCollisionRadius, MissileCollisionPush, MissileCollisionRaise, OverrideLootEffectScale, OverrideNameScale, OverrideSelectionRadius, " + + "TamedPetBaseScale, HoverHeight, Flags, FileDataID, SizeClass, BloodID, FootprintTextureID, FoleyMaterialID, FootstepCameraEffectID, " + + "DeathThudCameraEffectID, SoundID, CreatureGeosetDataID FROM creature_model_data ORDER BY ID DESC"); // CreatureType.db2 PrepareStatement(HotfixStatements.SEL_CREATURE_TYPE, "SELECT ID, Name, Flags FROM creature_type ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_CREATURE_TYPE_LOCALE, "SELECT ID, Name_lang FROM creature_type_locale WHERE locale = ?"); // Criteria.db2 - PrepareStatement(HotfixStatements.SEL_CRITERIA, "SELECT ID, Asset, StartAsset, FailAsset, ModifierTreeId, StartTimer, EligibilityWorldStateID, Type, " + + PrepareStatement(HotfixStatements.SEL_CRITERIA, "SELECT ID, Asset, StartAsset, FailAsset, ModifierTreeId, StartTimer, EligibilityWorldStateID, Type, " + "StartEvent, FailEvent, Flags, EligibilityWorldStateValue FROM criteria ORDER BY ID DESC"); // CriteriaTree.db2 - PrepareStatement(HotfixStatements.SEL_CRITERIA_TREE, "SELECT ID, Description, Amount, Flags, Operator, CriteriaID, Parent, OrderIndex FROM criteria_tree" + + PrepareStatement(HotfixStatements.SEL_CRITERIA_TREE, "SELECT ID, Description, Amount, Flags, Operator, CriteriaID, Parent, OrderIndex FROM criteria_tree" + " ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_CRITERIA_TREE_LOCALE, "SELECT ID, Description_lang FROM criteria_tree_locale WHERE locale = ?"); // CurrencyTypes.db2 - PrepareStatement(HotfixStatements.SEL_CURRENCY_TYPES, "SELECT ID, Name, Description, MaxQty, MaxEarnablePerWeek, Flags, CategoryID, SpellCategory, Quality, " + - "InventoryIconFileDataID, SpellWeight FROM currency_types ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_CURRENCY_TYPES, "SELECT ID, Name, Description, MaxQty, MaxEarnablePerWeek, Flags, CategoryID, SpellCategory, Quality, " + + "InventoryIconFileID, SpellWeight FROM currency_types ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_CURRENCY_TYPES_LOCALE, "SELECT ID, Name_lang, Description_lang FROM currency_types_locale WHERE locale = ?"); // Curve.db2 - PrepareStatement(HotfixStatements.SEL_CURVE, "SELECT ID, Type, Unused FROM curve ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_CURVE, "SELECT ID, Type, Flags FROM curve ORDER BY ID DESC"); // CurvePoint.db2 - PrepareStatement(HotfixStatements.SEL_CURVE_POINT, "SELECT ID, X, Y, CurveID, `Index` FROM curve_point ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_CURVE_POINT, "SELECT ID, PosX, PosY, CurveID, OrderIndex FROM curve_point ORDER BY ID DESC"); // DestructibleModelData.db2 - PrepareStatement(HotfixStatements.SEL_DESTRUCTIBLE_MODEL_DATA, "SELECT ID, StateDamagedDisplayID, StateDestroyedDisplayID, StateRebuildingDisplayID, " + - "StateSmokeDisplayID, HealEffectSpeed, StateDamagedImpactEffectDoodadSet, StateDamagedAmbientDoodadSet, StateDamagedNameSet, " + - "StateDestroyedDestructionDoodadSet, StateDestroyedImpactEffectDoodadSet, StateDestroyedAmbientDoodadSet, StateDestroyedNameSet, " + - "StateRebuildingDestructionDoodadSet, StateRebuildingImpactEffectDoodadSet, StateRebuildingAmbientDoodadSet, StateRebuildingNameSet, " + - "StateSmokeInitDoodadSet, StateSmokeAmbientDoodadSet, StateSmokeNameSet, EjectDirection, DoNotHighlight, HealEffect" + - " FROM destructible_model_data ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_DESTRUCTIBLE_MODEL_DATA, "SELECT ID, State0Wmo, State1Wmo, State2Wmo, State3Wmo, HealEffectSpeed, " + + "State0ImpactEffectDoodadSet, State0AmbientDoodadSet, State0NameSet, State1DestructionDoodadSet, State1ImpactEffectDoodadSet, " + + "State1AmbientDoodadSet, State1NameSet, State2DestructionDoodadSet, State2ImpactEffectDoodadSet, State2AmbientDoodadSet, State2NameSet, " + + "State3InitDoodadSet, State3AmbientDoodadSet, State3NameSet, EjectDirection, DoNotHighlight, HealEffect FROM destructible_model_data" + + " ORDER BY ID DESC"); // Difficulty.db2 - PrepareStatement(HotfixStatements.SEL_DIFFICULTY, "SELECT ID, Name, GroupSizeHealthCurveID, GroupSizeDmgCurveID, GroupSizeSpellPointsCurveID, " + - "FallbackDifficultyID, InstanceType, MinPlayers, MaxPlayers, OldEnumValue, Flags, ToggleDifficultyID, ItemBonusTreeModID, OrderIndex" + - " FROM difficulty ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_DIFFICULTY, "SELECT ID, Name, GroupSizeHealthCurveID, GroupSizeDmgCurveID, GroupSizeSpellPointsCurveID, " + + "FallbackDifficultyID, InstanceType, MinPlayers, MaxPlayers, OldEnumValue, Flags, ToggleDifficultyID, ItemContext, OrderIndex FROM difficulty" + + " ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_DIFFICULTY_LOCALE, "SELECT ID, Name_lang FROM difficulty_locale WHERE locale = ?"); // DungeonEncounter.db2 - PrepareStatement(HotfixStatements.SEL_DUNGEON_ENCOUNTER, "SELECT Name, CreatureDisplayID, MapID, DifficultyID, Bit, Flags, ID, OrderIndex, " + - "TextureFileDataID FROM dungeon_encounter ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_DUNGEON_ENCOUNTER, "SELECT Name, CreatureDisplayID, MapID, DifficultyID, Bit, Flags, ID, OrderIndex, SpellIconFileID" + + " FROM dungeon_encounter ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_DUNGEON_ENCOUNTER_LOCALE, "SELECT ID, Name_lang FROM dungeon_encounter_locale WHERE locale = ?"); // DurabilityCosts.db2 - PrepareStatement(HotfixStatements.SEL_DURABILITY_COSTS, "SELECT ID, WeaponSubClassCost1, WeaponSubClassCost2, WeaponSubClassCost3, WeaponSubClassCost4, " + - "WeaponSubClassCost5, WeaponSubClassCost6, WeaponSubClassCost7, WeaponSubClassCost8, WeaponSubClassCost9, WeaponSubClassCost10, " + - "WeaponSubClassCost11, WeaponSubClassCost12, WeaponSubClassCost13, WeaponSubClassCost14, WeaponSubClassCost15, WeaponSubClassCost16, " + - "WeaponSubClassCost17, WeaponSubClassCost18, WeaponSubClassCost19, WeaponSubClassCost20, WeaponSubClassCost21, ArmorSubClassCost1, " + - "ArmorSubClassCost2, ArmorSubClassCost3, ArmorSubClassCost4, ArmorSubClassCost5, ArmorSubClassCost6, ArmorSubClassCost7, ArmorSubClassCost8" + + PrepareStatement(HotfixStatements.SEL_DURABILITY_COSTS, "SELECT ID, WeaponSubClassCost1, WeaponSubClassCost2, WeaponSubClassCost3, WeaponSubClassCost4, " + + "WeaponSubClassCost5, WeaponSubClassCost6, WeaponSubClassCost7, WeaponSubClassCost8, WeaponSubClassCost9, WeaponSubClassCost10, " + + "WeaponSubClassCost11, WeaponSubClassCost12, WeaponSubClassCost13, WeaponSubClassCost14, WeaponSubClassCost15, WeaponSubClassCost16, " + + "WeaponSubClassCost17, WeaponSubClassCost18, WeaponSubClassCost19, WeaponSubClassCost20, WeaponSubClassCost21, ArmorSubClassCost1, " + + "ArmorSubClassCost2, ArmorSubClassCost3, ArmorSubClassCost4, ArmorSubClassCost5, ArmorSubClassCost6, ArmorSubClassCost7, ArmorSubClassCost8" + " FROM durability_costs ORDER BY ID DESC"); // DurabilityQuality.db2 - PrepareStatement(HotfixStatements.SEL_DURABILITY_QUALITY, "SELECT ID, QualityMod FROM durability_quality ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_DURABILITY_QUALITY, "SELECT ID, Data FROM durability_quality ORDER BY ID DESC"); // Emotes.db2 - PrepareStatement(HotfixStatements.SEL_EMOTES, "SELECT ID, RaceMask, EmoteSlashCommand, SpellVisualKitID, EmoteFlags, AnimID, EmoteSpecProc, " + - "EmoteSpecProcParam, EmoteSoundID, ClassMask FROM emotes ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_EMOTES, "SELECT ID, RaceMask, EmoteSlashCommand, EmoteFlags, SpellVisualKitID, AnimID, EmoteSpecProc, ClassMask, " + + "EmoteSpecProcParam, EventSoundID FROM emotes ORDER BY ID DESC"); // EmotesText.db2 PrepareStatement(HotfixStatements.SEL_EMOTES_TEXT, "SELECT ID, Name, EmoteID FROM emotes_text ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_EMOTES_TEXT_LOCALE, "SELECT ID, Name_lang FROM emotes_text_locale WHERE locale = ?"); // EmotesTextSound.db2 - PrepareStatement(HotfixStatements.SEL_EMOTES_TEXT_SOUND, "SELECT ID, RaceId, SexId, ClassId, SoundId, EmotesTextId FROM emotes_text_sound ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_EMOTES_TEXT_SOUND, "SELECT ID, RaceID, SexID, ClassID, SoundID, EmotesTextID FROM emotes_text_sound ORDER BY ID DESC"); // Faction.db2 - PrepareStatement(HotfixStatements.SEL_FACTION, "SELECT ReputationRaceMask1, ReputationRaceMask2, ReputationRaceMask3, ReputationRaceMask4, Name, " + - "Description, ID, ReputationBase1, ReputationBase2, ReputationBase3, ReputationBase4, ParentFactionModIn, ParentFactionModOut, " + - "ReputationMax1, ReputationMax2, ReputationMax3, ReputationMax4, ReputationIndex, ReputationClassMask1, ReputationClassMask2, " + - "ReputationClassMask3, ReputationClassMask4, ReputationFlags1, ReputationFlags2, ReputationFlags3, ReputationFlags4, ParentFactionID, " + - "ParagonFactionID, ParentFactionCapIn, ParentFactionCapOut, Expansion, Flags, FriendshipRepID FROM faction ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_FACTION, "SELECT ReputationRaceMask1, ReputationRaceMask2, ReputationRaceMask3, ReputationRaceMask4, Name, " + + "Description, ID, ReputationBase1, ReputationBase2, ReputationBase3, ReputationBase4, ParentFactionMod1, ParentFactionMod2, ReputationMax1, " + + "ReputationMax2, ReputationMax3, ReputationMax4, ReputationIndex, ReputationClassMask1, ReputationClassMask2, ReputationClassMask3, " + + "ReputationClassMask4, ReputationFlags1, ReputationFlags2, ReputationFlags3, ReputationFlags4, ParentFactionID, ParagonFactionID, " + + "ParentFactionCap1, ParentFactionCap2, Expansion, Flags, FriendshipRepID FROM faction ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_FACTION_LOCALE, "SELECT ID, Name_lang, Description_lang FROM faction_locale WHERE locale = ?"); // FactionTemplate.db2 - PrepareStatement(HotfixStatements.SEL_FACTION_TEMPLATE, "SELECT ID, Faction, Flags, Enemies1, Enemies2, Enemies3, Enemies4, Friends1, Friends2, Friends3, " + - "Friends4, Mask, FriendMask, EnemyMask FROM faction_template ORDER BY ID DESC"); - - // Gameobjects.db2 - PrepareStatement(HotfixStatements.SEL_GAMEOBJECTS, "SELECT Name, PositionX, PositionY, PositionZ, RotationX, RotationY, RotationZ, RotationW, Size, Data1, " + - "Data2, Data3, Data4, Data5, Data6, Data7, Data8, MapID, DisplayID, PhaseID, PhaseGroupID, PhaseUseFlags, Type, ID FROM gameobjects" + - " ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_GAMEOBJECTS_LOCALE, "SELECT ID, Name_lang FROM gameobjects_locale WHERE locale = ?"); + PrepareStatement(HotfixStatements.SEL_FACTION_TEMPLATE, "SELECT ID, Faction, Flags, Enemies1, Enemies2, Enemies3, Enemies4, Friend1, Friend2, Friend3, " + + "Friend4, FactionGroup, FriendGroup, EnemyGroup FROM faction_template ORDER BY ID DESC"); // GameobjectDisplayInfo.db2 - PrepareStatement(HotfixStatements.SEL_GAMEOBJECT_DISPLAY_INFO, "SELECT ID, FileDataID, GeoBoxMinX, GeoBoxMinY, GeoBoxMinZ, GeoBoxMaxX, GeoBoxMaxY, " + + PrepareStatement(HotfixStatements.SEL_GAMEOBJECT_DISPLAY_INFO, "SELECT ID, FileDataID, GeoBoxMinX, GeoBoxMinY, GeoBoxMinZ, GeoBoxMaxX, GeoBoxMaxY, " + "GeoBoxMaxZ, OverrideLootEffectScale, OverrideNameScale, ObjectEffectPackageID FROM gameobject_display_info ORDER BY ID DESC"); + // Gameobjects.db2 + PrepareStatement(HotfixStatements.SEL_GAMEOBJECTS, "SELECT Name, PosX, PosY, PosZ, Rot1, Rot2, Rot3, Rot4, Scale, PropValue1, PropValue2, PropValue3, " + + "PropValue4, PropValue5, PropValue6, PropValue7, PropValue8, OwnerID, DisplayID, PhaseID, PhaseGroupID, PhaseUseFlags, TypeID, ID" + + " FROM gameobjects ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_GAMEOBJECTS_LOCALE, "SELECT ID, Name_lang FROM gameobjects_locale WHERE locale = ?"); + // GarrAbility.db2 - PrepareStatement(HotfixStatements.SEL_GARR_ABILITY, "SELECT Name, Description, IconFileDataID, Flags, OtherFactionGarrAbilityID, GarrAbilityCategoryID, " + - "FollowerTypeID, ID FROM garr_ability ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_GARR_ABILITY, "SELECT Name, Description, IconFileDataID, Flags, FactionChangeGarrAbilityID, GarrAbilityCategoryID, " + + "GarrFollowerTypeID, ID FROM garr_ability ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_GARR_ABILITY_LOCALE, "SELECT ID, Name_lang, Description_lang FROM garr_ability_locale WHERE locale = ?"); // GarrBuilding.db2 - PrepareStatement(HotfixStatements.SEL_GARR_BUILDING, "SELECT ID, NameAlliance, NameHorde, Description, Tooltip, HordeGameObjectID, AllianceGameObjectID, " + - "IconFileDataID, CostCurrencyID, HordeTexPrefixKitID, AllianceTexPrefixKitID, AllianceActivationScenePackageID, " + - "HordeActivationScenePackageID, FollowerRequiredGarrAbilityID, FollowerGarrAbilityEffectID, CostMoney, Unknown, Type, Level, Flags, " + - "MaxShipments, GarrTypeID, BuildDuration, CostCurrencyAmount, BonusAmount FROM garr_building ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_GARR_BUILDING_LOCALE, "SELECT ID, NameAlliance_lang, NameHorde_lang, Description_lang, Tooltip_lang" + + PrepareStatement(HotfixStatements.SEL_GARR_BUILDING, "SELECT ID, AllianceName, HordeName, Description, Tooltip, HordeGameObjectID, AllianceGameObjectID, " + + "IconFileDataID, CurrencyTypeID, HordeUiTextureKitID, AllianceUiTextureKitID, AllianceSceneScriptPackageID, HordeSceneScriptPackageID, " + + "GarrAbilityID, BonusGarrAbilityID, GoldCost, GarrSiteID, BuildingType, UpgradeLevel, Flags, ShipmentCapacity, GarrTypeID, BuildSeconds, " + + "CurrencyQty, MaxAssignments FROM garr_building ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_GARR_BUILDING_LOCALE, "SELECT ID, AllianceName_lang, HordeName_lang, Description_lang, Tooltip_lang" + " FROM garr_building_locale WHERE locale = ?"); // GarrBuildingPlotInst.db2 - PrepareStatement(HotfixStatements.SEL_GARR_BUILDING_PLOT_INST, "SELECT LandmarkOffsetX, LandmarkOffsetY, UiTextureAtlasMemberID, GarrSiteLevelPlotInstID, " + + PrepareStatement(HotfixStatements.SEL_GARR_BUILDING_PLOT_INST, "SELECT MapOffsetX, MapOffsetY, UiTextureAtlasMemberID, GarrSiteLevelPlotInstID, " + "GarrBuildingID, ID FROM garr_building_plot_inst ORDER BY ID DESC"); // GarrClassSpec.db2 - PrepareStatement(HotfixStatements.SEL_GARR_CLASS_SPEC, "SELECT NameMale, NameFemale, NameGenderless, ClassAtlasID, GarrFollItemSetID, `Limit`, Flags, ID" + - " FROM garr_class_spec ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_GARR_CLASS_SPEC_LOCALE, "SELECT ID, NameMale_lang, NameFemale_lang, NameGenderless_lang FROM garr_class_spec_locale" + + PrepareStatement(HotfixStatements.SEL_GARR_CLASS_SPEC, "SELECT ClassSpec, ClassSpecMale, ClassSpecFemale, UiTextureAtlasMemberID, GarrFollItemSetID, " + + "FollowerClassLimit, Flags, ID FROM garr_class_spec ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_GARR_CLASS_SPEC_LOCALE, "SELECT ID, ClassSpec_lang, ClassSpecMale_lang, ClassSpecFemale_lang FROM garr_class_spec_locale" + " WHERE locale = ?"); // GarrFollower.db2 - PrepareStatement(HotfixStatements.SEL_GARR_FOLLOWER, "SELECT HordeSourceText, AllianceSourceText, Name, HordeCreatureID, AllianceCreatureID, " + - "HordePortraitIconID, AlliancePortraitIconID, HordeAddedBroadcastTextID, AllianceAddedBroadcastTextID, HordeGarrFollItemSetID, " + - "AllianceGarrFollItemSetID, ItemLevelWeapon, ItemLevelArmor, HordeListPortraitTextureKitID, AllianceListPortraitTextureKitID, FollowerTypeID, " + - "HordeUiAnimRaceInfoID, AllianceUiAnimRaceInfoID, Quality, HordeGarrClassSpecID, AllianceGarrClassSpecID, Level, Unknown1, Flags, Unknown2, " + - "Unknown3, GarrTypeID, MaxDurability, Class, HordeFlavorTextGarrStringID, AllianceFlavorTextGarrStringID, ID FROM garr_follower" + - " ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_GARR_FOLLOWER_LOCALE, "SELECT ID, HordeSourceText_lang, AllianceSourceText_lang, Name_lang FROM garr_follower_locale" + + PrepareStatement(HotfixStatements.SEL_GARR_FOLLOWER, "SELECT HordeSourceText, AllianceSourceText, TitleName, HordeCreatureID, AllianceCreatureID, " + + "HordeIconFileDataID, AllianceIconFileDataID, HordeSlottingBroadcastTextID, AllySlottingBroadcastTextID, HordeGarrFollItemSetID, " + + "AllianceGarrFollItemSetID, ItemLevelWeapon, ItemLevelArmor, HordeUITextureKitID, AllianceUITextureKitID, GarrFollowerTypeID, " + + "HordeGarrFollRaceID, AllianceGarrFollRaceID, Quality, HordeGarrClassSpecID, AllianceGarrClassSpecID, FollowerLevel, Gender, Flags, " + + "HordeSourceTypeEnum, AllianceSourceTypeEnum, GarrTypeID, Vitality, ChrClassID, HordeFlavorGarrStringID, AllianceFlavorGarrStringID, ID" + + " FROM garr_follower ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_GARR_FOLLOWER_LOCALE, "SELECT ID, HordeSourceText_lang, AllianceSourceText_lang, TitleName_lang FROM garr_follower_locale" + " WHERE locale = ?"); // GarrFollowerXAbility.db2 - PrepareStatement(HotfixStatements.SEL_GARR_FOLLOWER_X_ABILITY, "SELECT ID, GarrAbilityID, FactionIndex, GarrFollowerID FROM garr_follower_x_ability" + + PrepareStatement(HotfixStatements.SEL_GARR_FOLLOWER_X_ABILITY, "SELECT ID, GarrAbilityID, FactionIndex, GarrFollowerID FROM garr_follower_x_ability" + " ORDER BY ID DESC"); // GarrPlot.db2 - PrepareStatement(HotfixStatements.SEL_GARR_PLOT, "SELECT ID, Name, AllianceConstructionGameObjectID, HordeConstructionGameObjectID, GarrPlotUICategoryID, " + - "PlotType, Flags, MinCount, MaxCount FROM garr_plot ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_GARR_PLOT, "SELECT ID, Name, AllianceConstructObjID, HordeConstructObjID, UiCategoryID, PlotType, Flags, " + + "UpgradeRequirement1, UpgradeRequirement2 FROM garr_plot ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_GARR_PLOT_LOCALE, "SELECT ID, Name_lang FROM garr_plot_locale WHERE locale = ?"); // GarrPlotBuilding.db2 @@ -348,24 +350,23 @@ namespace Framework.Database // GarrPlotInstance.db2 PrepareStatement(HotfixStatements.SEL_GARR_PLOT_INSTANCE, "SELECT ID, Name, GarrPlotID FROM garr_plot_instance ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_GARR_PLOT_INSTANCE_LOCALE, "SELECT ID, Name_lang FROM garr_plot_instance_locale WHERE locale = ?"); // GarrSiteLevel.db2 - PrepareStatement(HotfixStatements.SEL_GARR_SITE_LEVEL, "SELECT ID, TownHallX, TownHallY, MapID, SiteID, MovieID, UpgradeResourceCost, UpgradeMoneyCost, " + - "Level, UITextureKitID, Level2 FROM garr_site_level ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_GARR_SITE_LEVEL, "SELECT ID, TownHallUiPosX, TownHallUiPosY, MapID, UiTextureKitID, UpgradeMovieID, UpgradeCost, " + + "UpgradeGoldCost, GarrLevel, GarrSiteID, MaxBuildingLevel FROM garr_site_level ORDER BY ID DESC"); // GarrSiteLevelPlotInst.db2 - PrepareStatement(HotfixStatements.SEL_GARR_SITE_LEVEL_PLOT_INST, "SELECT ID, LandmarkX, LandmarkY, GarrSiteLevelID, GarrPlotInstanceID, Unknown" + + PrepareStatement(HotfixStatements.SEL_GARR_SITE_LEVEL_PLOT_INST, "SELECT ID, UiMarkerPosX, UiMarkerPosY, GarrSiteLevelID, GarrPlotInstanceID, UiMarkerSize" + " FROM garr_site_level_plot_inst ORDER BY ID DESC"); // GemProperties.db2 - PrepareStatement(HotfixStatements.SEL_GEM_PROPERTIES, "SELECT ID, Type, EnchantID, MinItemLevel FROM gem_properties ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_GEM_PROPERTIES, "SELECT ID, Type, EnchantId, MinItemLevel FROM gem_properties ORDER BY ID DESC"); // GlyphBindableSpell.db2 PrepareStatement(HotfixStatements.SEL_GLYPH_BINDABLE_SPELL, "SELECT ID, SpellID, GlyphPropertiesID FROM glyph_bindable_spell ORDER BY ID DESC"); // GlyphProperties.db2 - PrepareStatement(HotfixStatements.SEL_GLYPH_PROPERTIES, "SELECT ID, SpellID, SpellIconID, Type, GlyphExclusiveCategoryID FROM glyph_properties" + + PrepareStatement(HotfixStatements.SEL_GLYPH_PROPERTIES, "SELECT ID, SpellID, SpellIconID, GlyphType, GlyphExclusiveCategoryID FROM glyph_properties" + " ORDER BY ID DESC"); // GlyphRequiredSpec.db2 @@ -384,149 +385,150 @@ namespace Framework.Database PrepareStatement(HotfixStatements.SEL_GUILD_PERK_SPELLS, "SELECT ID, SpellID FROM guild_perk_spells ORDER BY ID DESC"); // Heirloom.db2 - PrepareStatement(HotfixStatements.SEL_HEIRLOOM, "SELECT SourceText, ItemID, OldItem1, OldItem2, NextDifficultyItemID, UpgradeItemID1, UpgradeItemID2, " + - "UpgradeItemID3, ItemBonusListID1, ItemBonusListID2, ItemBonusListID3, Flags, Source, ID FROM heirloom ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_HEIRLOOM, "SELECT SourceText, ItemID, LegacyItemID, LegacyUpgradedItemID, StaticUpgradedItemID, UpgradeItemID1, " + + "UpgradeItemID2, UpgradeItemID3, UpgradeItemBonusListID1, UpgradeItemBonusListID2, UpgradeItemBonusListID3, Flags, SourceTypeEnum, ID" + + " FROM heirloom ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_HEIRLOOM_LOCALE, "SELECT ID, SourceText_lang FROM heirloom_locale WHERE locale = ?"); // Holidays.db2 - PrepareStatement(HotfixStatements.SEL_HOLIDAYS, "SELECT ID, Date1, Date2, Date3, Date4, Date5, Date6, Date7, Date8, Date9, Date10, Date11, Date12, Date13, " + - "Date14, Date15, Date16, Duration1, Duration2, Duration3, Duration4, Duration5, Duration6, Duration7, Duration8, Duration9, Duration10, " + - "Region, Looping, CalendarFlags1, CalendarFlags2, CalendarFlags3, CalendarFlags4, CalendarFlags5, CalendarFlags6, CalendarFlags7, " + - "CalendarFlags8, CalendarFlags9, CalendarFlags10, Priority, CalendarFilterType, Flags, HolidayNameID, HolidayDescriptionID, " + + PrepareStatement(HotfixStatements.SEL_HOLIDAYS, "SELECT ID, Date1, Date2, Date3, Date4, Date5, Date6, Date7, Date8, Date9, Date10, Date11, Date12, Date13, " + + "Date14, Date15, Date16, Duration1, Duration2, Duration3, Duration4, Duration5, Duration6, Duration7, Duration8, Duration9, Duration10, " + + "Region, Looping, CalendarFlags1, CalendarFlags2, CalendarFlags3, CalendarFlags4, CalendarFlags5, CalendarFlags6, CalendarFlags7, " + + "CalendarFlags8, CalendarFlags9, CalendarFlags10, Priority, CalendarFilterType, Flags, HolidayNameID, HolidayDescriptionID, " + "TextureFileDataID1, TextureFileDataID2, TextureFileDataID3 FROM holidays ORDER BY ID DESC"); // ImportPriceArmor.db2 - PrepareStatement(HotfixStatements.SEL_IMPORT_PRICE_ARMOR, "SELECT ID, ClothFactor, LeatherFactor, MailFactor, PlateFactor FROM import_price_armor" + + PrepareStatement(HotfixStatements.SEL_IMPORT_PRICE_ARMOR, "SELECT ID, ClothModifier, LeatherModifier, ChainModifier, PlateModifier FROM import_price_armor" + " ORDER BY ID DESC"); // ImportPriceQuality.db2 - PrepareStatement(HotfixStatements.SEL_IMPORT_PRICE_QUALITY, "SELECT ID, Factor FROM import_price_quality ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_IMPORT_PRICE_QUALITY, "SELECT ID, Data FROM import_price_quality ORDER BY ID DESC"); // ImportPriceShield.db2 - PrepareStatement(HotfixStatements.SEL_IMPORT_PRICE_SHIELD, "SELECT ID, Factor FROM import_price_shield ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_IMPORT_PRICE_SHIELD, "SELECT ID, Data FROM import_price_shield ORDER BY ID DESC"); // ImportPriceWeapon.db2 - PrepareStatement(HotfixStatements.SEL_IMPORT_PRICE_WEAPON, "SELECT ID, Factor FROM import_price_weapon ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_IMPORT_PRICE_WEAPON, "SELECT ID, Data FROM import_price_weapon ORDER BY ID DESC"); // Item.db2 - PrepareStatement(HotfixStatements.SEL_ITEM, "SELECT ID, FileDataID, Class, SubClass, SoundOverrideSubclass, Material, InventoryType, Sheath, GroupSoundsID" + - " FROM item ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM, "SELECT ID, IconFileDataID, ClassID, SubclassID, SoundOverrideSubclassID, Material, InventoryType, SheatheType, " + + "ItemGroupSoundsID FROM item ORDER BY ID DESC"); // ItemAppearance.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_APPEARANCE, "SELECT ID, DisplayID, IconFileDataID, UIOrder, ObjectComponentSlot FROM item_appearance" + + PrepareStatement(HotfixStatements.SEL_ITEM_APPEARANCE, "SELECT ID, ItemDisplayInfoID, DefaultIconFileDataID, UiOrder, DisplayType FROM item_appearance" + " ORDER BY ID DESC"); // ItemArmorQuality.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_ARMOR_QUALITY, "SELECT ID, QualityMod1, QualityMod2, QualityMod3, QualityMod4, QualityMod5, QualityMod6, " + - "QualityMod7, ItemLevel FROM item_armor_quality ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_ARMOR_QUALITY, "SELECT ID, Qualitymod1, Qualitymod2, Qualitymod3, Qualitymod4, Qualitymod5, Qualitymod6, " + + "Qualitymod7, ItemLevel FROM item_armor_quality ORDER BY ID DESC"); // ItemArmorShield.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_ARMOR_SHIELD, "SELECT ID, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7, ItemLevel" + + PrepareStatement(HotfixStatements.SEL_ITEM_ARMOR_SHIELD, "SELECT ID, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7, ItemLevel" + " FROM item_armor_shield ORDER BY ID DESC"); // ItemArmorTotal.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_ARMOR_TOTAL, "SELECT ID, Value1, Value2, Value3, Value4, ItemLevel FROM item_armor_total ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_ARMOR_TOTAL, "SELECT ID, Cloth, Leather, Mail, Plate, ItemLevel FROM item_armor_total ORDER BY ID DESC"); // ItemBagFamily.db2 PrepareStatement(HotfixStatements.SEL_ITEM_BAG_FAMILY, "SELECT ID, Name FROM item_bag_family ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_ITEM_BAG_FAMILY_LOCALE, "SELECT ID, Name_lang FROM item_bag_family_locale WHERE locale = ?"); // ItemBonus.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_BONUS, "SELECT ID, Value1, Value2, Value3, BonusListID, Type, `Index` FROM item_bonus ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_BONUS, "SELECT ID, Value1, Value2, Value3, ParentItemBonusListID, Type, OrderIndex FROM item_bonus" + + " ORDER BY ID DESC"); // ItemBonusListLevelDelta.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_BONUS_LIST_LEVEL_DELTA, "SELECT Delta, ID FROM item_bonus_list_level_delta ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_BONUS_LIST_LEVEL_DELTA, "SELECT ItemLevelDelta, ID FROM item_bonus_list_level_delta ORDER BY ID DESC"); // ItemBonusTreeNode.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_BONUS_TREE_NODE, "SELECT ID, SubTreeID, BonusListID, ItemLevelSelectorID, BonusTreeModID, BonusTreeID" + - " FROM item_bonus_tree_node ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_BONUS_TREE_NODE, "SELECT ID, ChildItemBonusTreeID, ChildItemBonusListID, ChildItemLevelSelectorID, ItemContext, " + + "ParentItemBonusTreeID FROM item_bonus_tree_node ORDER BY ID DESC"); // ItemChildEquipment.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_CHILD_EQUIPMENT, "SELECT ID, AltItemID, AltEquipmentSlot, ItemID FROM item_child_equipment ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_CHILD_EQUIPMENT, "SELECT ID, ChildItemID, ChildItemEquipSlot, ParentItemID FROM item_child_equipment" + + " ORDER BY ID DESC"); // ItemClass.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_CLASS, "SELECT ID, Name, PriceMod, OldEnumValue, Flags FROM item_class ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_ITEM_CLASS_LOCALE, "SELECT ID, Name_lang FROM item_class_locale WHERE locale = ?"); + PrepareStatement(HotfixStatements.SEL_ITEM_CLASS, "SELECT ID, ClassName, PriceModifier, ClassID, Flags FROM item_class ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_CLASS_LOCALE, "SELECT ID, ClassName_lang FROM item_class_locale WHERE locale = ?"); // ItemCurrencyCost.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_CURRENCY_COST, "SELECT ID, ItemId FROM item_currency_cost ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_CURRENCY_COST, "SELECT ID, ItemID FROM item_currency_cost ORDER BY ID DESC"); // ItemDamageAmmo.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_DAMAGE_AMMO, "SELECT ID, DPS1, DPS2, DPS3, DPS4, DPS5, DPS6, DPS7, ItemLevel FROM item_damage_ammo" + - " ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_DAMAGE_AMMO, "SELECT ID, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7, ItemLevel" + + " FROM item_damage_ammo ORDER BY ID DESC"); // ItemDamageOneHand.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_DAMAGE_ONE_HAND, "SELECT ID, DPS1, DPS2, DPS3, DPS4, DPS5, DPS6, DPS7, ItemLevel FROM item_damage_one_hand" + - " ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_DAMAGE_ONE_HAND, "SELECT ID, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7, ItemLevel" + + " FROM item_damage_one_hand ORDER BY ID DESC"); // ItemDamageOneHandCaster.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_DAMAGE_ONE_HAND_CASTER, "SELECT ID, DPS1, DPS2, DPS3, DPS4, DPS5, DPS6, DPS7, ItemLevel" + - " FROM item_damage_one_hand_caster ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_DAMAGE_ONE_HAND_CASTER, "SELECT ID, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7, " + + "ItemLevel FROM item_damage_one_hand_caster ORDER BY ID DESC"); // ItemDamageTwoHand.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_DAMAGE_TWO_HAND, "SELECT ID, DPS1, DPS2, DPS3, DPS4, DPS5, DPS6, DPS7, ItemLevel FROM item_damage_two_hand" + - " ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_DAMAGE_TWO_HAND, "SELECT ID, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7, ItemLevel" + + " FROM item_damage_two_hand ORDER BY ID DESC"); // ItemDamageTwoHandCaster.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_DAMAGE_TWO_HAND_CASTER, "SELECT ID, DPS1, DPS2, DPS3, DPS4, DPS5, DPS6, DPS7, ItemLevel" + - " FROM item_damage_two_hand_caster ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_DAMAGE_TWO_HAND_CASTER, "SELECT ID, Quality1, Quality2, Quality3, Quality4, Quality5, Quality6, Quality7, " + + "ItemLevel FROM item_damage_two_hand_caster ORDER BY ID DESC"); // ItemDisenchantLoot.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_DISENCHANT_LOOT, "SELECT ID, MinItemLevel, MaxItemLevel, RequiredDisenchantSkill, ItemSubClass, ItemQuality, " + - "Expansion, ItemClass FROM item_disenchant_loot ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_DISENCHANT_LOOT, "SELECT ID, MinLevel, MaxLevel, SkillRequired, Subclass, Quality, ExpansionID, Class" + + " FROM item_disenchant_loot ORDER BY ID DESC"); // ItemEffect.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_EFFECT, "SELECT ID, SpellID, Cooldown, CategoryCooldown, Charges, Category, ChrSpecializationID, OrderIndex, " + - "`Trigger`, ItemID FROM item_effect ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_EFFECT, "SELECT ID, SpellID, CoolDownMSec, CategoryCoolDownMSec, Charges, SpellCategoryID, ChrSpecializationID, " + + "LegacySlotIndex, TriggerType, ParentItemID FROM item_effect ORDER BY ID DESC"); // ItemExtendedCost.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_EXTENDED_COST, "SELECT ID, RequiredItem1, RequiredItem2, RequiredItem3, RequiredItem4, RequiredItem5, " + - "RequiredCurrencyCount1, RequiredCurrencyCount2, RequiredCurrencyCount3, RequiredCurrencyCount4, RequiredCurrencyCount5, RequiredItemCount1, " + - "RequiredItemCount2, RequiredItemCount3, RequiredItemCount4, RequiredItemCount5, RequiredPersonalArenaRating, RequiredCurrency1, " + - "RequiredCurrency2, RequiredCurrency3, RequiredCurrency4, RequiredCurrency5, RequiredArenaSlot, RequiredFactionId, RequiredFactionStanding, " + - "RequirementFlags, RequiredAchievement FROM item_extended_cost ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_EXTENDED_COST, "SELECT ID, ItemID1, ItemID2, ItemID3, ItemID4, ItemID5, CurrencyCount1, CurrencyCount2, " + + "CurrencyCount3, CurrencyCount4, CurrencyCount5, ItemCount1, ItemCount2, ItemCount3, ItemCount4, ItemCount5, RequiredArenaRating, " + + "CurrencyID1, CurrencyID2, CurrencyID3, CurrencyID4, CurrencyID5, ArenaBracket, MinFactionID, MinReputation, Flags, RequiredAchievement" + + " FROM item_extended_cost ORDER BY ID DESC"); // ItemLevelSelector.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_LEVEL_SELECTOR, "SELECT ID, ItemLevel, ItemLevelSelectorQualitySetID FROM item_level_selector ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_LEVEL_SELECTOR, "SELECT ID, MinItemLevel, ItemLevelSelectorQualitySetID FROM item_level_selector ORDER BY ID DESC"); // ItemLevelSelectorQuality.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_LEVEL_SELECTOR_QUALITY, "SELECT ID, ItemBonusListID, Quality, ItemLevelSelectorQualitySetID" + + PrepareStatement(HotfixStatements.SEL_ITEM_LEVEL_SELECTOR_QUALITY, "SELECT ID, QualityItemBonusListID, Quality, ParentILSQualitySetID" + " FROM item_level_selector_quality ORDER BY ID DESC"); // ItemLevelSelectorQualitySet.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_LEVEL_SELECTOR_QUALITY_SET, "SELECT ID, ItemLevelMin, ItemLevelMax FROM item_level_selector_quality_set" + - " ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_LEVEL_SELECTOR_QUALITY_SET, "SELECT ID, IlvlRare, IlvlEpic FROM item_level_selector_quality_set ORDER BY ID DESC"); // ItemLimitCategory.db2 PrepareStatement(HotfixStatements.SEL_ITEM_LIMIT_CATEGORY, "SELECT ID, Name, Quantity, Flags FROM item_limit_category ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_ITEM_LIMIT_CATEGORY_LOCALE, "SELECT ID, Name_lang FROM item_limit_category_locale WHERE locale = ?"); // ItemModifiedAppearance.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_MODIFIED_APPEARANCE, "SELECT ItemID, ID, AppearanceModID, AppearanceID, `Index`, SourceType" + - " FROM item_modified_appearance ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_MODIFIED_APPEARANCE, "SELECT ItemID, ID, ItemAppearanceModifierID, ItemAppearanceID, OrderIndex, " + + "TransmogSourceTypeEnum FROM item_modified_appearance ORDER BY ID DESC"); // ItemPriceBase.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_PRICE_BASE, "SELECT ID, ArmorFactor, WeaponFactor, ItemLevel FROM item_price_base ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_PRICE_BASE, "SELECT ID, Armor, Weapon, ItemLevel FROM item_price_base ORDER BY ID DESC"); // ItemRandomProperties.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_RANDOM_PROPERTIES, "SELECT ID, Name, Enchantment1, Enchantment2, Enchantment3, Enchantment4, Enchantment5" + + PrepareStatement(HotfixStatements.SEL_ITEM_RANDOM_PROPERTIES, "SELECT ID, Name, Enchantment1, Enchantment2, Enchantment3, Enchantment4, Enchantment5" + " FROM item_random_properties ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_ITEM_RANDOM_PROPERTIES_LOCALE, "SELECT ID, Name_lang FROM item_random_properties_locale WHERE locale = ?"); // ItemRandomSuffix.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_RANDOM_SUFFIX, "SELECT ID, Name, Enchantment1, Enchantment2, Enchantment3, Enchantment4, Enchantment5, " + + PrepareStatement(HotfixStatements.SEL_ITEM_RANDOM_SUFFIX, "SELECT ID, Name, Enchantment1, Enchantment2, Enchantment3, Enchantment4, Enchantment5, " + "AllocationPct1, AllocationPct2, AllocationPct3, AllocationPct4, AllocationPct5 FROM item_random_suffix ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_ITEM_RANDOM_SUFFIX_LOCALE, "SELECT ID, Name_lang FROM item_random_suffix_locale WHERE locale = ?"); // ItemSearchName.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_SEARCH_NAME, "SELECT AllowableRace, Name, ID, Flags1, Flags2, Flags3, ItemLevel, Quality, RequiredExpansion, " + - "RequiredLevel, RequiredReputationFaction, RequiredReputationRank, AllowableClass, RequiredSkill, RequiredSkillRank, RequiredSpell" + + PrepareStatement(HotfixStatements.SEL_ITEM_SEARCH_NAME, "SELECT AllowableRace, Display, ID, Flags1, Flags2, Flags3, ItemLevel, OverallQualityID, " + + "ExpansionID, RequiredLevel, MinFactionID, MinReputation, AllowableClass, RequiredSkill, RequiredSkillRank, RequiredAbility" + " FROM item_search_name ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_ITEM_SEARCH_NAME_LOCALE, "SELECT ID, Name_lang FROM item_search_name_locale WHERE locale = ?"); + PrepareStatement(HotfixStatements.SEL_ITEM_SEARCH_NAME_LOCALE, "SELECT ID, Display_lang FROM item_search_name_locale WHERE locale = ?"); // ItemSet.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_SET, "SELECT ID, Name, ItemID1, ItemID2, ItemID3, ItemID4, ItemID5, ItemID6, ItemID7, ItemID8, ItemID9, " + - "ItemID10, ItemID11, ItemID12, ItemID13, ItemID14, ItemID15, ItemID16, ItemID17, RequiredSkillRank, RequiredSkill, Flags FROM item_set" + + PrepareStatement(HotfixStatements.SEL_ITEM_SET, "SELECT ID, Name, ItemID1, ItemID2, ItemID3, ItemID4, ItemID5, ItemID6, ItemID7, ItemID8, ItemID9, " + + "ItemID10, ItemID11, ItemID12, ItemID13, ItemID14, ItemID15, ItemID16, ItemID17, RequiredSkillRank, RequiredSkill, SetFlags FROM item_set" + " ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_ITEM_SET_LOCALE, "SELECT ID, Name_lang FROM item_set_locale WHERE locale = ?"); @@ -534,65 +536,64 @@ namespace Framework.Database PrepareStatement(HotfixStatements.SEL_ITEM_SET_SPELL, "SELECT ID, SpellID, ChrSpecID, Threshold, ItemSetID FROM item_set_spell ORDER BY ID DESC"); // ItemSparse.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_SPARSE, "SELECT ID, AllowableRace, Name, Name2, Name3, Name4, Description, Flags1, Flags2, Flags3, Flags4, Unk1, " + - "Unk2, BuyCount, BuyPrice, SellPrice, RequiredSpell, MaxCount, Stackable, ItemStatAllocation1, ItemStatAllocation2, ItemStatAllocation3, " + - "ItemStatAllocation4, ItemStatAllocation5, ItemStatAllocation6, ItemStatAllocation7, ItemStatAllocation8, ItemStatAllocation9, " + - "ItemStatAllocation10, ItemStatSocketCostMultiplier1, ItemStatSocketCostMultiplier2, ItemStatSocketCostMultiplier3, " + - "ItemStatSocketCostMultiplier4, ItemStatSocketCostMultiplier5, ItemStatSocketCostMultiplier6, ItemStatSocketCostMultiplier7, " + - "ItemStatSocketCostMultiplier8, ItemStatSocketCostMultiplier9, ItemStatSocketCostMultiplier10, RangedModRange, BagFamily, " + - "ArmorDamageModifier, Duration, StatScalingFactor, AllowableClass, ItemLevel, RequiredSkill, RequiredSkillRank, RequiredReputationFaction, " + - "ItemStatValue1, ItemStatValue2, ItemStatValue3, ItemStatValue4, ItemStatValue5, ItemStatValue6, ItemStatValue7, ItemStatValue8, " + - "ItemStatValue9, ItemStatValue10, ScalingStatDistribution, Delay, PageText, StartQuest, LockID, RandomProperty, RandomSuffix, ItemSet, Area, " + - "Map, TotemCategory, SocketBonus, GemProperties, ItemLimitCategory, HolidayID, RequiredTransmogHolidayID, ItemNameDescriptionID, Quality, " + - "InventoryType, RequiredLevel, RequiredHonorRank, RequiredCityRank, RequiredReputationRank, ContainerSlots, ItemStatType1, ItemStatType2, " + - "ItemStatType3, ItemStatType4, ItemStatType5, ItemStatType6, ItemStatType7, ItemStatType8, ItemStatType9, ItemStatType10, DamageType, " + - "Bonding, LanguageID, PageMaterial, Material, Sheath, SocketColor1, SocketColor2, SocketColor3, CurrencySubstitutionID, " + - "CurrencySubstitutionCount, ArtifactID, RequiredExpansion FROM item_sparse ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_ITEM_SPARSE_LOCALE, "SELECT ID, Name_lang, Name2_lang, Name3_lang, Name4_lang, Description_lang FROM item_sparse_locale" + - " WHERE locale = ?"); + PrepareStatement(HotfixStatements.SEL_ITEM_SPARSE, "SELECT ID, AllowableRace, Display, Display1, Display2, Display3, Description, Flags1, Flags2, Flags3, " + + "Flags4, PriceRandomValue, PriceVariance, VendorStackCount, BuyPrice, SellPrice, RequiredAbility, MaxCount, Stackable, StatPercentEditor1, " + + "StatPercentEditor2, StatPercentEditor3, StatPercentEditor4, StatPercentEditor5, StatPercentEditor6, StatPercentEditor7, StatPercentEditor8, " + + "StatPercentEditor9, StatPercentEditor10, StatPercentageOfSocket1, StatPercentageOfSocket2, StatPercentageOfSocket3, StatPercentageOfSocket4, " + + "StatPercentageOfSocket5, StatPercentageOfSocket6, StatPercentageOfSocket7, StatPercentageOfSocket8, StatPercentageOfSocket9, " + + "StatPercentageOfSocket10, ItemRange, BagFamily, QualityModifier, DurationInInventory, DmgVariance, AllowableClass, ItemLevel, RequiredSkill, " + + "RequiredSkillRank, MinFactionID, ItemStatValue1, ItemStatValue2, ItemStatValue3, ItemStatValue4, ItemStatValue5, ItemStatValue6, " + + "ItemStatValue7, ItemStatValue8, ItemStatValue9, ItemStatValue10, ScalingStatDistributionID, ItemDelay, PageID, StartQuestID, LockID, " + + "RandomSelect, ItemRandomSuffixGroupID, ItemSet, ZoneBound, InstanceBound, TotemCategoryID, SocketMatchEnchantmentId, GemProperties, " + + "LimitCategory, RequiredHoliday, RequiredTransmogHoliday, ItemNameDescriptionID, OverallQualityID, InventoryType, RequiredLevel, " + + "RequiredPVPRank, RequiredPVPMedal, MinReputation, ContainerSlots, StatModifierBonusStat1, StatModifierBonusStat2, StatModifierBonusStat3, " + + "StatModifierBonusStat4, StatModifierBonusStat5, StatModifierBonusStat6, StatModifierBonusStat7, StatModifierBonusStat8, " + + "StatModifierBonusStat9, StatModifierBonusStat10, DamageDamageType, Bonding, LanguageID, PageMaterialID, Material, SheatheType, SocketType1, " + + "SocketType2, SocketType3, SpellWeightCategory, SpellWeight, ArtifactID, ExpansionID FROM item_sparse ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_SPARSE_LOCALE, "SELECT ID, Display_lang, Display1_lang, Display2_lang, Display3_lang, Description_lang" + + " FROM item_sparse_locale WHERE locale = ?"); // ItemSpec.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_SPEC, "SELECT ID, SpecID, MinLevel, MaxLevel, ItemType, PrimaryStat, SecondaryStat FROM item_spec" + + PrepareStatement(HotfixStatements.SEL_ITEM_SPEC, "SELECT ID, SpecializationID, MinLevel, MaxLevel, ItemType, PrimaryStat, SecondaryStat FROM item_spec" + " ORDER BY ID DESC"); // ItemSpecOverride.db2 PrepareStatement(HotfixStatements.SEL_ITEM_SPEC_OVERRIDE, "SELECT ID, SpecID, ItemID FROM item_spec_override ORDER BY ID DESC"); // ItemUpgrade.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_UPGRADE, "SELECT ID, CurrencyCost, PrevItemUpgradeID, CurrencyID, ItemUpgradePathID, ItemLevelBonus" + + PrepareStatement(HotfixStatements.SEL_ITEM_UPGRADE, "SELECT ID, CurrencyAmount, PrerequisiteID, CurrencyType, ItemUpgradePathID, ItemLevelIncrement" + " FROM item_upgrade ORDER BY ID DESC"); // ItemXBonusTree.db2 - PrepareStatement(HotfixStatements.SEL_ITEM_X_BONUS_TREE, "SELECT ID, BonusTreeID, ItemID FROM item_x_bonus_tree ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_ITEM_X_BONUS_TREE, "SELECT ID, ItemBonusTreeID, ItemID FROM item_x_bonus_tree ORDER BY ID DESC"); // Keychain.db2 - PrepareStatement(HotfixStatements.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" + + PrepareStatement(HotfixStatements.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"); // LfgDungeons.db2 - PrepareStatement(HotfixStatements.SEL_LFG_DUNGEONS, "SELECT ID, Name, Description, Flags, MinItemLevel, MaxLevel, TargetLevelMax, MapID, RandomID, " + - "ScenarioID, LastBossJournalEncounterID, BonusReputationAmount, MentorItemLevel, PlayerConditionID, MinLevel, TargetLevel, TargetLevelMin, " + - "DifficultyID, Type, Faction, Expansion, OrderIndex, GroupID, CountTank, CountHealer, CountDamage, MinCountTank, MinCountHealer, " + - "MinCountDamage, SubType, MentorCharLevel, TextureFileDataID, RewardIconFileDataID, ProposalTextureFileDataID FROM lfg_dungeons" + - " ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_LFG_DUNGEONS, "SELECT ID, Name, Description, Flags, MinGear, MaxLevel, TargetLevelMax, MapID, RandomID, ScenarioID, " + + "FinalEncounterID, BonusReputationAmount, MentorItemLevel, RequiredPlayerConditionId, MinLevel, TargetLevel, TargetLevelMin, DifficultyID, " + + "TypeID, Faction, ExpansionLevel, OrderIndex, GroupID, CountTank, CountHealer, CountDamage, MinCountTank, MinCountHealer, MinCountDamage, " + + "Subtype, MentorCharLevel, IconTextureFileID, RewardsBgTextureFileID, PopupBgTextureFileID FROM lfg_dungeons ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_LFG_DUNGEONS_LOCALE, "SELECT ID, Name_lang, Description_lang FROM lfg_dungeons_locale WHERE locale = ?"); // Light.db2 - PrepareStatement(HotfixStatements.SEL_LIGHT, "SELECT ID, PosX, PosY, PosZ, FalloffStart, FalloffEnd, MapID, LightParamsID1, LightParamsID2, LightParamsID3, " + - "LightParamsID4, LightParamsID5, LightParamsID6, LightParamsID7, LightParamsID8 FROM light ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_LIGHT, "SELECT ID, GameCoordsX, GameCoordsY, GameCoordsZ, GameFalloffStart, GameFalloffEnd, ContinentID, " + + "LightParamsID1, LightParamsID2, LightParamsID3, LightParamsID4, LightParamsID5, LightParamsID6, LightParamsID7, LightParamsID8 FROM light" + + " ORDER BY ID DESC"); // LiquidType.db2 - PrepareStatement(HotfixStatements.SEL_LIQUID_TYPE, "SELECT ID, Name, Texture1, Texture2, Texture3, Texture4, Texture5, Texture6, SpellID, MaxDarkenDepth, " + - "FogDarkenIntensity, AmbDarkenIntensity, DirDarkenIntensity, ParticleScale, Color1, Color2, Float1, Float2, Float3, `Float4`, Float5, Float6, " + - "Float7, `Float8`, Float9, Float10, Float11, Float12, Float13, Float14, Float15, Float16, Float17, Float18, `Int1`, `Int2`, `Int3`, `Int4`, " + - "Flags, LightID, Type, ParticleMovement, ParticleTexSlots, MaterialID, DepthTexCount1, DepthTexCount2, DepthTexCount3, DepthTexCount4, " + - "DepthTexCount5, DepthTexCount6, SoundID FROM liquid_type ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_LIQUID_TYPE_LOCALE, "SELECT ID, Name_lang FROM liquid_type_locale WHERE locale = ?"); + PrepareStatement(HotfixStatements.SEL_LIQUID_TYPE, "SELECT ID, Name, Texture1, Texture2, Texture3, Texture4, Texture5, Texture6, SpellID, MaxDarkenDepth, " + + "FogDarkenIntensity, AmbDarkenIntensity, DirDarkenIntensity, ParticleScale, Color1, Color2, Float1, Float2, Float3, `Float4`, Float5, Float6, " + + "Float7, `Float8`, Float9, Float10, Float11, Float12, Float13, Float14, Float15, Float16, Float17, Float18, `Int1`, `Int2`, `Int3`, `Int4`, " + + "Flags, LightID, SoundBank, ParticleMovement, ParticleTexSlots, MaterialID, FrameCountTexture1, FrameCountTexture2, FrameCountTexture3, " + + "FrameCountTexture4, FrameCountTexture5, FrameCountTexture6, SoundID FROM liquid_type ORDER BY ID DESC"); // Lock.db2 - PrepareStatement(HotfixStatements.SEL_LOCK, "SELECT ID, Index1, Index2, Index3, Index4, Index5, Index6, Index7, Index8, Skill1, Skill2, Skill3, Skill4, " + - "Skill5, Skill6, Skill7, Skill8, Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Action1, Action2, Action3, Action4, Action5, " + + PrepareStatement(HotfixStatements.SEL_LOCK, "SELECT ID, Index1, Index2, Index3, Index4, Index5, Index6, Index7, Index8, Skill1, Skill2, Skill3, Skill4, " + + "Skill5, Skill6, Skill7, Skill8, Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Action1, Action2, Action3, Action4, Action5, " + "Action6, Action7, Action8 FROM `lock` ORDER BY ID DESC"); // MailTemplate.db2 @@ -600,42 +601,42 @@ namespace Framework.Database PrepareStatement(HotfixStatements.SEL_MAIL_TEMPLATE_LOCALE, "SELECT ID, Body_lang FROM mail_template_locale WHERE locale = ?"); // Map.db2 - PrepareStatement(HotfixStatements.SEL_MAP, "SELECT ID, Directory, MapName, MapDescription0, MapDescription1, ShortDescription, LongDescription, Flags1, " + - "Flags2, MinimapIconScale, CorpsePosX, CorpsePosY, AreaTableID, LoadingScreenID, CorpseMapID, TimeOfDayOverride, ParentMapID, " + - "CosmeticParentMapID, WindSettingsID, InstanceType, unk5, ExpansionID, MaxPlayers, TimeOffset FROM map ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_MAP_LOCALE, "SELECT ID, MapName_lang, MapDescription0_lang, MapDescription1_lang, ShortDescription_lang, " + - "LongDescription_lang FROM map_locale WHERE locale = ?"); + PrepareStatement(HotfixStatements.SEL_MAP, "SELECT ID, Directory, MapName, MapDescription0, MapDescription1, PvpShortDescription, PvpLongDescription, " + + "Flags1, Flags2, MinimapIconScale, CorpseX, CorpseY, AreaTableID, LoadingScreenID, CorpseMapID, TimeOfDayOverride, ParentMapID, " + + "CosmeticParentMapID, WindSettingsID, InstanceType, MapType, ExpansionID, MaxPlayers, TimeOffset FROM map ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_MAP_LOCALE, "SELECT ID, MapName_lang, MapDescription0_lang, MapDescription1_lang, PvpShortDescription_lang, " + + "PvpLongDescription_lang FROM map_locale WHERE locale = ?"); // MapDifficulty.db2 - PrepareStatement(HotfixStatements.SEL_MAP_DIFFICULTY, "SELECT ID, Message, DifficultyID, RaidDurationType, MaxPlayers, LockID, Flags, ItemBonusTreeModID, " + - "Context, MapID FROM map_difficulty ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_MAP_DIFFICULTY, "SELECT ID, Message, DifficultyID, ResetInterval, MaxPlayers, LockID, Flags, ItemContext, " + + "ItemContextPickerID, MapID FROM map_difficulty ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_MAP_DIFFICULTY_LOCALE, "SELECT ID, Message_lang FROM map_difficulty_locale WHERE locale = ?"); // ModifierTree.db2 - PrepareStatement(HotfixStatements.SEL_MODIFIER_TREE, "SELECT ID, Asset1, Asset2, Parent, Type, Unk700, Operator, Amount FROM modifier_tree ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_MODIFIER_TREE, "SELECT ID, Asset, SecondaryAsset, Parent, Type, TertiaryAsset, Operator, Amount FROM modifier_tree" + + " ORDER BY ID DESC"); // Mount.db2 - PrepareStatement(HotfixStatements.SEL_MOUNT, "SELECT Name, Description, SourceDescription, SpellId, CameraPivotMultiplier, MountTypeId, Flags, Source, ID, " + - "PlayerConditionId, UiModelSceneID FROM mount ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_MOUNT_LOCALE, "SELECT ID, Name_lang, Description_lang, SourceDescription_lang FROM mount_locale WHERE locale = ?"); + PrepareStatement(HotfixStatements.SEL_MOUNT, "SELECT Name, Description, SourceText, SourceSpellID, MountFlyRideHeight, MountTypeID, Flags, SourceTypeEnum, " + + "ID, PlayerConditionID, UiModelSceneID FROM mount ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_MOUNT_LOCALE, "SELECT ID, Name_lang, Description_lang, SourceText_lang FROM mount_locale WHERE locale = ?"); // MountCapability.db2 - PrepareStatement(HotfixStatements.SEL_MOUNT_CAPABILITY, "SELECT RequiredSpell, SpeedModSpell, RequiredRidingSkill, RequiredArea, RequiredMap, Flags, ID, " + - "RequiredAura FROM mount_capability ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_MOUNT_CAPABILITY, "SELECT ReqSpellKnownID, ModSpellAuraID, ReqRidingSkill, ReqAreaID, ReqMapID, Flags, ID, " + + "ReqSpellAuraID FROM mount_capability ORDER BY ID DESC"); // MountTypeXCapability.db2 - PrepareStatement(HotfixStatements.SEL_MOUNT_TYPE_X_CAPABILITY, "SELECT ID, MountTypeID, MountCapabilityID, OrderIndex FROM mount_type_x_capability" + + PrepareStatement(HotfixStatements.SEL_MOUNT_TYPE_X_CAPABILITY, "SELECT ID, MountTypeID, MountCapabilityID, OrderIndex FROM mount_type_x_capability" + " ORDER BY ID DESC"); // MountXDisplay.db2 - PrepareStatement(HotfixStatements.SEL_MOUNT_X_DISPLAY, "SELECT ID, DisplayID, PlayerConditionID, MountID FROM mount_x_display ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_MOUNT_X_DISPLAY, "SELECT ID, CreatureDisplayInfoID, PlayerConditionID, MountID FROM mount_x_display ORDER BY ID DESC"); // Movie.db2 PrepareStatement(HotfixStatements.SEL_MOVIE, "SELECT ID, AudioFileDataID, SubtitleFileDataID, Volume, KeyID FROM movie ORDER BY ID DESC"); // NameGen.db2 - PrepareStatement(HotfixStatements.SEL_NAME_GEN, "SELECT ID, Name, Race, Sex FROM name_gen ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_NAME_GEN_LOCALE, "SELECT ID, Name_lang FROM name_gen_locale WHERE locale = ?"); + PrepareStatement(HotfixStatements.SEL_NAME_GEN, "SELECT ID, Name, RaceID, Sex FROM name_gen ORDER BY ID DESC"); // NamesProfanity.db2 PrepareStatement(HotfixStatements.SEL_NAMES_PROFANITY, "SELECT ID, Name, Language FROM names_profanity ORDER BY ID DESC"); @@ -647,8 +648,8 @@ namespace Framework.Database PrepareStatement(HotfixStatements.SEL_NAMES_RESERVED_LOCALE, "SELECT ID, Name, LocaleMask FROM names_reserved_locale ORDER BY ID DESC"); // OverrideSpellData.db2 - PrepareStatement(HotfixStatements.SEL_OVERRIDE_SPELL_DATA, "SELECT ID, SpellID1, SpellID2, SpellID3, SpellID4, SpellID5, SpellID6, SpellID7, SpellID8, " + - "SpellID9, SpellID10, PlayerActionbarFileDataID, Flags FROM override_spell_data ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_OVERRIDE_SPELL_DATA, "SELECT ID, Spells1, Spells2, Spells3, Spells4, Spells5, Spells6, Spells7, Spells8, Spells9, " + + "Spells10, PlayerActionBarFileDataID, Flags FROM override_spell_data ORDER BY ID DESC"); // Phase.db2 PrepareStatement(HotfixStatements.SEL_PHASE, "SELECT ID, Flags FROM phase ORDER BY ID DESC"); @@ -657,87 +658,86 @@ namespace Framework.Database PrepareStatement(HotfixStatements.SEL_PHASE_X_PHASE_GROUP, "SELECT ID, PhaseID, PhaseGroupID FROM phase_x_phase_group ORDER BY ID DESC"); // PlayerCondition.db2 - PrepareStatement(HotfixStatements.SEL_PLAYER_CONDITION, "SELECT RaceMask, FailureDescription, ID, Flags, MinLevel, MaxLevel, ClassMask, 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, SkillID1, SkillID2, SkillID3, " + - "SkillID4, MinSkill1, MinSkill2, MinSkill3, MinSkill4, MaxSkill1, MaxSkill2, MaxSkill3, MaxSkill4, MinFactionID1, MinFactionID2, " + - "MinFactionID3, MinReputation1, MinReputation2, MinReputation3, PrevQuestID1, PrevQuestID2, PrevQuestID3, PrevQuestID4, CurrQuestID1, " + - "CurrQuestID2, CurrQuestID3, CurrQuestID4, CurrentCompletedQuestID1, CurrentCompletedQuestID2, CurrentCompletedQuestID3, " + - "CurrentCompletedQuestID4, SpellID1, SpellID2, SpellID3, SpellID4, ItemID1, ItemID2, ItemID3, ItemID4, ItemCount1, ItemCount2, ItemCount3, " + - "ItemCount4, Explored1, Explored2, Time1, Time2, AuraSpellID1, AuraSpellID2, AuraSpellID3, AuraSpellID4, AuraCount1, AuraCount2, AuraCount3, " + - "AuraCount4, Achievement1, Achievement2, Achievement3, Achievement4, LfgStatus1, LfgStatus2, LfgStatus3, LfgStatus4, LfgCompare1, " + - "LfgCompare2, LfgCompare3, LfgCompare4, LfgValue1, LfgValue2, LfgValue3, LfgValue4, AreaID1, AreaID2, AreaID3, AreaID4, CurrencyID1, " + - "CurrencyID2, CurrencyID3, CurrencyID4, CurrencyCount1, CurrencyCount2, CurrencyCount3, CurrencyCount4, QuestKillMonster1, QuestKillMonster2, " + - "QuestKillMonster3, QuestKillMonster4, QuestKillMonster5, QuestKillMonster6, MovementFlags1, MovementFlags2 FROM player_condition" + + PrepareStatement(HotfixStatements.SEL_PLAYER_CONDITION, "SELECT RaceMask, FailureDescription, ID, Flags, MinLevel, MaxLevel, ClassMask, Gender, " + + "NativeGender, SkillLogic, LanguageID, MinLanguage, MaxLanguage, MaxFactionID, MaxReputation, ReputationLogic, CurrentPvpFaction, 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, WeaponSubclassMask, SkillID1, SkillID2, SkillID3, SkillID4, " + + "MinSkill1, MinSkill2, MinSkill3, MinSkill4, MaxSkill1, MaxSkill2, MaxSkill3, MaxSkill4, MinFactionID1, MinFactionID2, MinFactionID3, " + + "MinReputation1, MinReputation2, MinReputation3, PrevQuestID1, PrevQuestID2, PrevQuestID3, PrevQuestID4, CurrQuestID1, CurrQuestID2, " + + "CurrQuestID3, CurrQuestID4, CurrentCompletedQuestID1, CurrentCompletedQuestID2, CurrentCompletedQuestID3, CurrentCompletedQuestID4, " + + "SpellID1, SpellID2, SpellID3, SpellID4, ItemID1, ItemID2, ItemID3, ItemID4, ItemCount1, ItemCount2, ItemCount3, ItemCount4, Explored1, " + + "Explored2, Time1, Time2, AuraSpellID1, AuraSpellID2, AuraSpellID3, AuraSpellID4, AuraStacks1, AuraStacks2, AuraStacks3, AuraStacks4, " + + "Achievement1, Achievement2, Achievement3, Achievement4, LfgStatus1, LfgStatus2, LfgStatus3, LfgStatus4, LfgCompare1, LfgCompare2, " + + "LfgCompare3, LfgCompare4, LfgValue1, LfgValue2, LfgValue3, LfgValue4, AreaID1, AreaID2, AreaID3, AreaID4, CurrencyID1, CurrencyID2, " + + "CurrencyID3, CurrencyID4, CurrencyCount1, CurrencyCount2, CurrencyCount3, CurrencyCount4, QuestKillMonster1, QuestKillMonster2, " + + "QuestKillMonster3, QuestKillMonster4, QuestKillMonster5, QuestKillMonster6, MovementFlags1, MovementFlags2 FROM player_condition" + " ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_PLAYER_CONDITION_LOCALE, "SELECT ID, FailureDescription_lang FROM player_condition_locale WHERE locale = ?"); // PowerDisplay.db2 - PrepareStatement(HotfixStatements.SEL_POWER_DISPLAY, "SELECT ID, GlobalStringBaseTag, PowerType, Red, Green, Blue FROM power_display ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_POWER_DISPLAY, "SELECT ID, GlobalStringBaseTag, ActualType, Red, Green, Blue FROM power_display ORDER BY ID DESC"); // PowerType.db2 - PrepareStatement(HotfixStatements.SEL_POWER_TYPE, "SELECT ID, PowerTypeToken, PowerCostToken, RegenerationPeace, RegenerationCombat, MaxPower, " + - "RegenerationDelay, Flags, PowerTypeEnum, RegenerationMin, RegenerationCenter, RegenerationMax, UIModifier FROM power_type ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_POWER_TYPE, "SELECT ID, NameGlobalStringTag, CostGlobalStringTag, RegenPeace, RegenCombat, MaxBasePower, " + + "RegenInterruptTimeMS, Flags, PowerTypeEnum, MinPower, CenterPower, DefaultPower, DisplayModifier FROM power_type ORDER BY ID DESC"); // PrestigeLevelInfo.db2 - PrepareStatement(HotfixStatements.SEL_PRESTIGE_LEVEL_INFO, "SELECT ID, PrestigeText, IconID, PrestigeLevel, Flags FROM prestige_level_info ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_PRESTIGE_LEVEL_INFO_LOCALE, "SELECT ID, PrestigeText_lang FROM prestige_level_info_locale WHERE locale = ?"); + PrepareStatement(HotfixStatements.SEL_PRESTIGE_LEVEL_INFO, "SELECT ID, Name, BadgeTextureFileDataID, PrestigeLevel, Flags FROM prestige_level_info" + + " ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_PRESTIGE_LEVEL_INFO_LOCALE, "SELECT ID, Name_lang FROM prestige_level_info_locale WHERE locale = ?"); // PvpDifficulty.db2 - PrepareStatement(HotfixStatements.SEL_PVP_DIFFICULTY, "SELECT ID, BracketID, MinLevel, MaxLevel, MapID FROM pvp_difficulty ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_PVP_DIFFICULTY, "SELECT ID, RangeIndex, MinLevel, MaxLevel, MapID FROM pvp_difficulty ORDER BY ID DESC"); // PvpItem.db2 - PrepareStatement(HotfixStatements.SEL_PVP_ITEM, "SELECT ID, ItemID, ItemLevelBonus FROM pvp_item ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_PVP_ITEM, "SELECT ID, ItemID, ItemLevelDelta FROM pvp_item ORDER BY ID DESC"); // PvpReward.db2 - PrepareStatement(HotfixStatements.SEL_PVP_REWARD, "SELECT ID, HonorLevel, Prestige, RewardPackID FROM pvp_reward ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_PVP_REWARD, "SELECT ID, HonorLevel, PrestigeLevel, RewardPackID FROM pvp_reward ORDER BY ID DESC"); // PvpTalent.db2 - PrepareStatement(HotfixStatements.SEL_PVP_TALENT, "SELECT ID, Description, SpellID, OverridesSpellID, ExtraSpellID, TierID, ColumnIndex, Flags, ClassID, " + - "SpecID, Role FROM pvp_talent ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_PVP_TALENT, "SELECT ID, Description, SpellID, OverridesSpellID, ActionBarSpellID, TierID, ColumnIndex, Flags, " + + "ClassID, SpecID, Role FROM pvp_talent ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_PVP_TALENT_LOCALE, "SELECT ID, Description_lang FROM pvp_talent_locale WHERE locale = ?"); // PvpTalentUnlock.db2 PrepareStatement(HotfixStatements.SEL_PVP_TALENT_UNLOCK, "SELECT ID, TierID, ColumnIndex, HonorLevel FROM pvp_talent_unlock ORDER BY ID DESC"); // QuestFactionReward.db2 - PrepareStatement(HotfixStatements.SEL_QUEST_FACTION_REWARD, "SELECT ID, QuestRewFactionValue1, QuestRewFactionValue2, QuestRewFactionValue3, " + - "QuestRewFactionValue4, QuestRewFactionValue5, QuestRewFactionValue6, QuestRewFactionValue7, QuestRewFactionValue8, QuestRewFactionValue9, " + - "QuestRewFactionValue10 FROM quest_faction_reward ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_QUEST_FACTION_REWARD, "SELECT ID, Difficulty1, Difficulty2, Difficulty3, Difficulty4, Difficulty5, Difficulty6, " + + "Difficulty7, Difficulty8, Difficulty9, Difficulty10 FROM quest_faction_reward ORDER BY ID DESC"); // QuestMoneyReward.db2 - PrepareStatement(HotfixStatements.SEL_QUEST_MONEY_REWARD, "SELECT ID, Money1, Money2, Money3, Money4, Money5, Money6, Money7, Money8, Money9, Money10" + - " FROM quest_money_reward ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_QUEST_MONEY_REWARD, "SELECT ID, Difficulty1, Difficulty2, Difficulty3, Difficulty4, Difficulty5, Difficulty6, " + + "Difficulty7, Difficulty8, Difficulty9, Difficulty10 FROM quest_money_reward ORDER BY ID DESC"); // QuestPackageItem.db2 - PrepareStatement(HotfixStatements.SEL_QUEST_PACKAGE_ITEM, "SELECT ID, ItemID, QuestPackageID, FilterType, ItemCount FROM quest_package_item ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_QUEST_PACKAGE_ITEM, "SELECT ID, ItemID, PackageID, DisplayType, ItemQuantity FROM quest_package_item ORDER BY ID DESC"); // QuestSort.db2 - PrepareStatement(HotfixStatements.SEL_QUEST_SORT, "SELECT ID, SortName, SortOrder FROM quest_sort ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_QUEST_SORT, "SELECT ID, SortName, UiOrderIndex FROM quest_sort ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_QUEST_SORT_LOCALE, "SELECT ID, SortName_lang FROM quest_sort_locale WHERE locale = ?"); // QuestV2.db2 PrepareStatement(HotfixStatements.SEL_QUEST_V2, "SELECT ID, UniqueBitFlag FROM quest_v2 ORDER BY ID DESC"); // QuestXp.db2 - PrepareStatement(HotfixStatements.SEL_QUEST_XP, "SELECT ID, Exp1, Exp2, Exp3, Exp4, Exp5, Exp6, Exp7, Exp8, Exp9, Exp10 FROM quest_xp ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_QUEST_XP, "SELECT ID, Difficulty1, Difficulty2, Difficulty3, Difficulty4, Difficulty5, Difficulty6, Difficulty7, " + + "Difficulty8, Difficulty9, Difficulty10 FROM quest_xp ORDER BY ID DESC"); // RandPropPoints.db2 - PrepareStatement(HotfixStatements.SEL_RAND_PROP_POINTS, "SELECT ID, EpicPropertiesPoints1, EpicPropertiesPoints2, EpicPropertiesPoints3, " + - "EpicPropertiesPoints4, EpicPropertiesPoints5, RarePropertiesPoints1, RarePropertiesPoints2, RarePropertiesPoints3, RarePropertiesPoints4, " + - "RarePropertiesPoints5, UncommonPropertiesPoints1, UncommonPropertiesPoints2, UncommonPropertiesPoints3, UncommonPropertiesPoints4, " + - "UncommonPropertiesPoints5 FROM rand_prop_points ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_RAND_PROP_POINTS, "SELECT ID, Epic1, Epic2, Epic3, Epic4, Epic5, Superior1, Superior2, Superior3, Superior4, " + + "Superior5, Good1, Good2, Good3, Good4, Good5 FROM rand_prop_points ORDER BY ID DESC"); // RewardPack.db2 - PrepareStatement(HotfixStatements.SEL_REWARD_PACK, "SELECT ID, Money, ArtifactXPMultiplier, ArtifactXPDifficulty, ArtifactCategoryID, TitleID, Unused" + - " FROM reward_pack ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_REWARD_PACK, "SELECT ID, Money, ArtifactXPMultiplier, ArtifactXPDifficulty, ArtifactXPCategoryID, CharTitleID, " + + "TreasurePickerID FROM reward_pack ORDER BY ID DESC"); // RewardPackXItem.db2 - PrepareStatement(HotfixStatements.SEL_REWARD_PACK_X_ITEM, "SELECT ID, ItemID, Amount, RewardPackID FROM reward_pack_x_item ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_REWARD_PACK_X_ITEM, "SELECT ID, ItemID, ItemQuantity, RewardPackID FROM reward_pack_x_item ORDER BY ID DESC"); // RulesetItemUpgrade.db2 PrepareStatement(HotfixStatements.SEL_RULESET_ITEM_UPGRADE, "SELECT ID, ItemID, ItemUpgradeID FROM ruleset_item_upgrade ORDER BY ID DESC"); @@ -746,20 +746,20 @@ namespace Framework.Database PrepareStatement(HotfixStatements.SEL_SANDBOX_SCALING, "SELECT ID, MinLevel, MaxLevel, Flags FROM sandbox_scaling ORDER BY ID DESC"); // ScalingStatDistribution.db2 - PrepareStatement(HotfixStatements.SEL_SCALING_STAT_DISTRIBUTION, "SELECT ID, ItemLevelCurveID, MinLevel, MaxLevel FROM scaling_stat_distribution" + - " ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SCALING_STAT_DISTRIBUTION, "SELECT ID, PlayerLevelToItemLevelCurveID, MinLevel, MaxLevel" + + " FROM scaling_stat_distribution ORDER BY ID DESC"); // Scenario.db2 - PrepareStatement(HotfixStatements.SEL_SCENARIO, "SELECT ID, Name, Data, Flags, Type FROM scenario ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SCENARIO, "SELECT ID, Name, AreaTableID, Flags, Type FROM scenario ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_SCENARIO_LOCALE, "SELECT ID, Name_lang FROM scenario_locale WHERE locale = ?"); // ScenarioStep.db2 - PrepareStatement(HotfixStatements.SEL_SCENARIO_STEP, "SELECT ID, Description, Name, ScenarioID, PreviousStepID, QuestRewardID, Step, Flags, CriteriaTreeID, " + - "BonusRequiredStepID FROM scenario_step ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_SCENARIO_STEP_LOCALE, "SELECT ID, Description_lang, Name_lang FROM scenario_step_locale WHERE locale = ?"); + PrepareStatement(HotfixStatements.SEL_SCENARIO_STEP, "SELECT ID, Description, Title, ScenarioID, Supersedes, RewardQuestID, OrderIndex, Flags, " + + "Criteriatreeid, RelatedStep FROM scenario_step ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SCENARIO_STEP_LOCALE, "SELECT ID, Description_lang, Title_lang FROM scenario_step_locale WHERE locale = ?"); // SceneScript.db2 - PrepareStatement(HotfixStatements.SEL_SCENE_SCRIPT, "SELECT ID, PrevScriptId, NextScriptId FROM scene_script ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SCENE_SCRIPT, "SELECT ID, FirstSceneScriptID, NextSceneScriptID FROM scene_script ORDER BY ID DESC"); // SceneScriptGlobalText.db2 PrepareStatement(HotfixStatements.SEL_SCENE_SCRIPT_GLOBAL_TEXT, "SELECT ID, Name, Script FROM scene_script_global_text ORDER BY ID DESC"); @@ -771,275 +771,274 @@ namespace Framework.Database PrepareStatement(HotfixStatements.SEL_SCENE_SCRIPT_TEXT, "SELECT ID, Name, Script FROM scene_script_text ORDER BY ID DESC"); // SkillLine.db2 - PrepareStatement(HotfixStatements.SEL_SKILL_LINE, "SELECT ID, DisplayName, Description, AlternateVerb, Flags, CategoryID, CanLink, IconFileDataID, " + + PrepareStatement(HotfixStatements.SEL_SKILL_LINE, "SELECT ID, DisplayName, Description, AlternateVerb, Flags, CategoryID, CanLink, SpellIconFileID, " + "ParentSkillLineID FROM skill_line ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_SKILL_LINE_LOCALE, "SELECT ID, DisplayName_lang, Description_lang, AlternateVerb_lang FROM skill_line_locale" + + PrepareStatement(HotfixStatements.SEL_SKILL_LINE_LOCALE, "SELECT ID, DisplayName_lang, Description_lang, AlternateVerb_lang FROM skill_line_locale" + " WHERE locale = ?"); // SkillLineAbility.db2 - PrepareStatement(HotfixStatements.SEL_SKILL_LINE_ABILITY, "SELECT RaceMask, ID, SpellID, SupercedesSpell, SkillLine, TrivialSkillLineRankHigh, " + - "TrivialSkillLineRankLow, UniqueBit, TradeSkillCategoryID, NumSkillUps, ClassMask, MinSkillLineRank, AcquireMethod, Flags" + + PrepareStatement(HotfixStatements.SEL_SKILL_LINE_ABILITY, "SELECT RaceMask, ID, Spell, SupercedesSpell, SkillLine, TrivialSkillLineRankHigh, " + + "TrivialSkillLineRankLow, UniqueBit, TradeSkillCategoryID, NumSkillUps, ClassMask, MinSkillLineRank, AcquireMethod, Flags" + " FROM skill_line_ability ORDER BY ID DESC"); // SkillRaceClassInfo.db2 - PrepareStatement(HotfixStatements.SEL_SKILL_RACE_CLASS_INFO, "SELECT ID, RaceMask, SkillID, Flags, SkillTierID, Availability, MinLevel, ClassMask" + + PrepareStatement(HotfixStatements.SEL_SKILL_RACE_CLASS_INFO, "SELECT ID, RaceMask, SkillID, Flags, SkillTierID, Availability, MinLevel, ClassMask" + " FROM skill_race_class_info ORDER BY ID DESC"); // SoundKit.db2 - PrepareStatement(HotfixStatements.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"); + PrepareStatement(HotfixStatements.SEL_SOUND_KIT, "SELECT ID, VolumeFloat, MinDistance, DistanceCutoff, Flags, SoundEntriesAdvancedID, SoundType, " + + "DialogType, EAXDef, VolumeVariationPlus, VolumeVariationMinus, PitchVariationPlus, PitchVariationMinus, PitchAdjust, BusOverwriteID, " + + "MaxInstances FROM sound_kit ORDER BY ID DESC"); // SpecializationSpells.db2 - PrepareStatement(HotfixStatements.SEL_SPECIALIZATION_SPELLS, "SELECT Description, SpellID, OverridesSpellID, SpecID, OrderIndex, ID" + + PrepareStatement(HotfixStatements.SEL_SPECIALIZATION_SPELLS, "SELECT Description, SpellID, OverridesSpellID, SpecID, DisplayOrder, ID" + " FROM specialization_spells ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_SPECIALIZATION_SPELLS_LOCALE, "SELECT ID, Description_lang FROM specialization_spells_locale WHERE locale = ?"); // Spell.db2 PrepareStatement(HotfixStatements.SEL_SPELL, "SELECT ID, Name, NameSubtext, Description, AuraDescription FROM spell ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_SPELL_LOCALE, "SELECT ID, Name_lang, NameSubtext_lang, Description_lang, AuraDescription_lang FROM spell_locale" + + PrepareStatement(HotfixStatements.SEL_SPELL_LOCALE, "SELECT ID, Name_lang, NameSubtext_lang, Description_lang, AuraDescription_lang FROM spell_locale" + " WHERE locale = ?"); // SpellAuraOptions.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_AURA_OPTIONS, "SELECT ID, ProcCharges, ProcTypeMask, ProcCategoryRecovery, CumulativeAura, " + + PrepareStatement(HotfixStatements.SEL_SPELL_AURA_OPTIONS, "SELECT ID, ProcCharges, ProcTypeMask, ProcCategoryRecovery, CumulativeAura, " + "SpellProcsPerMinuteID, DifficultyID, ProcChance, SpellID FROM spell_aura_options ORDER BY ID DESC"); // SpellAuraRestrictions.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_AURA_RESTRICTIONS, "SELECT ID, CasterAuraSpell, TargetAuraSpell, ExcludeCasterAuraSpell, " + - "ExcludeTargetAuraSpell, DifficultyID, CasterAuraState, TargetAuraState, ExcludeCasterAuraState, ExcludeTargetAuraState, SpellID" + + PrepareStatement(HotfixStatements.SEL_SPELL_AURA_RESTRICTIONS, "SELECT ID, CasterAuraSpell, TargetAuraSpell, ExcludeCasterAuraSpell, " + + "ExcludeTargetAuraSpell, DifficultyID, CasterAuraState, TargetAuraState, ExcludeCasterAuraState, ExcludeTargetAuraState, SpellID" + " FROM spell_aura_restrictions ORDER BY ID DESC"); // SpellCastTimes.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_CAST_TIMES, "SELECT ID, CastTime, MinCastTime, CastTimePerLevel FROM spell_cast_times ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SPELL_CAST_TIMES, "SELECT ID, Base, Minimum, PerLevel FROM spell_cast_times ORDER BY ID DESC"); // SpellCastingRequirements.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_CASTING_REQUIREMENTS, "SELECT ID, SpellID, MinFactionID, RequiredAreasID, RequiresSpellFocus, " + + PrepareStatement(HotfixStatements.SEL_SPELL_CASTING_REQUIREMENTS, "SELECT ID, SpellID, MinFactionID, RequiredAreasID, RequiresSpellFocus, " + "FacingCasterFlags, MinReputation, RequiredAuraVision FROM spell_casting_requirements ORDER BY ID DESC"); // SpellCategories.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_CATEGORIES, "SELECT ID, Category, StartRecoveryCategory, ChargeCategory, DifficultyID, DefenseType, DispelType, " + + PrepareStatement(HotfixStatements.SEL_SPELL_CATEGORIES, "SELECT ID, Category, StartRecoveryCategory, ChargeCategory, DifficultyID, DefenseType, DispelType, " + "Mechanic, PreventionType, SpellID FROM spell_categories ORDER BY ID DESC"); // SpellCategory.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_CATEGORY, "SELECT ID, Name, ChargeRecoveryTime, Flags, UsesPerWeek, MaxCharges, ChargeCategoryType" + - " FROM spell_category ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SPELL_CATEGORY, "SELECT ID, Name, ChargeRecoveryTime, Flags, UsesPerWeek, MaxCharges, TypeMask FROM spell_category" + + " ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_SPELL_CATEGORY_LOCALE, "SELECT ID, Name_lang FROM spell_category_locale WHERE locale = ?"); // SpellClassOptions.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_CLASS_OPTIONS, "SELECT ID, SpellID, SpellClassMask1, SpellClassMask2, SpellClassMask3, SpellClassMask4, " + + PrepareStatement(HotfixStatements.SEL_SPELL_CLASS_OPTIONS, "SELECT ID, SpellID, SpellClassMask1, SpellClassMask2, SpellClassMask3, SpellClassMask4, " + "SpellClassSet, ModalNextSpell FROM spell_class_options ORDER BY ID DESC"); // SpellCooldowns.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_COOLDOWNS, "SELECT ID, CategoryRecoveryTime, RecoveryTime, StartRecoveryTime, DifficultyID, SpellID" + + PrepareStatement(HotfixStatements.SEL_SPELL_COOLDOWNS, "SELECT ID, CategoryRecoveryTime, RecoveryTime, StartRecoveryTime, DifficultyID, SpellID" + " FROM spell_cooldowns ORDER BY ID DESC"); // SpellDuration.db2 PrepareStatement(HotfixStatements.SEL_SPELL_DURATION, "SELECT ID, Duration, MaxDuration, DurationPerLevel FROM spell_duration ORDER BY ID DESC"); // SpellEffect.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_EFFECT, "SELECT ID, Effect, EffectBasePoints, EffectIndex, EffectAura, DifficultyID, EffectAmplitude, " + - "EffectAuraPeriod, EffectBonusCoefficient, EffectChainAmplitude, EffectChainTargets, EffectDieSides, EffectItemType, EffectMechanic, " + - "EffectPointsPerResource, EffectRealPointsPerLevel, EffectTriggerSpell, EffectPosFacing, EffectAttributes, BonusCoefficientFromAP, " + - "PvPMultiplier, Coefficient, Variance, ResourceCoefficient, GroupSizeCoefficient, EffectSpellClassMask1, EffectSpellClassMask2, " + - "EffectSpellClassMask3, EffectSpellClassMask4, EffectMiscValue, EffectMiscValueB, EffectRadiusIndex, EffectRadiusMaxIndex, ImplicitTarget1, " + + PrepareStatement(HotfixStatements.SEL_SPELL_EFFECT, "SELECT ID, Effect, EffectBasePoints, EffectIndex, EffectAura, DifficultyID, EffectAmplitude, " + + "EffectAuraPeriod, EffectBonusCoefficient, EffectChainAmplitude, EffectChainTargets, EffectDieSides, EffectItemType, EffectMechanic, " + + "EffectPointsPerResource, EffectRealPointsPerLevel, EffectTriggerSpell, EffectPosFacing, EffectAttributes, BonusCoefficientFromAP, " + + "PvpMultiplier, Coefficient, Variance, ResourceCoefficient, GroupSizeBasePointsCoefficient, EffectSpellClassMask1, EffectSpellClassMask2, " + + "EffectSpellClassMask3, EffectSpellClassMask4, EffectMiscValue1, EffectMiscValue2, EffectRadiusIndex1, EffectRadiusIndex2, ImplicitTarget1, " + "ImplicitTarget2, SpellID FROM spell_effect ORDER BY ID DESC"); // SpellEquippedItems.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_EQUIPPED_ITEMS, "SELECT ID, SpellID, EquippedItemInventoryTypeMask, EquippedItemSubClassMask, " + - "EquippedItemClass FROM spell_equipped_items ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SPELL_EQUIPPED_ITEMS, "SELECT ID, SpellID, EquippedItemInvTypes, EquippedItemSubclass, EquippedItemClass" + + " FROM spell_equipped_items ORDER BY ID DESC"); // SpellFocusObject.db2 PrepareStatement(HotfixStatements.SEL_SPELL_FOCUS_OBJECT, "SELECT ID, Name FROM spell_focus_object ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_SPELL_FOCUS_OBJECT_LOCALE, "SELECT ID, Name_lang FROM spell_focus_object_locale WHERE locale = ?"); // SpellInterrupts.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_INTERRUPTS, "SELECT ID, DifficultyID, InterruptFlags, AuraInterruptFlags1, AuraInterruptFlags2, " + + PrepareStatement(HotfixStatements.SEL_SPELL_INTERRUPTS, "SELECT ID, DifficultyID, InterruptFlags, AuraInterruptFlags1, AuraInterruptFlags2, " + "ChannelInterruptFlags1, ChannelInterruptFlags2, SpellID FROM spell_interrupts ORDER BY ID DESC"); // SpellItemEnchantment.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_ITEM_ENCHANTMENT, "SELECT ID, Name, EffectSpellID1, EffectSpellID2, EffectSpellID3, EffectScalingPoints1, " + - "EffectScalingPoints2, EffectScalingPoints3, TransmogCost, TextureFileDataID, EffectPointsMin1, EffectPointsMin2, EffectPointsMin3, " + - "ItemVisual, Flags, RequiredSkillID, RequiredSkillRank, ItemLevel, Charges, Effect1, Effect2, Effect3, ConditionID, MinLevel, MaxLevel, " + - "ScalingClass, ScalingClassRestricted, PlayerConditionID FROM spell_item_enchantment ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SPELL_ITEM_ENCHANTMENT, "SELECT ID, Name, EffectArg1, EffectArg2, EffectArg3, EffectScalingPoints1, " + + "EffectScalingPoints2, EffectScalingPoints3, TransmogCost, IconFileDataID, EffectPointsMin1, EffectPointsMin2, EffectPointsMin3, ItemVisual, " + + "Flags, RequiredSkillID, RequiredSkillRank, ItemLevel, Charges, Effect1, Effect2, Effect3, ConditionID, MinLevel, MaxLevel, ScalingClass, " + + "ScalingClassRestricted, TransmogPlayerConditionID FROM spell_item_enchantment ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_SPELL_ITEM_ENCHANTMENT_LOCALE, "SELECT ID, Name_lang FROM spell_item_enchantment_locale WHERE locale = ?"); // SpellItemEnchantmentCondition.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_ITEM_ENCHANTMENT_CONDITION, "SELECT ID, LTOperand1, LTOperand2, LTOperand3, LTOperand4, LTOperand5, " + - "LTOperandType1, LTOperandType2, LTOperandType3, LTOperandType4, LTOperandType5, Operator1, Operator2, Operator3, Operator4, Operator5, " + - "RTOperandType1, RTOperandType2, RTOperandType3, RTOperandType4, RTOperandType5, RTOperand1, RTOperand2, RTOperand3, RTOperand4, RTOperand5, " + + PrepareStatement(HotfixStatements.SEL_SPELL_ITEM_ENCHANTMENT_CONDITION, "SELECT ID, LtOperand1, LtOperand2, LtOperand3, LtOperand4, LtOperand5, " + + "LtOperandType1, LtOperandType2, LtOperandType3, LtOperandType4, LtOperandType5, Operator1, Operator2, Operator3, Operator4, Operator5, " + + "RtOperandType1, RtOperandType2, RtOperandType3, RtOperandType4, RtOperandType5, RtOperand1, RtOperand2, RtOperand3, RtOperand4, RtOperand5, " + "Logic1, Logic2, Logic3, Logic4, Logic5 FROM spell_item_enchantment_condition ORDER BY ID DESC"); // SpellLearnSpell.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_LEARN_SPELL, "SELECT ID, LearnSpellID, SpellID, OverridesSpellID FROM spell_learn_spell ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SPELL_LEARN_SPELL, "SELECT ID, SpellID, LearnSpellID, OverridesSpellID FROM spell_learn_spell ORDER BY ID DESC"); // SpellLevels.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_LEVELS, "SELECT ID, BaseLevel, MaxLevel, SpellLevel, DifficultyID, MaxUsableLevel, SpellID FROM spell_levels" + - " ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SPELL_LEVELS, "SELECT ID, BaseLevel, MaxLevel, SpellLevel, DifficultyID, MaxPassiveAuraLevel, SpellID" + + " FROM spell_levels ORDER BY ID DESC"); // SpellMisc.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_MISC, "SELECT ID, CastingTimeIndex, DurationIndex, RangeIndex, SchoolMask, IconFileDataID, Speed, " + - "ActiveIconFileDataID, MultistrikeSpeedMod, DifficultyID, Attributes, AttributesEx, AttributesExB, AttributesExC, AttributesExD, " + - "AttributesExE, AttributesExF, AttributesExG, AttributesExH, AttributesExI, AttributesExJ, AttributesExK, AttributesExL, AttributesExM, " + - "SpellID FROM spell_misc ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SPELL_MISC, "SELECT ID, CastingTimeIndex, DurationIndex, RangeIndex, SchoolMask, SpellIconFileDataID, Speed, " + + "ActiveIconFileDataID, LaunchDelay, DifficultyID, Attributes1, Attributes2, Attributes3, Attributes4, Attributes5, Attributes6, Attributes7, " + + "Attributes8, Attributes9, Attributes10, Attributes11, Attributes12, Attributes13, Attributes14, SpellID FROM spell_misc ORDER BY ID DESC"); // SpellPower.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_POWER, "SELECT ManaCost, ManaCostPercentage, ManaCostPercentagePerSecond, RequiredAura, HealthCostPercentage, " + - "PowerIndex, PowerType, ID, ManaCostPerLevel, ManaCostPerSecond, ManaCostAdditional, PowerDisplayID, UnitPowerBarID, SpellID FROM spell_power" + - " ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SPELL_POWER, "SELECT ManaCost, PowerCostPct, PowerPctPerSecond, RequiredAuraSpellID, PowerCostMaxPct, OrderIndex, " + + "PowerType, ID, ManaCostPerLevel, ManaPerSecond, OptionalCost, PowerDisplayID, AltPowerBarID, SpellID FROM spell_power ORDER BY ID DESC"); // SpellPowerDifficulty.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_POWER_DIFFICULTY, "SELECT DifficultyID, PowerIndex, ID FROM spell_power_difficulty ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SPELL_POWER_DIFFICULTY, "SELECT DifficultyID, OrderIndex, ID FROM spell_power_difficulty ORDER BY ID DESC"); // SpellProcsPerMinute.db2 PrepareStatement(HotfixStatements.SEL_SPELL_PROCS_PER_MINUTE, "SELECT ID, BaseProcRate, Flags FROM spell_procs_per_minute ORDER BY ID DESC"); // SpellProcsPerMinuteMod.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_PROCS_PER_MINUTE_MOD, "SELECT ID, Coeff, Param, Type, SpellProcsPerMinuteID FROM spell_procs_per_minute_mod" + + PrepareStatement(HotfixStatements.SEL_SPELL_PROCS_PER_MINUTE_MOD, "SELECT ID, Coeff, Param, Type, SpellProcsPerMinuteID FROM spell_procs_per_minute_mod" + " ORDER BY ID DESC"); // SpellRadius.db2 PrepareStatement(HotfixStatements.SEL_SPELL_RADIUS, "SELECT ID, Radius, RadiusPerLevel, RadiusMin, RadiusMax FROM spell_radius ORDER BY ID DESC"); // SpellRange.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_RANGE, "SELECT ID, DisplayName, DisplayNameShort, MinRangeHostile, MinRangeFriend, MaxRangeHostile, " + - "MaxRangeFriend, Flags FROM spell_range ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SPELL_RANGE, "SELECT ID, DisplayName, DisplayNameShort, RangeMin1, RangeMin2, RangeMax1, RangeMax2, Flags" + + " FROM spell_range ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_SPELL_RANGE_LOCALE, "SELECT ID, DisplayName_lang, DisplayNameShort_lang FROM spell_range_locale WHERE locale = ?"); // SpellReagents.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_REAGENTS, "SELECT ID, SpellID, Reagent1, Reagent2, Reagent3, Reagent4, Reagent5, Reagent6, Reagent7, Reagent8, " + - "ReagentCount1, ReagentCount2, ReagentCount3, ReagentCount4, ReagentCount5, ReagentCount6, ReagentCount7, ReagentCount8 FROM spell_reagents" + + PrepareStatement(HotfixStatements.SEL_SPELL_REAGENTS, "SELECT ID, SpellID, Reagent1, Reagent2, Reagent3, Reagent4, Reagent5, Reagent6, Reagent7, Reagent8, " + + "ReagentCount1, ReagentCount2, ReagentCount3, ReagentCount4, ReagentCount5, ReagentCount6, ReagentCount7, ReagentCount8 FROM spell_reagents" + " ORDER BY ID DESC"); // SpellScaling.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_SCALING, "SELECT ID, SpellID, ScalesFromItemLevel, ScalingClass, MinScalingLevel, MaxScalingLevel" + - " FROM spell_scaling ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SPELL_SCALING, "SELECT ID, SpellID, ScalesFromItemLevel, Class, MinScalingLevel, MaxScalingLevel FROM spell_scaling" + + " ORDER BY ID DESC"); // SpellShapeshift.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_SHAPESHIFT, "SELECT ID, SpellID, ShapeshiftExclude1, ShapeshiftExclude2, ShapeshiftMask1, ShapeshiftMask2, " + + PrepareStatement(HotfixStatements.SEL_SPELL_SHAPESHIFT, "SELECT ID, SpellID, ShapeshiftExclude1, ShapeshiftExclude2, ShapeshiftMask1, ShapeshiftMask2, " + "StanceBarOrder FROM spell_shapeshift ORDER BY ID DESC"); // SpellShapeshiftForm.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_SHAPESHIFT_FORM, "SELECT ID, Name, WeaponDamageVariance, Flags, CombatRoundTime, MountTypeID, CreatureType, " + - "BonusActionBar, AttackIconFileDataID, CreatureDisplayID1, CreatureDisplayID2, CreatureDisplayID3, CreatureDisplayID4, PresetSpellID1, " + - "PresetSpellID2, PresetSpellID3, PresetSpellID4, PresetSpellID5, PresetSpellID6, PresetSpellID7, PresetSpellID8 FROM spell_shapeshift_form" + + PrepareStatement(HotfixStatements.SEL_SPELL_SHAPESHIFT_FORM, "SELECT ID, Name, DamageVariance, Flags, CombatRoundTime, MountTypeID, CreatureType, " + + "BonusActionBar, AttackIconFileID, CreatureDisplayID1, CreatureDisplayID2, CreatureDisplayID3, CreatureDisplayID4, PresetSpellID1, " + + "PresetSpellID2, PresetSpellID3, PresetSpellID4, PresetSpellID5, PresetSpellID6, PresetSpellID7, PresetSpellID8 FROM spell_shapeshift_form" + " ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_SPELL_SHAPESHIFT_FORM_LOCALE, "SELECT ID, Name_lang FROM spell_shapeshift_form_locale WHERE locale = ?"); // SpellTargetRestrictions.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_TARGET_RESTRICTIONS, "SELECT ID, ConeAngle, Width, Targets, TargetCreatureType, DifficultyID, " + - "MaxAffectedTargets, MaxTargetLevel, SpellID FROM spell_target_restrictions ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SPELL_TARGET_RESTRICTIONS, "SELECT ID, ConeDegrees, Width, Targets, TargetCreatureType, DifficultyID, MaxTargets, " + + "MaxTargetLevel, SpellID FROM spell_target_restrictions ORDER BY ID DESC"); // SpellTotems.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_TOTEMS, "SELECT ID, SpellID, Totem1, Totem2, RequiredTotemCategoryID1, RequiredTotemCategoryID2" + + PrepareStatement(HotfixStatements.SEL_SPELL_TOTEMS, "SELECT ID, SpellID, Totem1, Totem2, RequiredTotemCategoryID1, RequiredTotemCategoryID2" + " FROM spell_totems ORDER BY ID DESC"); // SpellXSpellVisual.db2 - PrepareStatement(HotfixStatements.SEL_SPELL_X_SPELL_VISUAL, "SELECT SpellVisualID, ID, Chance, CasterPlayerConditionID, CasterUnitConditionID, " + - "PlayerConditionID, UnitConditionID, IconFileDataID, ActiveIconFileDataID, Flags, DifficultyID, Priority, SpellID FROM spell_x_spell_visual" + - " ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SPELL_X_SPELL_VISUAL, "SELECT SpellVisualID, ID, Probability, CasterPlayerConditionID, CasterUnitConditionID, " + + "ViewerPlayerConditionID, ViewerUnitConditionID, SpellIconFileID, ActiveIconFileID, Flags, DifficultyID, Priority, SpellID" + + " FROM spell_x_spell_visual ORDER BY ID DESC"); // SummonProperties.db2 - PrepareStatement(HotfixStatements.SEL_SUMMON_PROPERTIES, "SELECT ID, Flags, Category, Faction, Type, Slot FROM summon_properties ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_SUMMON_PROPERTIES, "SELECT ID, Flags, Control, Faction, Title, Slot FROM summon_properties ORDER BY ID DESC"); // TactKey.db2 - PrepareStatement(HotfixStatements.SEL_TACT_KEY, "SELECT ID, Key1, Key2, Key3, Key4, Key5, Key6, Key7, Key8, Key9, Key10, Key11, Key12, Key13, Key14, Key15, " + + PrepareStatement(HotfixStatements.SEL_TACT_KEY, "SELECT ID, Key1, Key2, Key3, Key4, Key5, Key6, Key7, Key8, Key9, Key10, Key11, Key12, Key13, Key14, Key15, " + "Key16 FROM tact_key ORDER BY ID DESC"); // Talent.db2 - PrepareStatement(HotfixStatements.SEL_TALENT, "SELECT ID, Description, SpellID, OverridesSpellID, SpecID, TierID, ColumnIndex, Flags, CategoryMask1, " + + PrepareStatement(HotfixStatements.SEL_TALENT, "SELECT ID, Description, SpellID, OverridesSpellID, SpecID, TierID, ColumnIndex, Flags, CategoryMask1, " + "CategoryMask2, ClassID FROM talent ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_TALENT_LOCALE, "SELECT ID, Description_lang FROM talent_locale WHERE locale = ?"); // TaxiNodes.db2 - PrepareStatement(HotfixStatements.SEL_TAXI_NODES, "SELECT ID, Name, PosX, PosY, PosZ, MountCreatureID1, MountCreatureID2, MapOffsetX, MapOffsetY, Unk730, " + - "FlightMapOffsetX, FlightMapOffsetY, MapID, ConditionID, LearnableIndex, Flags, UiTextureKitPrefixID, SpecialAtlasIconPlayerConditionID" + + PrepareStatement(HotfixStatements.SEL_TAXI_NODES, "SELECT ID, Name, PosX, PosY, PosZ, MountCreatureID1, MountCreatureID2, MapOffsetX, MapOffsetY, Facing, " + + "FlightMapOffsetX, FlightMapOffsetY, ContinentID, ConditionID, CharacterBitNumber, Flags, UiTextureKitID, SpecialIconConditionID" + " FROM taxi_nodes ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_TAXI_NODES_LOCALE, "SELECT ID, Name_lang FROM taxi_nodes_locale WHERE locale = ?"); // TaxiPath.db2 - PrepareStatement(HotfixStatements.SEL_TAXI_PATH, "SELECT `From`, `To`, ID, Cost FROM taxi_path ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_TAXI_PATH, "SELECT FromTaxiNode, ToTaxiNode, ID, Cost FROM taxi_path ORDER BY ID DESC"); // TaxiPathNode.db2 - PrepareStatement(HotfixStatements.SEL_TAXI_PATH_NODE, "SELECT LocX, LocY, LocZ, PathID, MapID, NodeIndex, ID, Flags, Delay, ArrivalEventID, " + + PrepareStatement(HotfixStatements.SEL_TAXI_PATH_NODE, "SELECT LocX, LocY, LocZ, PathID, ContinentID, NodeIndex, ID, Flags, Delay, ArrivalEventID, " + "DepartureEventID FROM taxi_path_node ORDER BY ID DESC"); // TotemCategory.db2 - PrepareStatement(HotfixStatements.SEL_TOTEM_CATEGORY, "SELECT ID, Name, CategoryMask, CategoryType FROM totem_category ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_TOTEM_CATEGORY, "SELECT ID, Name, TotemCategoryMask, TotemCategoryType FROM totem_category ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_TOTEM_CATEGORY_LOCALE, "SELECT ID, Name_lang FROM totem_category_locale WHERE locale = ?"); // Toy.db2 - PrepareStatement(HotfixStatements.SEL_TOY, "SELECT Description, ItemID, Flags, CategoryFilter, ID FROM toy ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_TOY_LOCALE, "SELECT ID, Description_lang FROM toy_locale WHERE locale = ?"); + PrepareStatement(HotfixStatements.SEL_TOY, "SELECT SourceText, ItemID, Flags, SourceTypeEnum, ID FROM toy ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_TOY_LOCALE, "SELECT ID, SourceText_lang FROM toy_locale WHERE locale = ?"); // TransmogHoliday.db2 - PrepareStatement(HotfixStatements.SEL_TRANSMOG_HOLIDAY, "SELECT ID, HolidayID FROM transmog_holiday ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_TRANSMOG_HOLIDAY, "SELECT ID, RequiredTransmogHoliday FROM transmog_holiday ORDER BY ID DESC"); // TransmogSet.db2 - PrepareStatement(HotfixStatements.SEL_TRANSMOG_SET, "SELECT Name, BaseSetID, UIOrder, ExpansionID, ID, Flags, QuestID, ClassMask, ItemNameDescriptionID, " + - "TransmogSetGroupID FROM transmog_set ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_TRANSMOG_SET, "SELECT Name, ParentTransmogSetID, UiOrder, ExpansionID, ID, Flags, TrackingQuestID, ClassMask, " + + "ItemNameDescriptionID, TransmogSetGroupID FROM transmog_set ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_TRANSMOG_SET_LOCALE, "SELECT ID, Name_lang FROM transmog_set_locale WHERE locale = ?"); // TransmogSetGroup.db2 - PrepareStatement(HotfixStatements.SEL_TRANSMOG_SET_GROUP, "SELECT Label, ID FROM transmog_set_group ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_TRANSMOG_SET_GROUP_LOCALE, "SELECT ID, Label_lang FROM transmog_set_group_locale WHERE locale = ?"); + PrepareStatement(HotfixStatements.SEL_TRANSMOG_SET_GROUP, "SELECT Name, ID FROM transmog_set_group ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_TRANSMOG_SET_GROUP_LOCALE, "SELECT ID, Name_lang FROM transmog_set_group_locale WHERE locale = ?"); // TransmogSetItem.db2 PrepareStatement(HotfixStatements.SEL_TRANSMOG_SET_ITEM, "SELECT ID, TransmogSetID, ItemModifiedAppearanceID, Flags FROM transmog_set_item ORDER BY ID DESC"); // TransportAnimation.db2 - PrepareStatement(HotfixStatements.SEL_TRANSPORT_ANIMATION, "SELECT ID, TimeIndex, PosX, PosY, PosZ, SequenceID, TransportID FROM transport_animation" + + PrepareStatement(HotfixStatements.SEL_TRANSPORT_ANIMATION, "SELECT ID, TimeIndex, PosX, PosY, PosZ, SequenceID, TransportID FROM transport_animation" + " ORDER BY ID DESC"); // TransportRotation.db2 - PrepareStatement(HotfixStatements.SEL_TRANSPORT_ROTATION, "SELECT ID, TimeIndex, X, Y, Z, W, TransportID FROM transport_rotation ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_TRANSPORT_ROTATION, "SELECT ID, TimeIndex, Rot1, Rot2, Rot3, Rot4, GameObjectsID FROM transport_rotation" + + " ORDER BY ID DESC"); // UnitPowerBar.db2 - PrepareStatement(HotfixStatements.SEL_UNIT_POWER_BAR, "SELECT ID, Name, Cost, OutOfError, ToolTip, RegenerationPeace, RegenerationCombat, FileDataID1, " + - "FileDataID2, FileDataID3, FileDataID4, FileDataID5, FileDataID6, Color1, Color2, Color3, Color4, Color5, Color6, StartInset, EndInset, " + + PrepareStatement(HotfixStatements.SEL_UNIT_POWER_BAR, "SELECT ID, Name, Cost, OutOfError, ToolTip, RegenerationPeace, RegenerationCombat, FileDataID1, " + + "FileDataID2, FileDataID3, FileDataID4, FileDataID5, FileDataID6, Color1, Color2, Color3, Color4, Color5, Color6, StartInset, EndInset, " + "StartPower, Flags, CenterPower, BarType, MinPower, MaxPower FROM unit_power_bar ORDER BY ID DESC"); - PrepareStatement(HotfixStatements.SEL_UNIT_POWER_BAR_LOCALE, "SELECT ID, Name_lang, Cost_lang, OutOfError_lang, ToolTip_lang FROM unit_power_bar_locale" + + PrepareStatement(HotfixStatements.SEL_UNIT_POWER_BAR_LOCALE, "SELECT ID, Name_lang, Cost_lang, OutOfError_lang, ToolTip_lang FROM unit_power_bar_locale" + " WHERE locale = ?"); // Vehicle.db2 - PrepareStatement(HotfixStatements.SEL_VEHICLE, "SELECT ID, Flags, TurnSpeed, PitchSpeed, PitchMin, PitchMax, MouseLookOffsetPitch, CameraFadeDistScalarMin, " + - "CameraFadeDistScalarMax, CameraPitchOffset, FacingLimitRight, FacingLimitLeft, CameraYawOffset, SeatID1, SeatID2, SeatID3, SeatID4, SeatID5, " + - "SeatID6, SeatID7, SeatID8, VehicleUIIndicatorID, PowerDisplayID1, PowerDisplayID2, PowerDisplayID3, FlagsB, UILocomotionType, " + + PrepareStatement(HotfixStatements.SEL_VEHICLE, "SELECT ID, Flags, TurnSpeed, PitchSpeed, PitchMin, PitchMax, MouseLookOffsetPitch, CameraFadeDistScalarMin, " + + "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"); // VehicleSeat.db2 - PrepareStatement(HotfixStatements.SEL_VEHICLE_SEAT, "SELECT ID, Flags1, Flags2, Flags3, AttachmentOffsetX, AttachmentOffsetY, AttachmentOffsetZ, " + - "EnterPreDelay, EnterSpeed, EnterGravity, EnterMinDuration, EnterMaxDuration, EnterMinArcHeight, EnterMaxArcHeight, ExitPreDelay, ExitSpeed, " + - "ExitGravity, ExitMinDuration, ExitMaxDuration, ExitMinArcHeight, ExitMaxArcHeight, PassengerYaw, PassengerPitch, PassengerRoll, " + - "VehicleEnterAnimDelay, VehicleExitAnimDelay, CameraEnteringDelay, CameraEnteringDuration, CameraExitingDelay, CameraExitingDuration, " + - "CameraOffsetX, CameraOffsetY, CameraOffsetZ, CameraPosChaseRate, CameraFacingChaseRate, CameraEnteringZoom, CameraSeatZoomMin, " + - "CameraSeatZoomMax, UISkinFileDataID, EnterAnimStart, EnterAnimLoop, RideAnimStart, RideAnimLoop, RideUpperAnimStart, RideUpperAnimLoop, " + - "ExitAnimStart, ExitAnimLoop, ExitAnimEnd, VehicleEnterAnim, VehicleExitAnim, VehicleRideAnimLoop, EnterAnimKitID, RideAnimKitID, " + - "ExitAnimKitID, VehicleEnterAnimKitID, VehicleRideAnimKitID, VehicleExitAnimKitID, CameraModeID, AttachmentID, PassengerAttachmentID, " + - "VehicleEnterAnimBone, VehicleExitAnimBone, VehicleRideAnimLoopBone, VehicleAbilityDisplay, EnterUISoundID, ExitUISoundID FROM vehicle_seat" + + PrepareStatement(HotfixStatements.SEL_VEHICLE_SEAT, "SELECT ID, Flags, FlagsB, FlagsC, AttachmentOffsetX, AttachmentOffsetY, AttachmentOffsetZ, " + + "EnterPreDelay, EnterSpeed, EnterGravity, EnterMinDuration, EnterMaxDuration, EnterMinArcHeight, EnterMaxArcHeight, ExitPreDelay, ExitSpeed, " + + "ExitGravity, ExitMinDuration, ExitMaxDuration, ExitMinArcHeight, ExitMaxArcHeight, PassengerYaw, PassengerPitch, PassengerRoll, " + + "VehicleEnterAnimDelay, VehicleExitAnimDelay, CameraEnteringDelay, CameraEnteringDuration, CameraExitingDelay, CameraExitingDuration, " + + "CameraOffsetX, CameraOffsetY, CameraOffsetZ, CameraPosChaseRate, CameraFacingChaseRate, CameraEnteringZoom, CameraSeatZoomMin, " + + "CameraSeatZoomMax, UiSkinFileDataID, EnterAnimStart, EnterAnimLoop, RideAnimStart, RideAnimLoop, RideUpperAnimStart, RideUpperAnimLoop, " + + "ExitAnimStart, ExitAnimLoop, ExitAnimEnd, VehicleEnterAnim, VehicleExitAnim, VehicleRideAnimLoop, EnterAnimKitID, RideAnimKitID, " + + "ExitAnimKitID, VehicleEnterAnimKitID, VehicleRideAnimKitID, VehicleExitAnimKitID, CameraModeID, AttachmentID, PassengerAttachmentID, " + + "VehicleEnterAnimBone, VehicleExitAnimBone, VehicleRideAnimLoopBone, VehicleAbilityDisplay, EnterUISoundID, ExitUISoundID FROM vehicle_seat" + " ORDER BY ID DESC"); // WmoAreaTable.db2 - PrepareStatement(HotfixStatements.SEL_WMO_AREA_TABLE, "SELECT AreaName, WMOGroupID, AmbienceID, ZoneMusic, IntroSound, AreaTableID, UWIntroSound, " + - "UWAmbience, NameSet, SoundProviderPref, SoundProviderPrefUnderwater, Flags, ID, UWZoneMusic, WMOID FROM wmo_area_table ORDER BY ID DESC"); + PrepareStatement(HotfixStatements.SEL_WMO_AREA_TABLE, "SELECT AreaName, WmoGroupID, AmbienceID, ZoneMusic, IntroSound, AreaTableID, UwIntroSound, " + + "UwAmbience, NameSetID, SoundProviderPref, SoundProviderPrefUnderwater, Flags, ID, UwZoneMusic, WmoID FROM wmo_area_table ORDER BY ID DESC"); PrepareStatement(HotfixStatements.SEL_WMO_AREA_TABLE_LOCALE, "SELECT ID, AreaName_lang FROM wmo_area_table_locale WHERE locale = ?"); // WorldEffect.db2 - PrepareStatement(HotfixStatements.SEL_WORLD_EFFECT, "SELECT ID, TargetAsset, CombatConditionID, TargetType, WhenToDisplay, QuestFeedbackEffectID, " + + PrepareStatement(HotfixStatements.SEL_WORLD_EFFECT, "SELECT ID, TargetAsset, CombatConditionID, TargetType, WhenToDisplay, QuestFeedbackEffectID, " + "PlayerConditionID FROM world_effect ORDER BY ID DESC"); // WorldMapArea.db2 - PrepareStatement(HotfixStatements.SEL_WORLD_MAP_AREA, "SELECT AreaName, LocLeft, LocRight, LocTop, LocBottom, Flags, MapID, AreaID, DisplayMapID, " + - "DefaultDungeonFloor, ParentWorldMapID, LevelRangeMin, LevelRangeMax, BountySetID, BountyBoardLocation, ID, PlayerConditionID" + + PrepareStatement(HotfixStatements.SEL_WORLD_MAP_AREA, "SELECT AreaName, LocLeft, LocRight, LocTop, LocBottom, Flags, MapID, AreaID, DisplayMapID, " + + "DefaultDungeonFloor, ParentWorldMapID, LevelRangeMin, LevelRangeMax, BountySetID, BountyDisplayLocation, ID, VisibilityPlayerConditionID" + " FROM world_map_area ORDER BY ID DESC"); // WorldMapOverlay.db2 - PrepareStatement(HotfixStatements.SEL_WORLD_MAP_OVERLAY, "SELECT TextureName, ID, TextureWidth, TextureHeight, MapAreaID, AreaID1, AreaID2, AreaID3, " + - "AreaID4, OffsetX, OffsetY, HitRectTop, HitRectLeft, HitRectBottom, HitRectRight, PlayerConditionID, Flags FROM world_map_overlay" + + PrepareStatement(HotfixStatements.SEL_WORLD_MAP_OVERLAY, "SELECT TextureName, ID, TextureWidth, TextureHeight, MapAreaID, OffsetX, OffsetY, HitRectTop, " + + "HitRectLeft, HitRectBottom, HitRectRight, PlayerConditionID, Flags, AreaID1, AreaID2, AreaID3, AreaID4 FROM world_map_overlay" + " ORDER BY ID DESC"); // WorldMapTransforms.db2 - PrepareStatement(HotfixStatements.SEL_WORLD_MAP_TRANSFORMS, "SELECT ID, RegionMinX, RegionMinY, RegionMinZ, RegionMaxX, RegionMaxY, RegionMaxZ, " + - "RegionOffsetX, RegionOffsetY, RegionScale, MapID, AreaID, NewMapID, NewDungeonMapID, NewAreaID, Flags, Priority FROM world_map_transforms" + + PrepareStatement(HotfixStatements.SEL_WORLD_MAP_TRANSFORMS, "SELECT ID, RegionMinX, RegionMinY, RegionMinZ, RegionMaxX, RegionMaxY, RegionMaxZ, " + + "RegionOffsetX, RegionOffsetY, RegionScale, MapID, AreaID, NewMapID, NewDungeonMapID, NewAreaID, Flags, Priority FROM world_map_transforms" + " ORDER BY ID DESC"); // WorldSafeLocs.db2 @@ -1182,7 +1181,6 @@ namespace Framework.Database SEL_EMOTES, SEL_EMOTES_TEXT, - SEL_EMOTES_TEXT_LOCALE, SEL_EMOTES_TEXT_SOUND, @@ -1191,11 +1189,11 @@ namespace Framework.Database SEL_FACTION_TEMPLATE, + SEL_GAMEOBJECT_DISPLAY_INFO, + SEL_GAMEOBJECTS, SEL_GAMEOBJECTS_LOCALE, - SEL_GAMEOBJECT_DISPLAY_INFO, - SEL_GARR_ABILITY, SEL_GARR_ABILITY_LOCALE, @@ -1218,7 +1216,6 @@ namespace Framework.Database SEL_GARR_PLOT_BUILDING, SEL_GARR_PLOT_INSTANCE, - SEL_GARR_PLOT_INSTANCE_LOCALE, SEL_GARR_SITE_LEVEL, @@ -1341,7 +1338,6 @@ namespace Framework.Database SEL_LIGHT, SEL_LIQUID_TYPE, - SEL_LIQUID_TYPE_LOCALE, SEL_LOCK, @@ -1368,7 +1364,6 @@ namespace Framework.Database SEL_MOVIE, SEL_NAME_GEN, - SEL_NAME_GEN_LOCALE, SEL_NAMES_PROFANITY, diff --git a/Source/Game/Achievements/AchievementManager.cs b/Source/Game/Achievements/AchievementManager.cs index 10b52360d..67b33750a 100644 --- a/Source/Game/Achievements/AchievementManager.cs +++ b/Source/Game/Achievements/AchievementManager.cs @@ -69,7 +69,7 @@ namespace Game.Achievements return false; } - if (achievement.MapID != -1 && referencePlayer.GetMapId() != achievement.MapID) + if (achievement.InstanceID != -1 && referencePlayer.GetMapId() != achievement.InstanceID) { Log.outTrace(LogFilter.Achievement, "CanUpdateCriteriaTree: (Id: {0} Type {1} Achievement {2}) Wrong map", criteria.ID, criteria.Entry.Type, achievement.Id); @@ -157,14 +157,14 @@ namespace Game.Achievements // Oddly, the target count is NOT contained in the achievement, but in each individual criteria if (entry.Flags.HasAnyFlag(AchievementFlags.Summ)) { - ulong progress = 0; + long progress = 0; CriteriaManager.WalkCriteriaTree(tree, criteriaTree => { if (criteriaTree.Criteria != null) { CriteriaProgress criteriaProgress = this.GetCriteriaProgress(criteriaTree.Criteria); if (criteriaProgress != null) - progress += criteriaProgress.Counter; + progress += (long)criteriaProgress.Counter; } }); return progress >= tree.Entry.Amount; @@ -1092,7 +1092,7 @@ namespace Game.Achievements // Once Bitten, Twice Shy (10 player) - Icecrown Citadel AchievementRecord achievement1 = CliDB.AchievementStorage.LookupByKey(4539); if (achievement1 != null) - achievement1.MapID = 631; // Correct map requirement (currently has Ulduar); 6.0.3 note - it STILL has ulduar requirement + achievement1.InstanceID = 631; // Correct map requirement (currently has Ulduar); 6.0.3 note - it STILL has ulduar requirement Log.outInfo(LogFilter.ServerLoading, "Loaded {0} achievement references in {1} ms.", count, Time.GetMSTimeDiffToNow(oldMSTime)); } diff --git a/Source/Game/Achievements/CriteriaHandler.cs b/Source/Game/Achievements/CriteriaHandler.cs index 84721d14c..c43002cb4 100644 --- a/Source/Game/Achievements/CriteriaHandler.cs +++ b/Source/Game/Achievements/CriteriaHandler.cs @@ -1181,7 +1181,7 @@ namespace Game.Achievements if (reqType == 0) return true; - uint reqValue = tree.Entry.Asset[0]; + uint reqValue = tree.Entry.Asset; switch ((CriteriaAdditionalCondition)reqType) { case CriteriaAdditionalCondition.ItemLevel: // 3 @@ -1485,8 +1485,8 @@ namespace Game.Achievements Dictionary scenarioCriteriaTreeIds = new Dictionary(); foreach (ScenarioStepRecord scenarioStep in CliDB.ScenarioStepStorage.Values) { - if (scenarioStep.CriteriaTreeID != 0) - scenarioCriteriaTreeIds[scenarioStep.CriteriaTreeID] = scenarioStep; + if (scenarioStep.CriteriaTreeId != 0) + scenarioCriteriaTreeIds[scenarioStep.CriteriaTreeId] = scenarioStep; } Dictionary questObjectiveCriteriaTreeIds = new Dictionary(); diff --git a/Source/Game/AuctionHouse/AuctionManager.cs b/Source/Game/AuctionHouse/AuctionManager.cs index 117b678b0..262fef669 100644 --- a/Source/Game/AuctionHouse/AuctionManager.cs +++ b/Source/Game/AuctionHouse/AuctionManager.cs @@ -43,9 +43,9 @@ namespace Game FactionTemplateRecord uEntry = CliDB.FactionTemplateStorage.LookupByKey(factionTemplateId); if (uEntry == null) return mNeutralAuctions; - else if ((uEntry.Mask & (int)FactionMasks.Alliance) != 0) + else if ((uEntry.FactionGroup & (int)FactionMasks.Alliance) != 0) return mAllianceAuctions; - else if ((uEntry.Mask & (int)FactionMasks.Horde) != 0) + else if ((uEntry.FactionGroup & (int)FactionMasks.Horde) != 0) return mHordeAuctions; else return mNeutralAuctions; @@ -387,9 +387,9 @@ namespace Game FactionTemplateRecord u_entry = CliDB.FactionTemplateStorage.LookupByKey(factionTemplateId); if (u_entry == null) houseid = 7; // goblin auction house - else if ((u_entry.Mask & (int)FactionMasks.Alliance) != 0) + else if ((u_entry.FactionGroup & (int)FactionMasks.Alliance) != 0) houseid = 1; // human auction house - else if ((u_entry.Mask & (int)FactionMasks.Horde) != 0) + else if ((u_entry.FactionGroup & (int)FactionMasks.Horde) != 0) houseid = 6; // orc auction house else houseid = 7; // goblin auction house diff --git a/Source/Game/BattlePets/BattlePetManager.cs b/Source/Game/BattlePets/BattlePetManager.cs index f20a03471..e36dd8030 100644 --- a/Source/Game/BattlePets/BattlePetManager.cs +++ b/Source/Game/BattlePets/BattlePetManager.cs @@ -45,20 +45,20 @@ namespace Game.BattlePets if (!result.IsEmpty()) Global.ObjectMgr.GetGenerator(HighGuid.BattlePet).Set(result.Read(0) + 1); - foreach (var breedState in CliDB.BattlePetBreedStateStorage.Values) + foreach (var battlePetBreedState in CliDB.BattlePetBreedStateStorage.Values) { - if (!_battlePetBreedStates.ContainsKey(breedState.BreedID)) - _battlePetBreedStates[breedState.BreedID] = new Dictionary(); + if (!_battlePetBreedStates.ContainsKey(battlePetBreedState.BattlePetBreedID)) + _battlePetBreedStates[battlePetBreedState.BattlePetBreedID] = new Dictionary(); - _battlePetBreedStates[breedState.BreedID][(BattlePetState)breedState.State] = breedState.Value; + _battlePetBreedStates[battlePetBreedState.BattlePetBreedID][(BattlePetState)battlePetBreedState.BattlePetStateID] = battlePetBreedState.Value; } - foreach (var speciesState in CliDB.BattlePetSpeciesStateStorage.Values) + foreach (var battlePetSpeciesState in CliDB.BattlePetSpeciesStateStorage.Values) { - if (!_battlePetSpeciesStates.ContainsKey(speciesState.SpeciesID)) - _battlePetSpeciesStates[speciesState.SpeciesID] = new Dictionary(); + if (!_battlePetSpeciesStates.ContainsKey(battlePetSpeciesState.BattlePetSpeciesID)) + _battlePetSpeciesStates[battlePetSpeciesState.BattlePetSpeciesID] = new Dictionary(); - _battlePetSpeciesStates[speciesState.SpeciesID][(BattlePetState)speciesState.State] = speciesState.Value; + _battlePetSpeciesStates[battlePetSpeciesState.BattlePetSpeciesID][(BattlePetState)battlePetSpeciesState.BattlePetStateID] = battlePetSpeciesState.Value; } LoadAvailablePetBreeds(); @@ -497,13 +497,13 @@ namespace Game.BattlePets } // modify stats by quality - foreach (var breedQualityRecord in CliDB.BattlePetBreedQualityStorage.Values) + foreach (var battlePetBreedQuality in CliDB.BattlePetBreedQualityStorage.Values) { - if (breedQualityRecord.Quality == PacketInfo.Quality) + if (battlePetBreedQuality.QualityEnum == PacketInfo.Quality) { - health *= breedQualityRecord.Modifier; - power *= breedQualityRecord.Modifier; - speed *= breedQualityRecord.Modifier; + health *= battlePetBreedQuality.StateMultiplier; + power *= battlePetBreedQuality.StateMultiplier; + speed *= battlePetBreedQuality.StateMultiplier; break; } // TOOD: add check if pet has existing quality diff --git a/Source/Game/Chat/Commands/CharacterCommands.cs b/Source/Game/Chat/Commands/CharacterCommands.cs index 7e10bc74e..6ae21825a 100644 --- a/Source/Game/Chat/Commands/CharacterCommands.cs +++ b/Source/Game/Chat/Commands/CharacterCommands.cs @@ -48,7 +48,7 @@ namespace Game.Chat { if (target.HasTitle(titleInfo)) { - string name = (target.GetGender() == Gender.Male ? titleInfo.NameMale : titleInfo.NameFemale)[handler.GetSessionDbcLocale()]; + string name = (target.GetGender() == Gender.Male ? titleInfo.Name : titleInfo.Name1)[handler.GetSessionDbcLocale()]; if (string.IsNullOrEmpty(name)) continue; diff --git a/Source/Game/Chat/Commands/GoCommands.cs b/Source/Game/Chat/Commands/GoCommands.cs index e81272c9f..8272c88dc 100644 --- a/Source/Game/Chat/Commands/GoCommands.cs +++ b/Source/Game/Chat/Commands/GoCommands.cs @@ -327,9 +327,9 @@ namespace Game.Chat.Commands } if ((node.Pos.X == 0.0f && node.Pos.Y == 0.0f && node.Pos.Z == 0.0f) || - !GridDefines.IsValidMapCoord(node.MapID, node.Pos.X, node.Pos.Y, node.Pos.Z)) + !GridDefines.IsValidMapCoord(node.ContinentID, node.Pos.X, node.Pos.Y, node.Pos.Z)) { - handler.SendSysMessage(CypherStrings.InvalidTargetCoord, node.Pos.X, node.Pos.Y, node.MapID); + handler.SendSysMessage(CypherStrings.InvalidTargetCoord, node.Pos.X, node.Pos.Y, node.ContinentID); return false; } @@ -343,7 +343,7 @@ namespace Game.Chat.Commands else player.SaveRecallPosition(); - player.TeleportTo(node.MapID, node.Pos.X, node.Pos.Y, node.Pos.Z, player.GetOrientation()); + player.TeleportTo(node.ContinentID, node.Pos.X, node.Pos.Y, node.Pos.Z, player.GetOrientation()); return true; } @@ -366,9 +366,9 @@ namespace Game.Chat.Commands return false; } - if (!GridDefines.IsValidMapCoord(at.MapID, at.Pos.X, at.Pos.Y, at.Pos.Z)) + if (!GridDefines.IsValidMapCoord(at.ContinentID, at.Pos.X, at.Pos.Y, at.Pos.Z)) { - handler.SendSysMessage(CypherStrings.InvalidTargetCoord, at.Pos.X, at.Pos.Y, at.MapID); + handler.SendSysMessage(CypherStrings.InvalidTargetCoord, at.Pos.X, at.Pos.Y, at.ContinentID); return false; } @@ -382,7 +382,7 @@ namespace Game.Chat.Commands else player.SaveRecallPosition(); - player.TeleportTo(at.MapID, at.Pos.X, at.Pos.Y, at.Pos.Z, player.GetOrientation()); + player.TeleportTo(at.ContinentID, at.Pos.X, at.Pos.Y, at.Pos.Z, player.GetOrientation()); return true; } @@ -420,7 +420,7 @@ namespace Game.Chat.Commands AreaTableRecord zoneEntry = areaEntry.ParentAreaID != 0 ? CliDB.AreaTableStorage.LookupByKey(areaEntry.ParentAreaID) : areaEntry; Contract.Assert(zoneEntry != null); - Map map = Global.MapMgr.CreateBaseMap(zoneEntry.MapId); + Map map = Global.MapMgr.CreateBaseMap(zoneEntry.ContinentID); if (map.Instanceable()) { @@ -430,9 +430,9 @@ namespace Game.Chat.Commands Global.DB2Mgr.Zone2MapCoordinates(areaEntry.ParentAreaID != 0 ? areaEntry.ParentAreaID : areaId, ref x, ref y); - if (!GridDefines.IsValidMapCoord(zoneEntry.MapId, x, y)) + if (!GridDefines.IsValidMapCoord(zoneEntry.ContinentID, x, y)) { - handler.SendSysMessage(CypherStrings.InvalidTargetCoord, x, y, zoneEntry.MapId); + handler.SendSysMessage(CypherStrings.InvalidTargetCoord, x, y, zoneEntry.ContinentID); return false; } @@ -448,7 +448,7 @@ namespace Game.Chat.Commands float z = Math.Max(map.GetHeight(x, y, MapConst.MaxHeight), map.GetWaterLevel(x, y)); - player.TeleportTo(zoneEntry.MapId, x, y, z, player.GetOrientation()); + player.TeleportTo(zoneEntry.ContinentID, x, y, z, player.GetOrientation()); return true; } diff --git a/Source/Game/Chat/Commands/LearnCommands.cs b/Source/Game/Chat/Commands/LearnCommands.cs index d126d264d..1d43469ab 100644 --- a/Source/Game/Chat/Commands/LearnCommands.cs +++ b/Source/Game/Chat/Commands/LearnCommands.cs @@ -228,11 +228,11 @@ namespace Game.Chat.Commands if (skillLine.ClassMask != 0 && (skillLine.ClassMask & classmask) == 0) continue; - SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(skillLine.SpellID); + SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(skillLine.Spell); if (spellInfo == null || !Global.SpellMgr.IsSpellValid(spellInfo, player, false)) continue; - player.LearnSpell(skillLine.SpellID, false); + player.LearnSpell(skillLine.Spell, false); } } @@ -257,7 +257,7 @@ namespace Game.Chat.Commands foreach (var entry in CliDB.SkillLineAbilityStorage.Values) { - SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(entry.SpellID); + SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(entry.Spell); if (spellInfo == null) continue; diff --git a/Source/Game/Chat/Commands/LookupCommands.cs b/Source/Game/Chat/Commands/LookupCommands.cs index 69a147cd4..08f864a1c 100644 --- a/Source/Game/Chat/Commands/LookupCommands.cs +++ b/Source/Game/Chat/Commands/LookupCommands.cs @@ -713,10 +713,10 @@ namespace Game.Chat // send taxinode in "id - [name] (Map:m X:x Y:y Z:z)" format if (handler.GetSession() != null) handler.SendSysMessage(CypherStrings.TaxinodeEntryListChat, nodeEntry.Id, nodeEntry.Id, name, "", - nodeEntry.MapID, nodeEntry.Pos.X, nodeEntry.Pos.Y, nodeEntry.Pos.Z); + nodeEntry.ContinentID, nodeEntry.Pos.X, nodeEntry.Pos.Y, nodeEntry.Pos.Z); else handler.SendSysMessage(CypherStrings.TaxinodeEntryListConsole, nodeEntry.Id, name, "", - nodeEntry.MapID, nodeEntry.Pos.X, nodeEntry.Pos.Y, nodeEntry.Pos.Z); + nodeEntry.ContinentID, nodeEntry.Pos.X, nodeEntry.Pos.Y, nodeEntry.Pos.Z); if (!found) found = true; @@ -795,7 +795,7 @@ namespace Game.Chat continue; LocaleConstant locale = handler.GetSessionDbcLocale(); - string name = gender == Gender.Male ? titleInfo.NameMale[locale]: titleInfo.NameFemale[locale]; + string name = gender == Gender.Male ? titleInfo.Name[locale]: titleInfo.Name1[locale]; if (string.IsNullOrEmpty(name)) continue; @@ -807,7 +807,7 @@ namespace Game.Chat if (locale == handler.GetSessionDbcLocale()) continue; - name = (gender == Gender.Male ? titleInfo.NameMale : titleInfo.NameFemale)[locale]; + name = (gender == Gender.Male ? titleInfo.Name : titleInfo.Name1)[locale]; if (name.IsEmpty()) continue; diff --git a/Source/Game/Chat/Commands/MiscCommands.cs b/Source/Game/Chat/Commands/MiscCommands.cs index 8bedacf0c..474ed12fa 100644 --- a/Source/Game/Chat/Commands/MiscCommands.cs +++ b/Source/Game/Chat/Commands/MiscCommands.cs @@ -277,7 +277,7 @@ namespace Game.Chat var record = CliDB.ItemSparseStorage.Values.FirstOrDefault(itemSparse => { for (LocaleConstant i = 0; i < LocaleConstant.Max; ++i) - if (itemName == itemSparse.Name[i]) + if (itemName == itemSparse.Display[i]) return true; return false; }); diff --git a/Source/Game/Chat/Commands/ModifyCommands.cs b/Source/Game/Chat/Commands/ModifyCommands.cs index b1fb44b64..7f55f6fd2 100644 --- a/Source/Game/Chat/Commands/ModifyCommands.cs +++ b/Source/Game/Chat/Commands/ModifyCommands.cs @@ -555,8 +555,8 @@ namespace Game.Chat return false; } - NotifyModification(handler, target, CypherStrings.YouChangePower, CypherStrings.YourPowerChanged, powerType.PowerTypeToken, powerAmount, powerAmount); - powerAmount *= powerType.UIModifier; + NotifyModification(handler, target, CypherStrings.YouChangePower, CypherStrings.YourPowerChanged, powerType.NameGlobalStringTag, powerAmount, powerAmount); + powerAmount *= powerType.DisplayModifier; target.SetMaxPower(powerType.PowerTypeEnum, powerAmount); target.SetPower(powerType.PowerTypeEnum, powerAmount); return true; diff --git a/Source/Game/Chat/Commands/ResetCommands.cs b/Source/Game/Chat/Commands/ResetCommands.cs index 59011559a..b7d299eaf 100644 --- a/Source/Game/Chat/Commands/ResetCommands.cs +++ b/Source/Game/Chat/Commands/ResetCommands.cs @@ -67,7 +67,7 @@ namespace Game.Chat return false; } - PowerType powerType = classEntry.PowerType; + PowerType powerType = classEntry.DisplayPower; // reset m_form if no aura if (!player.HasAuraType(AuraType.ModShapeshift)) diff --git a/Source/Game/Chat/Commands/TitleCommands.cs b/Source/Game/Chat/Commands/TitleCommands.cs index 2d193b79d..c2ffee52d 100644 --- a/Source/Game/Chat/Commands/TitleCommands.cs +++ b/Source/Game/Chat/Commands/TitleCommands.cs @@ -64,7 +64,7 @@ namespace Game.Chat.Commands target.SetTitle(titleInfo); // to be sure that title now known target.SetUInt32Value(PlayerFields.ChosenTitle, titleInfo.MaskID); - handler.SendSysMessage(CypherStrings.TitleCurrentRes, id, (target.GetGender() == Gender.Male ? titleInfo.NameMale : titleInfo.NameFemale)[handler.GetSessionDbcLocale()], tNameLink); + handler.SendSysMessage(CypherStrings.TitleCurrentRes, id, (target.GetGender() == Gender.Male ? titleInfo.Name : titleInfo.Name1)[handler.GetSessionDbcLocale()], tNameLink); return true; } @@ -102,7 +102,7 @@ namespace Game.Chat.Commands string tNameLink = handler.GetNameLink(target); - string titleNameStr = string.Format((target.GetGender() == Gender.Male ? titleInfo.NameMale : titleInfo.NameFemale)[handler.GetSessionDbcLocale()].ConvertFormatSyntax(), target.GetName()); + string titleNameStr = string.Format((target.GetGender() == Gender.Male ? titleInfo.Name : titleInfo.Name1)[handler.GetSessionDbcLocale()].ConvertFormatSyntax(), target.GetName()); target.SetTitle(titleInfo); handler.SendSysMessage(CypherStrings.TitleAddRes, id, titleNameStr, tNameLink); @@ -146,7 +146,7 @@ namespace Game.Chat.Commands string tNameLink = handler.GetNameLink(target); - string titleNameStr = string.Format((target.GetGender() == Gender.Male ? titleInfo.NameMale : titleInfo.NameFemale)[handler.GetSessionDbcLocale()].ConvertFormatSyntax(), target.GetName()); + string titleNameStr = string.Format((target.GetGender() == Gender.Male ? titleInfo.Name : titleInfo.Name1)[handler.GetSessionDbcLocale()].ConvertFormatSyntax(), target.GetName()); handler.SendSysMessage(CypherStrings.TitleRemoveRes, id, titleNameStr, tNameLink); diff --git a/Source/Game/Conditions/ConditionManager.cs b/Source/Game/Conditions/ConditionManager.cs index 3d0cf0824..ccf22e5d4 100644 --- a/Source/Game/Conditions/ConditionManager.cs +++ b/Source/Game/Conditions/ConditionManager.cs @@ -1792,10 +1792,10 @@ namespace Game if (condition.MovementFlags[1] != 0 && !Convert.ToBoolean((uint)player.GetUnitMovementFlags2() & condition.MovementFlags[1])) return false; - if (condition.MainHandItemSubclassMask != 0) + if (condition.WeaponSubclassMask != 0) { Item mainHand = player.GetItemByPos(InventorySlots.Bag0, EquipmentSlot.MainHand); - if (!mainHand || !Convert.ToBoolean((1 << (int)mainHand.GetTemplate().GetSubClass()) & condition.MainHandItemSubclassMask)) + if (!mainHand || !Convert.ToBoolean((1 << (int)mainHand.GetTemplate().GetSubClass()) & condition.WeaponSubclassMask)) return false; } @@ -1927,8 +1927,8 @@ namespace Game { if (condition.AuraSpellID[i] != 0) { - if (condition.AuraCount[i] != 0) - results[i] = player.GetAuraCount(condition.AuraSpellID[i]) >= condition.AuraCount[i]; + if (condition.AuraStacks[i] != 0) + results[i] = player.GetAuraCount(condition.AuraSpellID[i]) >= condition.AuraStacks[i]; else results[i] = player.HasAura(condition.AuraSpellID[i]); } diff --git a/Source/Game/DataStorage/CliDB.cs b/Source/Game/DataStorage/CliDB.cs index 9a3ab64ad..43b1590b1 100644 --- a/Source/Game/DataStorage/CliDB.cs +++ b/Source/Game/DataStorage/CliDB.cs @@ -89,21 +89,21 @@ namespace Game.DataStorage DurabilityCostsStorage = DBReader.Read("DurabilityCosts.db2", HotfixStatements.SEL_DURABILITY_COSTS); DurabilityQualityStorage = DBReader.Read("DurabilityQuality.db2", HotfixStatements.SEL_DURABILITY_QUALITY); EmotesStorage = DBReader.Read("Emotes.db2", HotfixStatements.SEL_EMOTES); - EmotesTextStorage = DBReader.Read("EmotesText.db2", HotfixStatements.SEL_EMOTES_TEXT, HotfixStatements.SEL_EMOTES_TEXT_LOCALE); + EmotesTextStorage = DBReader.Read("EmotesText.db2", HotfixStatements.SEL_EMOTES_TEXT); EmotesTextSoundStorage = DBReader.Read("EmotesTextSound.db2", HotfixStatements.SEL_EMOTES_TEXT_SOUND); FactionStorage = DBReader.Read("Faction.db2", HotfixStatements.SEL_FACTION, HotfixStatements.SEL_FACTION_LOCALE); FactionTemplateStorage = DBReader.Read("FactionTemplate.db2", HotfixStatements.SEL_FACTION_TEMPLATE); - GameObjectsStorage = DBReader.Read("GameObjects.db2", HotfixStatements.SEL_GAMEOBJECTS, HotfixStatements.SEL_GAMEOBJECTS_LOCALE); GameObjectDisplayInfoStorage = DBReader.Read("GameObjectDisplayInfo.db2", HotfixStatements.SEL_GAMEOBJECT_DISPLAY_INFO); + GameObjectsStorage = DBReader.Read("GameObjects.db2", HotfixStatements.SEL_GAMEOBJECTS, HotfixStatements.SEL_GAMEOBJECTS_LOCALE); GarrAbilityStorage = DBReader.Read("GarrAbility.db2", HotfixStatements.SEL_GARR_ABILITY, HotfixStatements.SEL_GARR_ABILITY_LOCALE); GarrBuildingStorage = DBReader.Read("GarrBuilding.db2", HotfixStatements.SEL_GARR_BUILDING, HotfixStatements.SEL_GARR_BUILDING_LOCALE); GarrBuildingPlotInstStorage = DBReader.Read("GarrBuildingPlotInst.db2", HotfixStatements.SEL_GARR_BUILDING_PLOT_INST); GarrClassSpecStorage = DBReader.Read("GarrClassSpec.db2", HotfixStatements.SEL_GARR_CLASS_SPEC, HotfixStatements.SEL_GARR_CLASS_SPEC_LOCALE); GarrFollowerStorage = DBReader.Read("GarrFollower.db2", HotfixStatements.SEL_GARR_FOLLOWER, HotfixStatements.SEL_GARR_FOLLOWER_LOCALE); GarrFollowerXAbilityStorage = DBReader.Read("GarrFollowerXAbility.db2", HotfixStatements.SEL_GARR_FOLLOWER_X_ABILITY); - GarrPlotBuildingStorage = DBReader.Read("GarrPlotBuilding.db2", HotfixStatements.SEL_GARR_PLOT_BUILDING); GarrPlotStorage = DBReader.Read("GarrPlot.db2", HotfixStatements.SEL_GARR_PLOT, HotfixStatements.SEL_GARR_PLOT_LOCALE); - GarrPlotInstanceStorage = DBReader.Read("GarrPlotInstance.db2", HotfixStatements.SEL_GARR_PLOT_INSTANCE, HotfixStatements.SEL_GARR_PLOT_INSTANCE_LOCALE); + GarrPlotBuildingStorage = DBReader.Read("GarrPlotBuilding.db2", HotfixStatements.SEL_GARR_PLOT_BUILDING); + GarrPlotInstanceStorage = DBReader.Read("GarrPlotInstance.db2", HotfixStatements.SEL_GARR_PLOT_INSTANCE); GarrSiteLevelStorage = DBReader.Read("GarrSiteLevel.db2", HotfixStatements.SEL_GARR_SITE_LEVEL); GarrSiteLevelPlotInstStorage = DBReader.Read("GarrSiteLevelPlotInst.db2", HotfixStatements.SEL_GARR_SITE_LEVEL_PLOT_INST); GemPropertiesStorage = DBReader.Read("GemProperties.db2", HotfixStatements.SEL_GEM_PROPERTIES); @@ -159,7 +159,7 @@ namespace Game.DataStorage //KeyChainStorage = DBReader.Read("KeyChain.db2", HotfixStatements.SEL_KEYCHAIN); LFGDungeonsStorage = DBReader.Read("LFGDungeons.db2", HotfixStatements.SEL_LFG_DUNGEONS, HotfixStatements.SEL_LFG_DUNGEONS_LOCALE); LightStorage = DBReader.Read("Light.db2", HotfixStatements.SEL_LIGHT); - LiquidTypeStorage = DBReader.Read("LiquidType.db2", HotfixStatements.SEL_LIQUID_TYPE, HotfixStatements.SEL_LIQUID_TYPE_LOCALE); + LiquidTypeStorage = DBReader.Read("LiquidType.db2", HotfixStatements.SEL_LIQUID_TYPE); LockStorage = DBReader.Read("Lock.db2", HotfixStatements.SEL_LOCK); MailTemplateStorage = DBReader.Read("MailTemplate.db2", HotfixStatements.SEL_MAIL_TEMPLATE, HotfixStatements.SEL_MAIL_TEMPLATE_LOCALE); MapStorage = DBReader.Read("Map.db2", HotfixStatements.SEL_MAP, HotfixStatements.SEL_MAP_LOCALE); @@ -170,7 +170,7 @@ namespace Game.DataStorage MountTypeXCapabilityStorage = DBReader.Read("MountTypeXCapability.db2", HotfixStatements.SEL_MOUNT_TYPE_X_CAPABILITY); MountXDisplayStorage = DBReader.Read("MountXDisplay.db2", HotfixStatements.SEL_MOUNT_X_DISPLAY); MovieStorage = DBReader.Read("Movie.db2", HotfixStatements.SEL_MOVIE); - NameGenStorage = DBReader.Read("NameGen.db2", HotfixStatements.SEL_NAME_GEN, HotfixStatements.SEL_NAME_GEN_LOCALE); + NameGenStorage = DBReader.Read("NameGen.db2", HotfixStatements.SEL_NAME_GEN); NamesProfanityStorage = DBReader.Read("NamesProfanity.db2", HotfixStatements.SEL_NAMES_PROFANITY); NamesReservedStorage = DBReader.Read("NamesReserved.db2", HotfixStatements.SEL_NAMES_RESERVED, HotfixStatements.SEL_NAMES_RESERVED_LOCALE); NamesReservedLocaleStorage = DBReader.Read("NamesReservedLocale.db2", HotfixStatements.SEL_NAMES_RESERVED_LOCALE); @@ -265,19 +265,18 @@ namespace Game.DataStorage WorldMapTransformsStorage = DBReader.Read("WorldMapTransforms.db2", HotfixStatements.SEL_WORLD_MAP_TRANSFORMS); WorldSafeLocsStorage = DBReader.Read("WorldSafeLocs.db2", HotfixStatements.SEL_WORLD_SAFE_LOCS, HotfixStatements.SEL_WORLD_SAFE_LOCS_LOCALE); - foreach (var entry in TaxiPathStorage.Values) { - if (!TaxiPathSetBySource.ContainsKey(entry.From)) - TaxiPathSetBySource.Add(entry.From, new Dictionary()); - TaxiPathSetBySource[entry.From][entry.To] = new TaxiPathBySourceAndDestination(entry.Id, entry.Cost); + if (!TaxiPathSetBySource.ContainsKey(entry.FromTaxiNode)) + TaxiPathSetBySource.Add(entry.FromTaxiNode, new Dictionary()); + TaxiPathSetBySource[entry.FromTaxiNode][entry.ToTaxiNode] = new TaxiPathBySourceAndDestination(entry.Id, entry.Cost); } uint pathCount = TaxiPathStorage.Keys.Max() + 1; // Calculate path nodes count uint[] pathLength = new uint[pathCount]; // 0 and some other indexes not used - foreach (TaxiPathNodeRecord entry in CliDB.TaxiPathNodeStorage.Values) + foreach (TaxiPathNodeRecord entry in TaxiPathNodeStorage.Values) if (pathLength[entry.PathID] < entry.NodeIndex + 1) pathLength[entry.PathID] = entry.NodeIndex + 1u; @@ -305,7 +304,7 @@ namespace Game.DataStorage AllianceTaxiNodesMask[field] |= submask; uint nodeMap; - Global.DB2Mgr.DeterminaAlternateMapPosition(node.MapID, node.Pos.X, node.Pos.Y, node.Pos.Z, out nodeMap); + Global.DB2Mgr.DeterminaAlternateMapPosition(node.ContinentID, node.Pos.X, node.Pos.Y, node.Pos.Z, out nodeMap); if (nodeMap < 2) OldContinentsNodesMask[field] |= submask; } diff --git a/Source/Game/DataStorage/ClientReader/DBReader.cs b/Source/Game/DataStorage/ClientReader/DBReader.cs index 5d461b27a..0b3354855 100644 --- a/Source/Game/DataStorage/ClientReader/DBReader.cs +++ b/Source/Game/DataStorage/ClientReader/DBReader.cs @@ -480,16 +480,17 @@ namespace Game.DataStorage static Dictionary bytecounts = new Dictionary() { { typeof(byte), 1 }, + { typeof(sbyte), 1 }, { typeof(short), 2 }, { typeof(ushort), 2 }, }; static int GetPadding(Type type, int fieldIndex) { - if (!bytecounts.ContainsKey(type)) + if (ColumnMeta[fieldIndex].CompressionType < DB2ColumnCompression.CommonData) return 0; - if (ColumnMeta[fieldIndex].CompressionType < DB2ColumnCompression.CommonData) + if (!bytecounts.ContainsKey(type)) return 0; return 4 - bytecounts[type]; diff --git a/Source/Game/DataStorage/ConversationDataStorage.cs b/Source/Game/DataStorage/ConversationDataStorage.cs index 18a729782..38ad0379a 100644 --- a/Source/Game/DataStorage/ConversationDataStorage.cs +++ b/Source/Game/DataStorage/ConversationDataStorage.cs @@ -186,10 +186,10 @@ namespace Game.DataStorage else Log.outError(LogFilter.Sql, "Table `conversation_line_template` has missing template for line (ID: {0}) in Conversation {1}, skipped", currentConversationLine.Id, conversationTemplate.Id); - if (currentConversationLine.NextLineID == 0) + if (currentConversationLine.NextConversationLineID == 0) break; - currentConversationLine = CliDB.ConversationLineStorage.LookupByKey(currentConversationLine.NextLineID); + currentConversationLine = CliDB.ConversationLineStorage.LookupByKey(currentConversationLine.NextConversationLineID); } _conversationTemplateStorage[conversationTemplate.Id] = conversationTemplate; diff --git a/Source/Game/DataStorage/DB2Manager.cs b/Source/Game/DataStorage/DB2Manager.cs index 2422090e3..73e3535ee 100644 --- a/Source/Game/DataStorage/DB2Manager.cs +++ b/Source/Game/DataStorage/DB2Manager.cs @@ -54,14 +54,14 @@ namespace Game.DataStorage foreach (ArtifactPowerLinkRecord artifactPowerLink in CliDB.ArtifactPowerLinkStorage.Values) { - _artifactPowerLinks.Add(artifactPowerLink.FromArtifactPowerID, artifactPowerLink.ToArtifactPowerID); - _artifactPowerLinks.Add(artifactPowerLink.ToArtifactPowerID, artifactPowerLink.FromArtifactPowerID); + _artifactPowerLinks.Add(artifactPowerLink.PowerA, artifactPowerLink.PowerB); + _artifactPowerLinks.Add(artifactPowerLink.PowerB, artifactPowerLink.PowerA); } CliDB.ArtifactPowerLinkStorage.Clear(); foreach (ArtifactPowerRankRecord artifactPowerRank in CliDB.ArtifactPowerRankStorage.Values) - _artifactPowerRanks[Tuple.Create((uint)artifactPowerRank.ArtifactPowerID, artifactPowerRank.Rank)] = artifactPowerRank; + _artifactPowerRanks[Tuple.Create((uint)artifactPowerRank.ArtifactPowerID, artifactPowerRank.RankIndex)] = artifactPowerRank; CliDB.ArtifactPowerRankStorage.Clear(); @@ -73,10 +73,10 @@ namespace Game.DataStorage CharBaseSectionVariation[] sectionToBase = new CharBaseSectionVariation[(int)CharSectionType.Max]; foreach (CharBaseSectionRecord charBaseSection in CliDB.CharBaseSectionStorage.Values) { - Contract.Assert(charBaseSection.ResolutionVariation < (byte)CharSectionType.Max, $"SECTION_TYPE_MAX ({(byte)CharSectionType.Max}) must be equal to or greater than {charBaseSection.ResolutionVariation + 1}"); - Contract.Assert(charBaseSection.Variation < CharBaseSectionVariation.Max, $"CharBaseSectionVariation.Max {(byte)CharBaseSectionVariation.Max} must be equal to or greater than {charBaseSection.Variation + 1}"); + Contract.Assert(charBaseSection.ResolutionVariationEnum < (byte)CharSectionType.Max, $"SECTION_TYPE_MAX ({(byte)CharSectionType.Max}) must be equal to or greater than {charBaseSection.ResolutionVariationEnum + 1}"); + Contract.Assert(charBaseSection.VariationEnum < CharBaseSectionVariation.Max, $"CharBaseSectionVariation.Max {(byte)CharBaseSectionVariation.Max} must be equal to or greater than {charBaseSection.VariationEnum + 1}"); - sectionToBase[charBaseSection.ResolutionVariation] = charBaseSection.Variation; + sectionToBase[charBaseSection.ResolutionVariationEnum] = charBaseSection.VariationEnum; } CliDB.CharBaseSectionStorage.Clear(); @@ -98,7 +98,7 @@ namespace Game.DataStorage CliDB.CharSectionsStorage.Clear(); foreach (var outfit in CliDB.CharStartOutfitStorage.Values) - _charStartOutfits[(uint)((byte)outfit.RaceID | (outfit.ClassID << 8) | (outfit.GenderID << 16))] = outfit; + _charStartOutfits[(uint)((byte)outfit.RaceID | (outfit.ClassID << 8) | (outfit.SexID << 16))] = outfit; var powers = new List(); foreach (var chrClasses in CliDB.ChrClassesXPowerTypesStorage.Values) @@ -146,10 +146,10 @@ namespace Game.DataStorage CliDB.CurvePointStorage.Clear(); foreach (var key in _curvePoints.Keys.ToList()) - _curvePoints[key] = _curvePoints[key].OrderBy(point => point.Index).ToList(); + _curvePoints[key] = _curvePoints[key].OrderBy(point => point.OrderIndex).ToList(); foreach (EmotesTextSoundRecord emoteTextSound in CliDB.EmotesTextSoundStorage.Values) - _emoteTextSounds[Tuple.Create((uint)emoteTextSound.EmotesTextId, emoteTextSound.RaceId, emoteTextSound.SexId, emoteTextSound.ClassId)] = emoteTextSound; + _emoteTextSounds[Tuple.Create(emoteTextSound.EmotesTextId, emoteTextSound.RaceId, emoteTextSound.SexId, emoteTextSound.ClassId)] = emoteTextSound; CliDB.EmotesTextSoundStorage.Clear(); @@ -183,23 +183,23 @@ namespace Game.DataStorage CliDB.GlyphRequiredSpecStorage.Clear(); foreach (var bonus in CliDB.ItemBonusStorage.Values) - _itemBonusLists.Add(bonus.BonusListID, bonus); + _itemBonusLists.Add(bonus.ParentItemBonusListID, bonus); CliDB.ItemBonusStorage.Clear(); foreach (ItemBonusListLevelDeltaRecord itemBonusListLevelDelta in CliDB.ItemBonusListLevelDeltaStorage.Values) - _itemLevelDeltaToBonusListContainer[itemBonusListLevelDelta.Delta] = itemBonusListLevelDelta.Id; + _itemLevelDeltaToBonusListContainer[itemBonusListLevelDelta.ItemLevelDelta] = itemBonusListLevelDelta.Id; CliDB.ItemBonusListLevelDeltaStorage.Clear(); foreach (var key in CliDB.ItemBonusTreeNodeStorage.Keys) { ItemBonusTreeNodeRecord bonusTreeNode = CliDB.ItemBonusTreeNodeStorage[key]; - uint bonusTreeId = bonusTreeNode.BonusTreeID; + uint bonusTreeId = bonusTreeNode.ParentItemBonusTreeID; while (bonusTreeNode != null) { _itemBonusTrees.Add(bonusTreeId, bonusTreeNode); - bonusTreeNode = CliDB.ItemBonusTreeNodeStorage.LookupByKey(bonusTreeNode.SubTreeID); + bonusTreeNode = CliDB.ItemBonusTreeNodeStorage.LookupByKey(bonusTreeNode.ChildItemBonusTreeID); } } @@ -207,35 +207,35 @@ namespace Game.DataStorage foreach (ItemChildEquipmentRecord itemChildEquipment in CliDB.ItemChildEquipmentStorage.Values) { - //ASSERT(_itemChildEquipment.find(itemChildEquipment.ItemID) == _itemChildEquipment.end(), "Item must have max 1 child item."); - _itemChildEquipment[itemChildEquipment.ItemID] = itemChildEquipment; + //ASSERT(_itemChildEquipment.find(itemChildEquipment.ParentItemID) == _itemChildEquipment.end(), "Item must have max 1 child item."); + _itemChildEquipment[itemChildEquipment.ParentItemID] = itemChildEquipment; } CliDB.ItemChildEquipmentStorage.Clear(); foreach (ItemClassRecord itemClass in CliDB.ItemClassStorage.Values) { - //ASSERT(itemClass->OldEnumValue < _itemClassByOldEnum.size()); - //ASSERT(!_itemClassByOldEnum[itemClass->OldEnumValue]); - _itemClassByOldEnum[itemClass.OldEnumValue] = itemClass; + //ASSERT(itemClass->ClassID < _itemClassByOldEnum.size()); + //ASSERT(!_itemClassByOldEnum[itemClass->ClassID]); + _itemClassByOldEnum[itemClass.ClassID] = itemClass; } CliDB.ItemClassStorage.Clear(); foreach (ItemCurrencyCostRecord itemCurrencyCost in CliDB.ItemCurrencyCostStorage.Values) - _itemsWithCurrencyCost.Add(itemCurrencyCost.ItemId); + _itemsWithCurrencyCost.Add(itemCurrencyCost.ItemID); CliDB.ItemCurrencyCostStorage.Clear(); foreach (ItemLevelSelectorQualityRecord itemLevelSelectorQuality in CliDB.ItemLevelSelectorQualityStorage.Values) - _itemLevelQualitySelectorQualities.Add(itemLevelSelectorQuality.ItemLevelSelectorQualitySetID, itemLevelSelectorQuality); + _itemLevelQualitySelectorQualities.Add(itemLevelSelectorQuality.ParentILSQualitySetID, itemLevelSelectorQuality); CliDB.ItemLevelSelectorQualityStorage.Clear(); foreach (var appearanceMod in CliDB.ItemModifiedAppearanceStorage.Values) { //ASSERT(appearanceMod.ItemID <= 0xFFFFFF); - _itemModifiedAppearancesByItem[(uint)((int)appearanceMod.ItemID | (appearanceMod.AppearanceModID << 24))] = appearanceMod; + _itemModifiedAppearancesByItem[(uint)((int)appearanceMod.ItemID | (appearanceMod.ItemAppearanceModifierID << 24))] = appearanceMod; } foreach (ItemSetSpellRecord itemSetSpell in CliDB.ItemSetSpellStorage.Values) @@ -249,7 +249,7 @@ namespace Game.DataStorage CliDB.ItemSpecOverrideStorage.Clear(); foreach (var itemBonusTreeAssignment in CliDB.ItemXBonusTreeStorage.Values) - _itemToBonusTree.Add(itemBonusTreeAssignment.ItemID, itemBonusTreeAssignment.BonusTreeID); + _itemToBonusTree.Add(itemBonusTreeAssignment.ItemID, itemBonusTreeAssignment.ItemBonusTreeID); CliDB.ItemXBonusTreeStorage.Clear(); @@ -265,7 +265,7 @@ namespace Game.DataStorage CliDB.MapDifficultyStorage.Clear(); foreach (var mount in CliDB.MountStorage.Values) - _mountsBySpellId[mount.SpellId] = mount; + _mountsBySpellId[mount.SourceSpellID] = mount; foreach (MountTypeXCapabilityRecord mountTypeCapability in CliDB.MountTypeXCapabilityStorage.Values) _mountCapabilitiesByType.Add(mountTypeCapability.MountTypeID, mountTypeCapability); @@ -282,14 +282,14 @@ namespace Game.DataStorage foreach (var entry in CliDB.NameGenStorage.Values) { - if (!_nameGenData.ContainsKey(entry.Race)) + if (!_nameGenData.ContainsKey(entry.RaceID)) { - _nameGenData[entry.Race] = new List[2]; + _nameGenData[entry.RaceID] = new List[2]; for (var i = 0; i < 2; ++i) - _nameGenData[entry.Race][i] = new List(); + _nameGenData[entry.RaceID][i] = new List(); } - _nameGenData[entry.Race][entry.Sex].Add(entry); + _nameGenData[entry.RaceID][entry.Sex].Add(entry); } CliDB.NameGenStorage.Clear(); @@ -346,10 +346,10 @@ namespace Game.DataStorage } foreach (PvpItemRecord pvpItem in CliDB.PvpItemStorage.Values) - _pvpItemBonus[pvpItem.ItemID] = pvpItem.ItemLevelBonus; + _pvpItemBonus[pvpItem.ItemID] = pvpItem.ItemLevelDelta; foreach (PvpRewardRecord pvpReward in CliDB.PvpRewardStorage.Values) - _pvpRewardPack[Tuple.Create((uint)pvpReward.Prestige, (uint)pvpReward.HonorLevel)] = pvpReward.RewardPackID; + _pvpRewardPack[Tuple.Create((uint)pvpReward.PrestigeLevel, (uint)pvpReward.HonorLevel)] = pvpReward.RewardPackID; CliDB.PvpRewardStorage.Clear(); @@ -390,13 +390,13 @@ namespace Game.DataStorage foreach (QuestPackageItemRecord questPackageItem in CliDB.QuestPackageItemStorage.Values) { - if (!_questPackages.ContainsKey(questPackageItem.QuestPackageID)) - _questPackages[questPackageItem.QuestPackageID] = Tuple.Create(new List(), new List()); + if (!_questPackages.ContainsKey(questPackageItem.PackageID)) + _questPackages[questPackageItem.PackageID] = Tuple.Create(new List(), new List()); - if (questPackageItem.FilterType != QuestPackageFilter.Unmatched) - _questPackages[questPackageItem.QuestPackageID].Item1.Add(questPackageItem); + if (questPackageItem.DisplayType != QuestPackageFilter.Unmatched) + _questPackages[questPackageItem.PackageID].Item1.Add(questPackageItem); else - _questPackages[questPackageItem.QuestPackageID].Item2.Add(questPackageItem); + _questPackages[questPackageItem.PackageID].Item2.Add(questPackageItem); } CliDB.QuestPackageItemStorage.Clear(); @@ -436,14 +436,14 @@ namespace Game.DataStorage if (!_spellPowerDifficulties[power.SpellID].ContainsKey(powerDifficulty.DifficultyID)) _spellPowerDifficulties[power.SpellID][powerDifficulty.DifficultyID] = new List(); - _spellPowerDifficulties[power.SpellID][powerDifficulty.DifficultyID].Insert(powerDifficulty.PowerIndex, power); + _spellPowerDifficulties[power.SpellID][powerDifficulty.DifficultyID].Insert(powerDifficulty.OrderIndex, power); } else { if (!_spellPowers.ContainsKey(power.SpellID)) _spellPowers[power.SpellID] = new List(); - _spellPowers[power.SpellID].Insert(power.PowerIndex, power); + _spellPowers[power.SpellID].Insert(power.OrderIndex, power); } } @@ -492,7 +492,7 @@ namespace Game.DataStorage CliDB.TransmogSetItemStorage.Clear(); foreach (WMOAreaTableRecord entry in CliDB.WMOAreaTableStorage.Values) - _wmoAreaTableLookup[Tuple.Create((short)entry.WMOID, entry.NameSet, entry.WMOGroupID)] = entry; + _wmoAreaTableLookup[Tuple.Create((short)entry.WmoID, entry.NameSetID, entry.WmoGroupID)] = entry; CliDB.WMOAreaTableStorage.Clear(); @@ -593,19 +593,18 @@ namespace Game.DataStorage public string GetBroadcastTextValue(BroadcastTextRecord broadcastText, LocaleConstant locale = LocaleConstant.enUS, Gender gender = Gender.Male, bool forceGender = false) { - if ((gender == Gender.Female || gender == Gender.None) && (forceGender || broadcastText.FemaleText.HasString(SharedConst.DefaultLocale))) + if ((gender == Gender.Female || gender == Gender.None) && (forceGender || broadcastText.Text1.HasString(SharedConst.DefaultLocale))) { - if (broadcastText.FemaleText.HasString(locale)) - return broadcastText.FemaleText[locale]; + if (broadcastText.Text1.HasString(locale)) + return broadcastText.Text1[locale]; - return broadcastText.FemaleText[SharedConst.DefaultLocale]; + return broadcastText.Text1[SharedConst.DefaultLocale]; } + if (broadcastText.Text.HasString(locale)) + return broadcastText.Text[locale]; - if (broadcastText.MaleText.HasString(locale)) - return broadcastText.MaleText[locale]; - - return broadcastText.MaleText[SharedConst.DefaultLocale]; + return broadcastText.Text[SharedConst.DefaultLocale]; } public bool HasCharacterFacialHairStyle(Race race, Gender gender, uint variationId) @@ -728,82 +727,82 @@ namespace Game.DataStorage case CurveInterpolationMode.Linear: { int pointIndex = 0; - while (pointIndex < points.Count && points[pointIndex].X <= x) + while (pointIndex < points.Count && points[pointIndex].Pos.X <= x) ++pointIndex; if (pointIndex == 0) - return points[0].Y; + return points[0].Pos.Y; if (pointIndex >= points.Count) - return points.Last().Y; - float xDiff = points[pointIndex].X - points[pointIndex - 1].X; + return points.Last().Pos.Y; + float xDiff = points[pointIndex].Pos.X - points[pointIndex - 1].Pos.X; if (xDiff == 0.0) - return points[pointIndex].Y; - return (((x - points[pointIndex - 1].X) / xDiff) * (points[pointIndex].Y - points[pointIndex - 1].Y)) + points[pointIndex - 1].Y; + return points[pointIndex].Pos.Y; + return (((x - points[pointIndex - 1].Pos.X) / xDiff) * (points[pointIndex].Pos.Y - points[pointIndex - 1].Pos.Y)) + points[pointIndex - 1].Pos.Y; } case CurveInterpolationMode.Cosine: { int pointIndex = 0; - while (pointIndex < points.Count && points[pointIndex].X <= x) + while (pointIndex < points.Count && points[pointIndex].Pos.X <= x) ++pointIndex; if (pointIndex == 0) - return points[0].Y; + return points[0].Pos.Y; if (pointIndex >= points.Count) - return points.Last().Y; - float xDiff = points[pointIndex].X - points[pointIndex - 1].X; + return points.Last().Pos.Y; + float xDiff = points[pointIndex].Pos.X - points[pointIndex - 1].Pos.X; if (xDiff == 0.0) - return points[pointIndex].Y; - return (float)((points[pointIndex].Y - points[pointIndex - 1].Y) * (1.0f - Math.Cos((x - points[pointIndex - 1].X) / xDiff * Math.PI)) * 0.5f) + points[pointIndex - 1].Y; + return points[pointIndex].Pos.Y; + return (float)((points[pointIndex].Pos.Y - points[pointIndex - 1].Pos.Y) * (1.0f - Math.Cos((x - points[pointIndex - 1].Pos.X) / xDiff * Math.PI)) * 0.5f) + points[pointIndex - 1].Pos.Y; } case CurveInterpolationMode.CatmullRom: { int pointIndex = 1; - while (pointIndex < points.Count && points[pointIndex].X <= x) + while (pointIndex < points.Count && points[pointIndex].Pos.X <= x) ++pointIndex; if (pointIndex == 1) - return points[1].Y; + return points[1].Pos.Y; if (pointIndex >= points.Count - 1) - return points[points.Count - 2].Y; - float xDiff = points[pointIndex].X - points[pointIndex - 1].X; + return points[points.Count - 2].Pos.Y; + float xDiff = points[pointIndex].Pos.X - points[pointIndex - 1].Pos.X; if (xDiff == 0.0) - return points[pointIndex].Y; + return points[pointIndex].Pos.Y; - float mu = (x - points[pointIndex - 1].X) / xDiff; - float a0 = -0.5f * points[pointIndex - 2].Y + 1.5f * points[pointIndex - 1].Y - 1.5f * points[pointIndex].Y + 0.5f * points[pointIndex + 1].Y; - float a1 = points[pointIndex - 2].Y - 2.5f * points[pointIndex - 1].Y + 2.0f * points[pointIndex].Y - 0.5f * points[pointIndex + 1].Y; - float a2 = -0.5f * points[pointIndex - 2].Y + 0.5f * points[pointIndex].Y; - float a3 = points[pointIndex - 1].Y; + float mu = (x - points[pointIndex - 1].Pos.X) / xDiff; + float a0 = -0.5f * points[pointIndex - 2].Pos.Y + 1.5f * points[pointIndex - 1].Pos.Y - 1.5f * points[pointIndex].Pos.Y + 0.5f * points[pointIndex + 1].Pos.Y; + float a1 = points[pointIndex - 2].Pos.Y - 2.5f * points[pointIndex - 1].Pos.Y + 2.0f * points[pointIndex].Pos.Y - 0.5f * points[pointIndex + 1].Pos.Y; + float a2 = -0.5f * points[pointIndex - 2].Pos.Y + 0.5f * points[pointIndex].Pos.Y; + float a3 = points[pointIndex - 1].Pos.Y; return a0 * mu * mu * mu + a1 * mu * mu + a2 * mu + a3; } case CurveInterpolationMode.Bezier3: { - float xDiff = points[2].X - points[0].X; + float xDiff = points[2].Pos.X - points[0].Pos.X; if (xDiff == 0.0) - return points[1].Y; - float mu = (x - points[0].X) / xDiff; - return ((1.0f - mu) * (1.0f - mu) * points[0].Y) + (1.0f - mu) * 2.0f * mu * points[1].Y + mu * mu * points[2].Y; + return points[1].Pos.Y; + float mu = (x - points[0].Pos.X) / xDiff; + return ((1.0f - mu) * (1.0f - mu) * points[0].Pos.Y) + (1.0f - mu) * 2.0f * mu * points[1].Pos.Y + mu * mu * points[2].Pos.Y; } case CurveInterpolationMode.Bezier4: { - float xDiff = points[3].X - points[0].X; + float xDiff = points[3].Pos.X - points[0].Pos.X; if (xDiff == 0.0) - return points[1].Y; - float mu = (x - points[0].X) / xDiff; - return (1.0f - mu) * (1.0f - mu) * (1.0f - mu) * points[0].Y - + 3.0f * mu * (1.0f - mu) * (1.0f - mu) * points[1].Y - + 3.0f * mu * mu * (1.0f - mu) * points[2].Y - + mu * mu * mu * points[3].Y; + return points[1].Pos.Y; + float mu = (x - points[0].Pos.X) / xDiff; + return (1.0f - mu) * (1.0f - mu) * (1.0f - mu) * points[0].Pos.Y + + 3.0f * mu * (1.0f - mu) * (1.0f - mu) * points[1].Pos.Y + + 3.0f * mu * mu * (1.0f - mu) * points[2].Pos.Y + + mu * mu * mu * points[3].Pos.Y; } case CurveInterpolationMode.Bezier: { - float xDiff = points.Last().X - points[0].X; + float xDiff = points.Last().Pos.X - points[0].Pos.X; if (xDiff == 0.0f) - return points.Last().Y; + return points.Last().Pos.Y; float[] tmp = new float[points.Count]; for (int c = 0; c < points.Count; ++c) - tmp[c] = points[c].Y; + tmp[c] = points[c].Pos.Y; - float mu = (x - points[0].X) / xDiff; + float mu = (x - points[0].Pos.X) / xDiff; int i = points.Count - 1; while (i > 0) { @@ -817,7 +816,7 @@ namespace Game.DataStorage return tmp[0]; } case CurveInterpolationMode.Constant: - return points[0].Y; + return points[0].Pos.Y; default: break; } @@ -868,7 +867,7 @@ namespace Game.DataStorage return _itemLevelDeltaToBonusListContainer.LookupByKey(delta); } - public List GetItemBonusTree(uint itemId, uint itemBonusTreeMod) + public List GetItemBonusTree(uint itemId, uint itemContext) { List bonusListIDs = new List(); @@ -888,20 +887,20 @@ namespace Game.DataStorage foreach (ItemBonusTreeNodeRecord bonusTreeNode in treeList) { - if (bonusTreeNode.BonusTreeModID != itemBonusTreeMod) + if (bonusTreeNode.ItemContext != itemContext) continue; - if (bonusTreeNode.BonusListID != 0) + if (bonusTreeNode.ChildItemBonusListID != 0) { - bonusListIDs.Add(bonusTreeNode.BonusListID); + bonusListIDs.Add(bonusTreeNode.ChildItemBonusListID); } - else if (bonusTreeNode.ItemLevelSelectorID != 0) + else if (bonusTreeNode.ChildItemLevelSelectorID != 0) { - ItemLevelSelectorRecord selector = CliDB.ItemLevelSelectorStorage.LookupByKey(bonusTreeNode.ItemLevelSelectorID); + ItemLevelSelectorRecord selector = CliDB.ItemLevelSelectorStorage.LookupByKey(bonusTreeNode.ChildItemLevelSelectorID); if (selector == null) continue; - short delta = (short)(selector.ItemLevel - proto.ItemLevel); + short delta = (short)(selector.MinItemLevel - proto.ItemLevel); uint bonus = GetItemBonusListForItemLevelDelta(delta); if (bonus != 0) @@ -914,15 +913,15 @@ namespace Game.DataStorage if (itemSelectorQualities != null) { ItemQuality quality = ItemQuality.Uncommon; - if (selector.ItemLevel >= selectorQualitySet.ItemLevelMax) + if (selector.MinItemLevel >= selectorQualitySet.IlvlEpic) quality = ItemQuality.Epic; - else if (selector.ItemLevel >= selectorQualitySet.ItemLevelMin) + else if (selector.MinItemLevel >= selectorQualitySet.IlvlRare) quality = ItemQuality.Rare; var itemSelectorQuality = itemSelectorQualities.FirstOrDefault(p => p.Quality < (byte)quality); if (itemSelectorQuality != null) - bonusListIDs.Add(itemSelectorQuality.ItemBonusListID); + bonusListIDs.Add(itemSelectorQuality.QualityItemBonusListID); } } } @@ -947,9 +946,9 @@ namespace Game.DataStorage ItemModifiedAppearanceRecord modifiedAppearance = GetItemModifiedAppearance(itemId, appearanceModId); if (modifiedAppearance != null) { - ItemAppearanceRecord itemAppearance = CliDB.ItemAppearanceStorage.LookupByKey(modifiedAppearance.AppearanceID); + ItemAppearanceRecord itemAppearance = CliDB.ItemAppearanceStorage.LookupByKey(modifiedAppearance.ItemAppearanceID); if (itemAppearance != null) - return itemAppearance.DisplayID; + return itemAppearance.ItemDisplayInfoID; } return 0; @@ -1000,7 +999,7 @@ namespace Game.DataStorage { foreach (var light in CliDB.LightStorage.Values.Reverse()) { - if (light.MapID == mapId && light.Pos.X == 0.0f && light.Pos.Y == 0.0f && light.Pos.Z == 0.0f) + if (light.ContinentID == mapId && light.GameCoords.X == 0.0f && light.GameCoords.Y == 0.0f && light.GameCoords.Z == 0.0f) return light.Id; } @@ -1011,7 +1010,7 @@ namespace Game.DataStorage { LiquidTypeRecord liq = CliDB.LiquidTypeStorage.LookupByKey(liquidType); if (liq != null) - return 1u << liq.LiquidType; + return 1u << liq.SoundBank; return 0; } @@ -1104,7 +1103,7 @@ namespace Game.DataStorage return _mountDisplays.LookupByKey(mountId); } - public string GetNameGenEntry(uint race, uint gender, LocaleConstant locale, LocaleConstant defaultLocale) + public string GetNameGenEntry(uint race, uint gender) { Contract.Assert(gender < (int)Gender.None); var listNameGen = _nameGenData.LookupByKey(race); @@ -1114,11 +1113,7 @@ namespace Game.DataStorage if (listNameGen[gender].Empty()) return ""; - LocalizedString data = listNameGen[gender].SelectRandom().Name; - if (data.HasString(locale)) - return data[locale]; - - return data[defaultLocale]; + return listNameGen[gender].SelectRandom().Name; } public ResponseCodes ValidateName(string name, LocaleConstant locale) @@ -1234,7 +1229,7 @@ namespace Game.DataStorage { foreach (PowerTypeRecord powerType in CliDB.PowerTypeStorage.Values) { - string powerName = powerType.PowerTypeToken; + string powerName = powerType.NameGlobalStringTag; if (powerName.ToLower() == name) return powerType; @@ -1313,8 +1308,8 @@ namespace Game.DataStorage Array.Resize(ref powers, powerDifficultyList.Count); foreach (SpellPowerRecord difficultyPower in powerDifficultyList) - if (powers[difficultyPower.PowerIndex] == null) - powers[difficultyPower.PowerIndex] = difficultyPower; + if (powers[difficultyPower.OrderIndex] == null) + powers[difficultyPower.OrderIndex] = difficultyPower; } difficultyEntry = CliDB.DifficultyStorage.LookupByKey(difficultyEntry.FallbackDifficultyID); @@ -1328,8 +1323,8 @@ namespace Game.DataStorage Array.Resize(ref powers, record.Count); foreach (SpellPowerRecord power in record) - if (powers[power.PowerIndex] == null) - powers[power.PowerIndex] = power; + if (powers[power.OrderIndex] == null) + powers[power.OrderIndex] = power; } return powers.ToList(); @@ -1359,10 +1354,10 @@ namespace Game.DataStorage if (reqEntry == null) return false; - if (itemEntry.CategoryType != reqEntry.CategoryType) + if (itemEntry.TotemCategoryType != reqEntry.TotemCategoryType) return false; - return (itemEntry.CategoryMask & reqEntry.CategoryMask) == reqEntry.CategoryMask; + return (itemEntry.TotemCategoryMask & reqEntry.TotemCategoryMask) == reqEntry.TotemCategoryMask; } public bool IsToyItem(uint toy) diff --git a/Source/Game/DataStorage/M2Storage.cs b/Source/Game/DataStorage/M2Storage.cs index 36ad37f53..fc5df7f55 100644 --- a/Source/Game/DataStorage/M2Storage.cs +++ b/Source/Game/DataStorage/M2Storage.cs @@ -174,7 +174,7 @@ namespace Game.DataStorage uint oldMSTime = Time.GetMSTime(); foreach (CinematicCameraRecord cameraEntry in CliDB.CinematicCameraStorage.Values) { - string filename = dataPath + "/cameras/" + string.Format("FILE{0:x8}.xxx", cameraEntry.ModelFileDataID); + string filename = dataPath + "/cameras/" + string.Format("FILE{0:x8}.xxx", cameraEntry.FileDataID); try { diff --git a/Source/Game/DataStorage/Structs/A_Records.cs b/Source/Game/DataStorage/Structs/A_Records.cs index e904d1c2c..874bd5d71 100644 --- a/Source/Game/DataStorage/Structs/A_Records.cs +++ b/Source/Game/DataStorage/Structs/A_Records.cs @@ -27,7 +27,7 @@ namespace Game.DataStorage public LocalizedString Description; public LocalizedString Reward; public AchievementFlags Flags; - public short MapID; + public short InstanceID; public ushort Supercedes; public ushort Category; public ushort UiOrder; @@ -36,7 +36,7 @@ namespace Game.DataStorage public byte Points; public byte MinimumCriteria; public uint Id; - public uint IconFileDataID; + public uint IconFileID; public ushort CriteriaTree; } @@ -62,16 +62,16 @@ namespace Game.DataStorage public LocalizedString AreaName; public AreaFlags[] Flags = new AreaFlags[2]; public float AmbientMultiplier; - public ushort MapId; + public ushort ContinentID; public ushort ParentAreaID; public short AreaBit; public ushort AmbienceID; public ushort ZoneMusic; public ushort IntroSound; public ushort[] LiquidTypeID = new ushort[4]; - public ushort UWZoneMusic; - public ushort UWAmbience; - public ushort PvPCombastWorldStateID; + public ushort UwZoneMusic; + public ushort UwAmbience; + public ushort PvpCombastWorldStateID; public byte SoundProviderPref; public byte SoundProviderPrefUnderwater; public byte ExplorationLevel; @@ -80,11 +80,11 @@ namespace Game.DataStorage public byte WildBattlePetLevelMin; public byte WildBattlePetLevelMax; public byte WindSettingsID; - public byte UWIntroSound; + public byte UwIntroSound; public bool IsSanctuary() { - if (MapId == 609) + if (ContinentID == 609) return true; return Flags[0].HasAnyFlag(AreaFlags.Sanctuary); @@ -99,7 +99,7 @@ namespace Game.DataStorage public float BoxWidth; public float BoxHeight; public float BoxYaw; - public ushort MapID; + public ushort ContinentID; public ushort PhaseID; public ushort PhaseGroupID; public ushort ShapeID; @@ -113,18 +113,22 @@ namespace Game.DataStorage public sealed class ArmorLocationRecord { public uint Id; - public float[] Modifier = new float[5]; + public float Clothmodifier; + public float Leathermodifier; + public float Chainmodifier; + public float Platemodifier; + public float Modifier; } public sealed class ArtifactRecord { public uint Id; public LocalizedString Name; - public uint BarConnectedColor; - public uint BarDisconnectedColor; - public uint TitleColor; - public ushort ClassUiTextureKitID; - public ushort SpecID; + public uint UiBarOverlayColor; + public uint UiBarBackgroundColor; + public uint UiNameColor; + public ushort UiTextureKitID; + public ushort ChrSpecializationID; public byte ArtifactCategoryID; public byte Flags; public byte UiModelSceneID; @@ -134,30 +138,30 @@ namespace Game.DataStorage public sealed class ArtifactAppearanceRecord { public LocalizedString Name; - public uint SwatchColor; - public float ModelDesaturation; - public float ModelAlpha; - public uint ShapeshiftDisplayID; + public uint UiSwatchColor; + public float UiModelSaturation; + public float UiModelOpacity; + public uint OverrideShapeshiftDisplayID; public ushort ArtifactAppearanceSetID; - public ushort Unknown; + public ushort UiCameraID; public byte DisplayIndex; - public byte AppearanceModID; + public byte ItemAppearanceModifierID; public byte Flags; - public byte ModifiesShapeshiftFormDisplay; + public byte OverrideShapeshiftFormID; public uint Id; - public ushort PlayerConditionID; - public byte ItemAppearanceID; - public byte AltItemAppearanceID; + public ushort UnlockPlayerConditionID; + public byte UiItemAppearanceID; + public byte UiAltItemAppearanceID; } public sealed class ArtifactAppearanceSetRecord { public LocalizedString Name; - public LocalizedString Name2; + public LocalizedString Description; public ushort UiCameraID; public ushort AltHandUICameraID; public byte DisplayIndex; - public byte AttachmentPoint; + public byte ForgeAttachmentOverride; public byte Flags; public uint Id; public uint ArtifactID; @@ -166,8 +170,8 @@ namespace Game.DataStorage public sealed class ArtifactCategoryRecord { public uint Id; - public ushort ArtifactKnowledgeCurrencyID; - public ushort ArtifactKnowledgeMultiplierCurveID; + public ushort XpMultCurrencyID; + public ushort XpMultCurveID; } public sealed class ArtifactPowerRecord @@ -175,17 +179,17 @@ namespace Game.DataStorage public Vector2 Pos; public byte ArtifactID; public ArtifactPowerFlag Flags; - public byte MaxRank; - public byte ArtifactTier; + public byte MaxPurchasableRank; + public byte Tier; public uint Id; - public byte RelicType; + public byte Label; } public sealed class ArtifactPowerLinkRecord { public uint Id; - public ushort FromArtifactPowerID; - public ushort ToArtifactPowerID; + public ushort PowerA; + public ushort PowerB; } public sealed class ArtifactPowerPickerRecord @@ -198,16 +202,16 @@ namespace Game.DataStorage { public uint Id; public uint SpellID; - public float Value; - public ushort Unknown; - public byte Rank; + public float AuraPointsOverride; + public ushort ItemBonusListID; + public byte RankIndex; public uint ArtifactPowerID; } public sealed class ArtifactQuestXPRecord { public uint Id; - public uint[] Exp = new uint[10]; + public uint[] Difficulty = new uint[10]; } public sealed class AuctionHouseRecord diff --git a/Source/Game/DataStorage/Structs/B_Records.cs b/Source/Game/DataStorage/Structs/B_Records.cs index af55abc8a..569048126 100644 --- a/Source/Game/DataStorage/Structs/B_Records.cs +++ b/Source/Game/DataStorage/Structs/B_Records.cs @@ -46,16 +46,16 @@ namespace Game.DataStorage public sealed class BattlePetBreedQualityRecord { public uint Id; - public float Modifier; - public byte Quality; + public float StateMultiplier; + public byte QualityEnum; } public sealed class BattlePetBreedStateRecord { public uint Id; - public short Value; - public byte State; - public uint BreedID; + public ushort Value; + public byte BattlePetStateID; + public uint BattlePetBreedID; } public sealed class BattlePetSpeciesRecord @@ -63,22 +63,22 @@ namespace Game.DataStorage public LocalizedString SourceText; public LocalizedString Description; public uint CreatureID; - public uint IconFileID; + public uint IconFileDataID; public uint SummonSpellID; public ushort Flags; - public byte PetType; - public sbyte Source; + public byte PetTypeEnum; + public sbyte SourceTypeEnum; public uint Id; - public byte CardModelSceneID; - public byte LoadoutModelSceneID; + public byte CardUIModelSceneID; + public byte LoadoutUIModelSceneID; } public sealed class BattlePetSpeciesStateRecord { public uint Id; public int Value; - public byte State; - public uint SpeciesID; + public byte BattlePetStateID; + public uint BattlePetSpeciesID; } public sealed class BattlemasterListRecord @@ -88,10 +88,10 @@ namespace Game.DataStorage public LocalizedString GameType; public LocalizedString ShortDescription; public LocalizedString LongDescription; - public uint IconFileDataID; + public int IconFileDataID; public short[] MapId = new short[16]; public ushort HolidayWorldState; - public ushort PlayerConditionId; + public ushort RequiredPlayerConditionID; public byte InstanceType; public byte GroupsAllowed; public byte MaxGroupSize; @@ -106,14 +106,14 @@ namespace Game.DataStorage public sealed class BroadcastTextRecord { public uint Id; - public LocalizedString MaleText; - public LocalizedString FemaleText; + public LocalizedString Text; + public LocalizedString Text1; public ushort[] EmoteID = new ushort[3]; public ushort[] EmoteDelay = new ushort[3]; - public ushort UnkEmoteID; - public byte Language; - public byte Type; - public uint PlayerConditionID; - public uint[] SoundID = new uint[2]; + public ushort EmotesID; + public byte LanguageID; + public byte Flags; + public uint ConditionID; + public uint[] SoundEntriesID = new uint[2]; } } diff --git a/Source/Game/DataStorage/Structs/C_Records.cs b/Source/Game/DataStorage/Structs/C_Records.cs index 86124d92e..38aec1cf9 100644 --- a/Source/Game/DataStorage/Structs/C_Records.cs +++ b/Source/Game/DataStorage/Structs/C_Records.cs @@ -23,7 +23,7 @@ namespace Game.DataStorage public sealed class CharacterFacialHairStylesRecord { public uint ID; - public uint[] Geoset = new uint[5]; + public int[] Geoset = new int[5]; public byte RaceID; public byte SexID; public byte VariationID; @@ -32,16 +32,16 @@ namespace Game.DataStorage public sealed class CharBaseSectionRecord { public uint ID; - public CharBaseSectionVariation Variation; - public byte ResolutionVariation; - public byte Resolution; + public CharBaseSectionVariation VariationEnum; + public byte ResolutionVariationEnum; + public byte LayoutResType; } public sealed class CharSectionsRecord { public uint Id; - public uint[] TextureFileDataID = new uint[3]; - public ushort Flags; + public uint[] MaterialResourcesID = new uint[3]; + public short Flags; public byte RaceID; public byte SexID; public byte BaseSection; @@ -55,7 +55,7 @@ namespace Game.DataStorage public int[] ItemID = new int[24]; public uint PetDisplayID; public byte ClassID; - public byte GenderID; + public byte SexID; public byte OutfitID; public byte PetFamilyID; public uint RaceID; @@ -64,10 +64,10 @@ namespace Game.DataStorage public sealed class CharTitlesRecord { public uint Id; - public LocalizedString NameMale; - public LocalizedString NameFemale; + public LocalizedString Name; + public LocalizedString Name1; public ushort MaskID; - public byte Flags; + public sbyte Flags; } public sealed class ChatChannelsRecord @@ -76,7 +76,7 @@ namespace Game.DataStorage public LocalizedString Name; public LocalizedString Shortcut; public ChannelDBCFlags Flags; - public byte FactionGroup; + public sbyte FactionGroup; } public sealed class ChrClassesRecord @@ -88,18 +88,18 @@ namespace Game.DataStorage public uint FileName; public uint CreateScreenFileDataID; public uint SelectScreenFileDataID; - public uint IconFileDataID; public uint LowResScreenFileDataID; - public uint StartingLevel; + public uint IconFileDataID; + public int StartingLevel; public ushort Flags; public ushort CinematicSequenceID; public ushort DefaultSpec; - public PowerType PowerType; + public PowerType DisplayPower; public byte SpellClassSet; public byte AttackPowerPerStrength; public byte AttackPowerPerAgility; public byte RangedAttackPowerPerAgility; - public byte Unk1; + public byte PrimaryStatPriority; public uint Id; } @@ -116,57 +116,57 @@ namespace Game.DataStorage public uint ClientFileString; public LocalizedString Name; public string NameFemale; - public string LowercaseName; - public string LowercaseNameFemale; - public uint Flags; - public uint MaleDisplayID; - public uint FemaleDisplayID; - public uint CreateScreenFileDataID; - public uint SelectScreenFileDataID; - public uint[] MaleCustomizeOffset = new uint[3]; - public uint[] FemaleCustomizeOffset = new uint[3]; - public uint LowResScreenFileDataID; - public uint StartingLevel; - public uint UIDisplayOrder; + public string NameLowercase; + public string NameFemaleLowercase; + public int Flags; + public uint MaleDisplayId; + public uint FemaleDisplayId; + public int CreateScreenFileDataID; + public int SelectScreenFileDataID; + public float[] MaleCustomizeOffset = new float[3]; + public float[] FemaleCustomizeOffset = new float[3]; + public int LowResScreenFileDataID; + public int StartingLevel; + public int UiDisplayOrder; public ushort FactionID; - public ushort ResSicknessSpellID; - public ushort SplashSoundID; + public short ResSicknessSpellID; + public short SplashSoundID; public ushort CinematicSequenceID; - public byte BaseLanguage; - public byte CreatureType; - public byte TeamID; - public byte RaceRelated; - public byte UnalteredVisualRaceID; - public byte CharComponentTextureLayoutID; - public byte DefaultClassID; - public byte NeutralRaceID; - public byte ItemAppearanceFrameRaceID; - public byte CharComponentTexLayoutHiResID; + public sbyte BaseLanguage; + public sbyte CreatureType; + public sbyte Alliance; + public sbyte RaceRelated; + public sbyte UnalteredVisualRaceID; + public sbyte CharComponentTextureLayoutID; + public sbyte DefaultClassID; + public sbyte NeutralRaceID; + public sbyte DisplayRaceID; + public sbyte CharComponentTexLayoutHiResID; public uint Id; - public uint HighResMaleDisplayID; - public uint HighResFemaleDisplayID; - public uint HeritageArmorAchievementID; - public uint MaleCorpseBonesModelFileDataID; - public uint FemaleCorpseBonesModelFileDataID; - public uint[] AlteredFormTransitionSpellVisualID = new uint[3]; - public uint[] AlteredFormTransitionSpellVisualKitID = new uint[3]; + public uint HighResMaleDisplayId; + public uint HighResFemaleDisplayId; + public int HeritageArmorAchievementID; + public int MaleSkeletonFileDataID; + public int FemaleSkeletonFileDataID; + public uint[] AlteredFormStartVisualKitID = new uint[3]; + public uint[] AlteredFormFinishVisualKitID = new uint[3]; } public sealed class ChrSpecializationRecord { public string Name; - public string Name2; + public string FemaleName; public string Description; public uint[] MasterySpellID = new uint[PlayerConst.MaxMasterySpells]; public byte ClassID; public byte OrderIndex; public byte PetTalentType; public byte Role; - public byte PrimaryStatOrder; + public byte PrimaryStatPriority; public uint Id; - public uint IconFileDataID; + public int SpellIconFileID; public ChrSpecializationFlag Flags; - public uint AnimReplacementSetID; + public int AnimReplacements; public bool IsPetSpecialization() { @@ -180,7 +180,7 @@ namespace Game.DataStorage public uint SoundID; public Vector3 Origin; public float OriginFacing; - public uint ModelFileDataID; + public uint FileDataID; } public sealed class CinematicSequencesRecord @@ -195,12 +195,12 @@ namespace Game.DataStorage public uint Id; public uint BroadcastTextID; public uint SpellVisualKitID; - public uint Duration; - public ushort NextLineID; - public ushort Unk1; - public byte Yell; - public byte Unk2; - public byte Unk3; + public int AdditionalDuration; + public ushort NextConversationLineID; + public ushort AnimKitID; + public byte SpeechType; + public byte StartAnimation; + public byte EndAnimation; } public sealed class CreatureDisplayInfoRecord @@ -216,25 +216,25 @@ namespace Game.DataStorage public uint PortraitTextureFileDataID; public byte CreatureModelAlpha; public ushort SoundID; - public float PlayerModelScale; + public float PlayerOverrideScale; public uint PortraitCreatureDisplayInfoID; public byte BloodID; public ushort ParticleColorID; public uint CreatureGeosetData; public ushort ObjectEffectPackageID; public ushort AnimReplacementSetID; - public sbyte UnarmedWeaponSubclass; + public sbyte UnarmedWeaponType; public uint StateSpellVisualKitID; - public float InstanceOtherPlayerPetScale; // scale of not own player pets inside dungeons/raids/scenarios - public uint MountSpellVisualKitID; - public uint[] TextureVariation = new uint[3]; + public float PetInstanceScale; // scale of not own player pets inside dungeons/raids/scenarios + public uint MountPoofSpellVisualKitID; + public uint[] TextureVariationFileDataID = new uint[3]; } public sealed class CreatureDisplayInfoExtraRecord { public uint Id; - public uint FileDataID; - public uint HDFileDataID; + public uint BakeMaterialResourcesID; + public uint HDBakeMaterialResourcesID; public byte DisplayRaceID; public byte DisplaySexID; public byte DisplayClassID; @@ -253,7 +253,7 @@ namespace Game.DataStorage public LocalizedString Name; public float MinScale; public float MaxScale; - public uint IconFileDataID; + public uint IconFileID; public ushort[] SkillLine = new ushort[2]; public ushort PetFoodMask; public byte MinScaleLevel; @@ -271,8 +271,7 @@ namespace Game.DataStorage public float CollisionWidth; public float CollisionHeight; public float MountHeight; - public float[] GeoBoxMin = new float[3]; - public float[] GeoBoxMax = new float[3]; + public float[] GeoBox = new float[6]; public float WorldEffectScale; public float AttachedEffectScale; public float MissileCollisionRadius; @@ -289,8 +288,8 @@ namespace Game.DataStorage public uint BloodID; public byte FootprintTextureID; public byte FoleyMaterialID; - public byte FootstepEffectID; - public byte DeathThudEffectID; + public byte FootstepCameraEffectID; + public byte DeathThudCameraEffectID; public uint SoundID; public uint CreatureGeosetDataID; } @@ -341,7 +340,7 @@ namespace Game.DataStorage public byte CategoryID; public byte SpellCategory; public byte Quality; - public uint InventoryIconFileDataID; + public uint InventoryIconFileID; public uint SpellWeight; } @@ -349,15 +348,14 @@ namespace Game.DataStorage { public uint ID; public byte Type; - public byte Unused; + public byte Flags; } public sealed class CurvePointRecord { public uint Id; - public float X; - public float Y; + public Vector2 Pos; public ushort CurveID; - public byte Index; + public byte OrderIndex; } } diff --git a/Source/Game/DataStorage/Structs/D_Records.cs b/Source/Game/DataStorage/Structs/D_Records.cs index 18b02c605..efe22d70f 100644 --- a/Source/Game/DataStorage/Structs/D_Records.cs +++ b/Source/Game/DataStorage/Structs/D_Records.cs @@ -22,25 +22,25 @@ namespace Game.DataStorage public sealed class DestructibleModelDataRecord { public uint Id; - public ushort StateDamagedDisplayID; - public ushort StateDestroyedDisplayID; - public ushort StateRebuildingDisplayID; - public ushort StateSmokeDisplayID; + public ushort State0Wmo; + public ushort State1Wmo; + public ushort State2Wmo; + public ushort State3Wmo; public ushort HealEffectSpeed; - public byte StateDamagedImpactEffectDoodadSet; - public byte StateDamagedAmbientDoodadSet; - public byte StateDamagedNameSet; - public byte StateDestroyedDestructionDoodadSet; - public byte StateDestroyedImpactEffectDoodadSet; - public byte StateDestroyedAmbientDoodadSet; - public byte StateDestroyedNameSet; - public byte StateRebuildingDestructionDoodadSet; - public byte StateRebuildingImpactEffectDoodadSet; - public byte StateRebuildingAmbientDoodadSet; - public byte StateRebuildingNameSet; - public byte StateSmokeInitDoodadSet; - public byte StateSmokeAmbientDoodadSet; - public byte StateSmokeNameSet; + public byte State0ImpactEffectDoodadSet; + public byte State0AmbientDoodadSet; + public byte State0NameSet; + public byte State1DestructionDoodadSet; + public byte State1ImpactEffectDoodadSet; + public byte State1AmbientDoodadSet; + public byte State1NameSet; + public byte State2DestructionDoodadSet; + public byte State2ImpactEffectDoodadSet; + public byte State2AmbientDoodadSet; + public byte State2NameSet; + public byte State3InitDoodadSet; + public byte State3AmbientDoodadSet; + public byte State3NameSet; public byte EjectDirection; public byte DoNotHighlight; public byte HealEffect; @@ -60,7 +60,7 @@ namespace Game.DataStorage public sbyte OldEnumValue; public DifficultyFlags Flags; public byte ToggleDifficultyID; - public byte ItemBonusTreeModID; + public byte ItemContext; public byte OrderIndex; } @@ -74,7 +74,7 @@ namespace Game.DataStorage public byte Flags; public uint Id; public uint OrderIndex; - public uint TextureFileDataID; + public uint SpellIconFileID; } public sealed class DurabilityCostsRecord @@ -87,6 +87,6 @@ namespace Game.DataStorage public sealed class DurabilityQualityRecord { public uint Id; - public float QualityMod; + public float Data; } } diff --git a/Source/Game/DataStorage/Structs/E_Records.cs b/Source/Game/DataStorage/Structs/E_Records.cs index a7d7fac5f..643110c15 100644 --- a/Source/Game/DataStorage/Structs/E_Records.cs +++ b/Source/Game/DataStorage/Structs/E_Records.cs @@ -22,19 +22,19 @@ namespace Game.DataStorage public uint Id; public long RaceMask; public uint EmoteSlashCommand; - public uint SpellVisualKitID; public uint EmoteFlags; + public uint SpellVisualKitID; public ushort AnimID; public byte EmoteSpecProc; - public uint EmoteSpecProcParam; - public byte EmoteSoundID; - public short ClassMask; + public int ClassMask; + public byte EmoteSpecProcParam; + public ushort EmoteSoundID; } public sealed class EmotesTextRecord { public uint Id; - public LocalizedString Name; + public string Name; public ushort EmoteID; } diff --git a/Source/Game/DataStorage/Structs/F_Records.cs b/Source/Game/DataStorage/Structs/F_Records.cs index 47ac5c461..70c1d491d 100644 --- a/Source/Game/DataStorage/Structs/F_Records.cs +++ b/Source/Game/DataStorage/Structs/F_Records.cs @@ -22,21 +22,19 @@ namespace Game.DataStorage { public sealed class FactionRecord { - public ulong[] ReputationRaceMask = new ulong[4]; + public long[] ReputationRaceMask = new long[4]; public LocalizedString Name; public string Description; public uint Id; public int[] ReputationBase = new int[4]; - public float ParentFactionModIn; // Faction gains incoming rep * ParentFactionModIn - public float ParentFactionModOut; // Faction outputs rep * ParentFactionModOut as spillover reputation + public float[] ParentFactionMod = new float[2]; // Faction outputs rep * ParentFactionModOut as spillover reputation public uint[] ReputationMax = new uint[4]; public short ReputationIndex; public ushort[] ReputationClassMask = new ushort[4]; public ushort[] ReputationFlags = new ushort[4]; public ushort ParentFactionID; public ushort ParagonFactionID; - public byte ParentFactionCapIn; // The highest rank the faction will profit from incoming spillover - public byte ParentFactionCapOut; + public byte[] ParentFactionCap = new byte[2]; // The highest rank the faction will profit from incoming spillover public byte Expansion; public byte Flags; public byte FriendshipRepID; @@ -53,10 +51,10 @@ namespace Game.DataStorage public ushort Faction; public ushort Flags; public ushort[] Enemies = new ushort[4]; - public ushort[] Friends = new ushort[4]; - public byte Mask; - public byte FriendMask; - public byte EnemyMask; + public ushort[] Friend = new ushort[4]; + public byte FactionGroup; + public byte FriendGroup; + public byte EnemyGroup; public bool IsFriendlyTo(FactionTemplateRecord entry) { @@ -68,10 +66,10 @@ namespace Game.DataStorage if (Enemies[i] == entry.Faction) return false; for (int i = 0; i < 4; ++i) - if (Friends[i] == entry.Faction) + if (Friend[i] == entry.Faction) return true; } - return Convert.ToBoolean(FriendMask & entry.Mask) || Convert.ToBoolean(Mask & entry.FriendMask); + return Convert.ToBoolean(FriendGroup & entry.FactionGroup) || Convert.ToBoolean(FactionGroup & entry.FriendGroup); } public bool IsHostileTo(FactionTemplateRecord entry) { @@ -83,19 +81,19 @@ namespace Game.DataStorage if (Enemies[i] == entry.Faction) return true; for (int i = 0; i < 4; ++i) - if (Friends[i] == entry.Faction) + if (Friend[i] == entry.Faction) return false; } - return (EnemyMask & entry.Mask) != 0; + return (EnemyGroup & entry.FactionGroup) != 0; } - public bool IsHostileToPlayers() { return (EnemyMask & (uint)FactionMasks.Player) != 0; } + public bool IsHostileToPlayers() { return (EnemyGroup & (uint)FactionMasks.Player) != 0; } public bool IsNeutralToAll() { for (int i = 0; i < 4; ++i) if (Enemies[i] != 0) return false; - return EnemyMask == 0 && FriendMask == 0; + return EnemyGroup == 0 && FriendGroup == 0; } public bool IsContestedGuardFaction() { return Flags.HasAnyFlag((ushort)FactionTemplateFlags.ContestedGuard); } public bool ShouldSparAttack() { return Flags.HasAnyFlag((ushort)FactionTemplateFlags.EnemySpar); } diff --git a/Source/Game/DataStorage/Structs/G_Records.cs b/Source/Game/DataStorage/Structs/G_Records.cs index dbd7709a9..f77821f7f 100644 --- a/Source/Game/DataStorage/Structs/G_Records.cs +++ b/Source/Game/DataStorage/Structs/G_Records.cs @@ -20,25 +20,6 @@ using Framework.GameMath; namespace Game.DataStorage { - public sealed class GameObjectsRecord - { - public LocalizedString Name; - public Vector3 Position; - public float RotationX; - public float RotationY; - public float RotationZ; - public float RotationW; - public float Size; - public int[] Data = new int[8]; - public ushort MapID; - public ushort DisplayID; - public ushort PhaseID; - public ushort PhaseGroupID; - public byte PhaseUseFlags; - public GameObjectTypes Type; - public uint Id; - } - public sealed class GameObjectDisplayInfoRecord { public uint Id; @@ -50,50 +31,66 @@ namespace Game.DataStorage public ushort ObjectEffectPackageID; } + public sealed class GameObjectsRecord + { + public LocalizedString Name; + public Vector3 Pos; + public float[] Rot = new float[4]; + public float Scale; + public int[] PropValue = new int[8]; + public ushort OwnerID; + public ushort DisplayID; + public ushort PhaseID; + public ushort PhaseGroupID; + public byte PhaseUseFlags; + public GameObjectTypes TypeID; + public uint Id; + } + public sealed class GarrAbilityRecord { public LocalizedString Name; public LocalizedString Description; public uint IconFileDataID; public GarrisonAbilityFlags Flags; - public ushort OtherFactionGarrAbilityID; + public ushort FactionChangeGarrAbilityID; public byte GarrAbilityCategoryID; - public byte FollowerTypeID; + public byte GarrFollowerTypeID; public uint Id; } public sealed class GarrBuildingRecord { public uint Id; - public string NameAlliance; - public string NameHorde; + public string AllianceName; + public string HordeName; public string Description; public string Tooltip; public uint HordeGameObjectID; public uint AllianceGameObjectID; public uint IconFileDataID; - public ushort CostCurrencyID; - public ushort HordeTexPrefixKitID; - public ushort AllianceTexPrefixKitID; - public ushort AllianceActivationScenePackageID; - public ushort HordeActivationScenePackageID; - public ushort FollowerRequiredGarrAbilityID; - public ushort FollowerGarrAbilityEffectID; - public short CostMoney; - public byte Unknown; - public byte Type; - public byte Level; + public ushort CurrencyTypeID; + public ushort HordeUiTextureKitID; + public ushort AllianceUiTextureKitID; + public ushort AllianceSceneScriptPackageID; + public ushort HordeSceneScriptPackageID; + public ushort GarrAbilityID; + public ushort BonusGarrAbilityID; + public short GoldCost; + public byte GarrSiteID; + public byte BuildingType; + public byte UpgradeLevel; public GarrisonBuildingFlags Flags; - public byte MaxShipments; + public byte ShipmentCapacity; public byte GarrTypeID; - public ushort BuildDuration; - public int CostCurrencyAmount; - public byte BonusAmount; + public ushort BuildSeconds; + public int CurrencyQty; + public byte MaxAssignments; } public sealed class GarrBuildingPlotInstRecord { - public Vector2 LandmarkOffset; + public Vector2 MapOffset; public ushort UiTextureAtlasMemberID; public ushort GarrSiteLevelPlotInstID; public byte GarrBuildingID; @@ -102,12 +99,12 @@ namespace Game.DataStorage public sealed class GarrClassSpecRecord { - public LocalizedString NameMale; - public LocalizedString NameFemale; - public LocalizedString NameGenderless; - public ushort ClassAtlasID; // UiTextureAtlasMember.db2 ref + public LocalizedString ClassSpec; + public LocalizedString ClassSpecMale; + public LocalizedString ClassSpecFemale; + public ushort UiTextureAtlasMemberID; // UiTextureAtlasMember.db2 ref public ushort GarrFollItemSetID; - public byte Limit; + public byte FollowerClassLimit; public byte Flags; public uint Id; } @@ -116,35 +113,35 @@ namespace Game.DataStorage { public string HordeSourceText; public string AllianceSourceText; - public string Name; + public string TitleName; public uint HordeCreatureID; public uint AllianceCreatureID; - public uint HordePortraitIconID; - public uint AlliancePortraitIconID; - public uint HordeAddedBroadcastTextID; - public uint AllianceAddedBroadcastTextID; + public uint HordeIconFileDataID; + public uint AllianceIconFileDataID; + public uint HordeSlottingBroadcastTextID; + public uint AllySlottingBroadcastTextID; public ushort HordeGarrFollItemSetID; public ushort AllianceGarrFollItemSetID; public ushort ItemLevelWeapon; public ushort ItemLevelArmor; - public ushort HordeListPortraitTextureKitID; - public ushort AllianceListPortraitTextureKitID; - public byte FollowerTypeID; - public byte HordeUiAnimRaceInfoID; - public byte AllianceUiAnimRaceInfoID; + public ushort HordeUITextureKitID; + public ushort AllianceUITextureKitID; + public byte GarrFollowerTypeID; + public byte HordeGarrFollRaceID; + public byte AllianceGarrFollRaceID; public byte Quality; public byte HordeGarrClassSpecID; public byte AllianceGarrClassSpecID; - public byte Level; - public byte Unknown1; + public byte FollowerLevel; + public byte Gender; public byte Flags; - public sbyte Unknown2; - public sbyte Unknown3; + public sbyte HordeSourceTypeEnum; + public sbyte AllianceSourceTypeEnum; public byte GarrTypeID; - public byte MaxDurability; - public byte Class; - public byte HordeFlavorTextGarrStringID; - public byte AllianceFlavorTextGarrStringID; + public byte Vitality; + public byte ChrClassID; + public byte HordeFlavorGarrStringID; + public byte AllianceFlavorGarrStringID; public uint Id; } @@ -160,12 +157,12 @@ namespace Game.DataStorage { public uint Id; public LocalizedString Name; - public uint AllianceConstructionGameObjectID; - public uint HordeConstructionGameObjectID; - public byte GarrPlotUICategoryID; + public uint AllianceConstructObjID; + public uint HordeConstructObjID; + public byte UiCategoryID; public byte PlotType; public byte Flags; - public uint[] Count = new uint[2]; + public uint[] UpgradeRequirement = new uint[2]; } public sealed class GarrPlotBuildingRecord @@ -178,38 +175,38 @@ namespace Game.DataStorage public sealed class GarrPlotInstanceRecord { public uint Id; - public LocalizedString Name; + public string Name; public byte GarrPlotID; } public sealed class GarrSiteLevelRecord { public uint Id; - public Vector2 TownHall; + public Vector2 TownHallUiPos; public ushort MapID; - public ushort SiteID; - public ushort MovieID; - public ushort UpgradeResourceCost; - public ushort UpgradeMoneyCost; - public byte Level; - public byte UITextureKitID; - public byte Level2; + public ushort UiTextureKitID; + public ushort UpgradeMovieID; + public ushort UpgradeCost; + public ushort UpgradeGoldCost; + public byte GarrLevel; + public byte GarrSiteID; + public byte MaxBuildingLevel; } public sealed class GarrSiteLevelPlotInstRecord { public uint Id; - public Vector2 Landmark; + public Vector2 UiMarkerPos; public ushort GarrSiteLevelID; public byte GarrPlotInstanceID; - public byte Unknown; + public byte UiMarkerSize; } public sealed class GemPropertiesRecord { public uint Id; public SocketColor Type; - public ushort EnchantID; + public ushort EnchantId; public ushort MinItemLevel; } @@ -225,7 +222,7 @@ namespace Game.DataStorage public uint Id; public uint SpellID; public ushort SpellIconID; - public byte Type; + public byte GlyphType; public byte GlyphExclusiveCategoryID; } diff --git a/Source/Game/DataStorage/Structs/H_Records.cs b/Source/Game/DataStorage/Structs/H_Records.cs index 79ce5f282..9aed2638e 100644 --- a/Source/Game/DataStorage/Structs/H_Records.cs +++ b/Source/Game/DataStorage/Structs/H_Records.cs @@ -23,12 +23,13 @@ namespace Game.DataStorage { public string SourceText; public uint ItemID; - public uint[] OldItem = new uint[2]; - public uint NextDifficultyItemID; + public uint LegacyItemID; + public uint LegacyUpgradedItemID; + public uint StaticUpgradedItemID; public uint[] UpgradeItemID = new uint[3]; - public ushort[] ItemBonusListID = new ushort[3]; + public ushort[] UpgradeItemBonusListID = new ushort[3]; public byte Flags; - public byte Source; + public byte SourceTypeEnum; public uint Id; } diff --git a/Source/Game/DataStorage/Structs/I_Records.cs b/Source/Game/DataStorage/Structs/I_Records.cs index 542093842..b71f0aa34 100644 --- a/Source/Game/DataStorage/Structs/I_Records.cs +++ b/Source/Game/DataStorage/Structs/I_Records.cs @@ -22,50 +22,50 @@ namespace Game.DataStorage public sealed class ImportPriceArmorRecord { public uint Id; - public float ClothFactor; - public float LeatherFactor; - public float MailFactor; - public float PlateFactor; + public float ClothModifier; + public float LeatherModifier; + public float ChainModifier; + public float PlateModifier; } public sealed class ImportPriceQualityRecord { public uint Id; - public float Factor; + public float Data; } public sealed class ImportPriceShieldRecord { public uint Id; - public float Factor; + public float Data; } public sealed class ImportPriceWeaponRecord { public uint Id; - public float Factor; + public float Data; } public sealed class ItemRecord { public uint Id; - public uint FileDataID; - public ItemClass Class; - public byte SubClass; - public sbyte SoundOverrideSubclass; - public sbyte Material; + public uint IconFileDataID; + public ItemClass ClassID; + public byte SubclassID; + public sbyte SoundOverrideSubclassID; + public byte Material; public InventoryType inventoryType; - public byte Sheath; - public byte GroupSoundsID; + public byte SheatheType; + public byte ItemGroupSoundsID; } public sealed class ItemAppearanceRecord { public uint Id; - public uint DisplayID; - public uint IconFileDataID; + public uint ItemDisplayInfoID; + public uint DefaultIconFileDataID; public uint UIOrder; - public byte ObjectComponentSlot; + public byte DisplayType; } public sealed class ItemArmorQualityRecord @@ -85,7 +85,10 @@ namespace Game.DataStorage public sealed class ItemArmorTotalRecord { public uint Id; - public float[] Value = new float[4]; + public float Cloth; + public float Leather; + public float Mail; + public float Plate; public ushort ItemLevel; } @@ -99,48 +102,48 @@ namespace Game.DataStorage { public uint Id; public int[] Value = new int[3]; - public ushort BonusListID; + public ushort ParentItemBonusListID; public ItemBonusType Type; - public byte Index; + public byte OrderIndex; } public sealed class ItemBonusListLevelDeltaRecord { - public short Delta; + public short ItemLevelDelta; public uint Id; } public sealed class ItemBonusTreeNodeRecord { public uint Id; - public ushort SubTreeID; - public ushort BonusListID; - public ushort ItemLevelSelectorID; - public byte BonusTreeModID; - public uint BonusTreeID; + public ushort ChildItemBonusTreeID; + public ushort ChildItemBonusListID; + public ushort ChildItemLevelSelectorID; + public byte ItemContext; + public uint ParentItemBonusTreeID; } public sealed class ItemChildEquipmentRecord { public uint Id; - public uint AltItemID; - public byte AltEquipmentSlot; - public uint ItemID; + public uint ChildItemID; + public byte ChildItemEquipSlot; + public uint ParentItemID; } public sealed class ItemClassRecord { public uint Id; - public string Name; - public float PriceMod; - public byte OldEnumValue; + public string ClassName; + public float PriceModifier; + public byte ClassID; public byte Flags; } public sealed class ItemCurrencyCostRecord { public uint Id; - public uint ItemId; + public uint ItemID; } // common struct for: @@ -155,71 +158,71 @@ namespace Game.DataStorage public sealed class ItemDamageRecord { public uint Id; - public float[] DPS = new float[7]; + public float[] Quality = new float[7]; public ushort ItemLevel; } public sealed class ItemDisenchantLootRecord { public uint Id; - public ushort MinItemLevel; - public ushort MaxItemLevel; - public ushort RequiredDisenchantSkill; - public sbyte ItemSubClass; - public byte ItemQuality; - public sbyte Expansion; - public uint ItemClass; + public ushort MinLevel; + public ushort MaxLevel; + public ushort SkillRequired; + public sbyte Subclass; + public byte Quality; + public sbyte ExpansionID; + public uint ClassID; } public sealed class ItemEffectRecord { public uint Id; public uint SpellID; - public int Cooldown; - public int CategoryCooldown; + public int CoolDownMSec; + public int CategoryCoolDownMSec; public short Charges; - public ushort Category; + public ushort SpellCategoryID; public ushort ChrSpecializationID; - public byte OrderIndex; - public ItemSpelltriggerType Trigger; - public uint ItemID; + public byte LegacySlotIndex; + public ItemSpelltriggerType TriggerType; + public uint ParentItemID; } public sealed class ItemExtendedCostRecord { public uint Id; - public uint[] RequiredItem = new uint[ItemConst.MaxItemExtCostItems]; // required item id - public uint[] RequiredCurrencyCount = new uint[ItemConst.MaxItemExtCostCurrencies]; // required curency count - public ushort[] RequiredItemCount = new ushort[ItemConst.MaxItemExtCostItems]; // required count of 1st item - public ushort RequiredPersonalArenaRating; // required personal arena rating - public ushort[] RequiredCurrency = new ushort[ItemConst.MaxItemExtCostCurrencies]; // required curency id - public byte RequiredArenaSlot; // arena slot restrictions (min slot value) - public byte RequiredFactionId; - public byte RequiredFactionStanding; - public byte RequirementFlags; + public uint[] ItemID = new uint[ItemConst.MaxItemExtCostItems]; // required item id + public uint[] CurrencyCount = new uint[ItemConst.MaxItemExtCostCurrencies]; // required curency count + public ushort[] ItemCount = new ushort[ItemConst.MaxItemExtCostItems]; // required count of 1st item + public ushort RequiredArenaRating; // required personal arena rating + public ushort[] CurrencyID = new ushort[ItemConst.MaxItemExtCostCurrencies]; // required curency id + public byte ArenaBracket; // arena slot restrictions (min slot value) + public byte MinFactionID; + public byte MinReputation; + public byte Flags; public byte RequiredAchievement; } public sealed class ItemLevelSelectorRecord { public uint ID; - public ushort ItemLevel; + public ushort MinItemLevel; public ushort ItemLevelSelectorQualitySetID; } public sealed class ItemLevelSelectorQualityRecord { public uint ID; - public uint ItemBonusListID; + public uint QualityItemBonusListID; public byte Quality; - public uint ItemLevelSelectorQualitySetID; + public uint ParentILSQualitySetID; } public sealed class ItemLevelSelectorQualitySetRecord { public uint ID; - public ushort ItemLevelMin; - public ushort ItemLevelMax; + public ushort IlvlRare; + public ushort IlvlEpic; } public sealed class ItemLimitCategoryRecord @@ -234,17 +237,17 @@ namespace Game.DataStorage { public uint ItemID; public uint Id; - public byte AppearanceModID; - public ushort AppearanceID; - public byte Index; - public byte SourceType; + public byte ItemAppearanceModifierID; + public ushort ItemAppearanceID; + public byte OrderIndex; + public byte TransmogSourceTypeEnum; } public sealed class ItemPriceBaseRecord { public uint Id; - public float ArmorFactor; - public float WeaponFactor; + public float Armor; + public float Weapon; public ushort ItemLevel; } @@ -266,19 +269,19 @@ namespace Game.DataStorage public sealed class ItemSearchNameRecord { public ulong AllowableRace; - public LocalizedString Name; + public LocalizedString Display; public uint Id; public uint[] Flags = new uint[3]; public ushort ItemLevel; - public byte Quality; - public byte RequiredExpansion; + public byte OverallQualityID; + public byte ExpansionID; public byte RequiredLevel; - public ushort RequiredReputationFaction; - public byte RequiredReputationRank; + public ushort MinFactionID; + public byte MinReputation; public short AllowableClass; public ushort RequiredSkill; public ushort RequiredSkillRank; - public uint RequiredSpell; + public uint RequiredAbility; } public sealed class ItemSetRecord @@ -288,7 +291,7 @@ namespace Game.DataStorage public uint[] ItemID = new uint[17]; public ushort RequiredSkillRank; public byte RequiredSkill; - public ItemSetFlags Flags; + public ItemSetFlags SetFlags; } public sealed class ItemSetSpellRecord @@ -304,75 +307,75 @@ namespace Game.DataStorage { public uint Id; public long AllowableRace; - public LocalizedString Name; - public string Name2; - public string Name3; - public string Name4; + public LocalizedString Display; + public string Display2; + public string Display3; + public string Display4; public string Description; public uint[] Flags = new uint[4]; - public float Unk1; - public float Unk2; - public uint BuyCount; + public float PriceRandomValue; + public float PriceVariance; + public uint VendorStackCount; public uint BuyPrice; public uint SellPrice; - public uint RequiredSpell; + public uint RequiredAbility; public uint MaxCount; public uint Stackable; - public int[] ItemStatAllocation = new int[ItemConst.MaxStats]; - public float[] ItemStatSocketCostMultiplier = new float[ItemConst.MaxStats]; - public float RangedModRange; + public int[] StatPercentEditor = new int[ItemConst.MaxStats]; + public float[] StatPercentageOfSocket = new float[ItemConst.MaxStats]; + public float ItemRange; public uint BagFamily; - public float ArmorDamageModifier;//wrong? - public uint Duration; - public float StatScalingFactor; + public float QualityModifier; + public uint DurationInInventory; + public float DmgVariance; public short AllowableClass; public ushort ItemLevel; public ushort RequiredSkill; public ushort RequiredSkillRank; - public ushort RequiredReputationFaction; + public ushort MinFactionID; public short[] ItemStatValue = new short[ItemConst.MaxStats]; - public ushort ScalingStatDistribution; - public ushort Delay; - public ushort PageText; - public ushort StartQuest; + public ushort ScalingStatDistributionID; + public ushort ItemDelay; + public ushort PageID; + public ushort StartQuestID; public ushort LockID; - public ushort RandomProperty; - public ushort RandomSuffix; + public ushort RandomSelect; + public ushort ItemRandomSuffixGroupID; public ushort ItemSet; - public ushort Area; - public ushort Map; - public ushort TotemCategory; - public ushort SocketBonus; + public ushort ZoneBound; + public ushort InstanceBound; + public ushort TotemCategoryID; + public ushort SocketMatchEnchantmentId; public ushort GemProperties; - public ushort ItemLimitCategory; - public ushort HolidayID; - public ushort RequiredTransmogHolidayID; + public ushort LimitCategory; + public ushort RequiredHoliday; + public ushort RequiredTransmogHoliday; public ushort ItemNameDescriptionID; - public byte Quality; + public byte OverallQualityID; public InventoryType inventoryType; public sbyte RequiredLevel; - public byte RequiredHonorRank; - public byte RequiredCityRank; - public byte RequiredReputationRank; + public byte RequiredPVPRank; + public byte RequiredPVPMedal; + public byte MinReputation; public byte ContainerSlots; - public sbyte[] ItemStatType = new sbyte[ItemConst.MaxStats]; + public sbyte[] StatModifierBonusStat = new sbyte[ItemConst.MaxStats]; public byte DamageType; public byte Bonding; public byte LanguageID; - public byte PageMaterial; + public byte PageMaterialID; public sbyte Material; - public byte Sheath; - public byte[] SocketColor = new byte[ItemConst.MaxGemSockets]; - public byte CurrencySubstitutionID; - public byte CurrencySubstitutionCount; + public byte SheatheType; + public byte[] SocketType = new byte[ItemConst.MaxGemSockets]; + public byte SpellWeightCategory; + public byte SpellWeight; public byte ArtifactID; - public byte RequiredExpansion; + public byte ExpansionID; } public sealed class ItemSpecRecord { public uint Id; - public ushort SpecID; + public ushort SpecializationID; public byte MinLevel; public byte MaxLevel; public byte ItemType; @@ -390,17 +393,17 @@ namespace Game.DataStorage public sealed class ItemUpgradeRecord { public uint Id; - public uint CurrencyCost; - public ushort PrevItemUpgradeID; - public ushort CurrencyID; + public uint CurrencyAmount; + public ushort PrerequisiteID; + public ushort CurrencyType; public byte ItemUpgradePathID; - public byte ItemLevelBonus; + public byte ItemLevelIncrement; } public sealed class ItemXBonusTreeRecord { public uint Id; - public ushort BonusTreeID; + public ushort ItemBonusTreeID; public uint ItemID; } } diff --git a/Source/Game/DataStorage/Structs/L_Records.cs b/Source/Game/DataStorage/Structs/L_Records.cs index 2019562e9..f6aafa75b 100644 --- a/Source/Game/DataStorage/Structs/L_Records.cs +++ b/Source/Game/DataStorage/Structs/L_Records.cs @@ -26,23 +26,23 @@ namespace Game.DataStorage public LocalizedString Name; public string Description; public LfgFlags Flags; - public float MinItemLevel; + public float MinGear; public ushort MaxLevel; public ushort TargetLevelMax; public short MapID; public ushort RandomID; public ushort ScenarioID; - public ushort LastBossJournalEncounterID; + public ushort FinalEncounterID; public ushort BonusReputationAmount; public ushort MentorItemLevel; - public ushort PlayerConditionID; + public ushort RequiredPlayerConditionId; public byte MinLevel; public byte TargetLevel; public byte TargetLevelMin; public Difficulty DifficultyID; - public LfgType Type; + public LfgType TypeID; public byte Faction; - public byte Expansion; + public byte ExpansionLevel; public byte OrderIndex; public byte GroupID; public byte CountTank; @@ -51,30 +51,30 @@ namespace Game.DataStorage public byte MinCountTank; public byte MinCountHealer; public byte MinCountDamage; - public byte SubType; + public byte Subtype; public byte MentorCharLevel; - public int TextureFileDataID; - public int RewardIconFileDataID; - public int ProposalTextureFileDataID; + public int IconTextureFileID; + public int RewardsBgTextureFileID; + public int PopupBgTextureFileID; // Helpers - public uint Entry() { return (uint)(Id + ((int)Type << 24)); } + public uint Entry() { return (uint)(Id + ((int)TypeID << 24)); } } public sealed class LightRecord { public uint Id; - public Vector3 Pos; - public float FalloffStart; - public float FalloffEnd; - public ushort MapID; + public Vector3 GameCoords; + public float GameFalloffStart; + public float GameFalloffEnd; + public ushort ContinentID; public ushort[] LightParamsID = new ushort[8]; } public sealed class LiquidTypeRecord { public uint Id; - public LocalizedString Name; + public string Name; public string[] Texture = new string[6]; public uint SpellID; public float MaxDarkenDepth; @@ -87,11 +87,11 @@ namespace Game.DataStorage public uint[] Int = new uint[4]; public ushort Flags; public ushort LightID; - public byte LiquidType; + public byte SoundBank; public byte ParticleMovement; public byte ParticleTexSlots; public byte MaterialID; - public byte[] DepthTexCount = new byte[6]; + public byte[] FrameCountTexture = new byte[6]; public ushort SoundID; } diff --git a/Source/Game/DataStorage/Structs/M_Records.cs b/Source/Game/DataStorage/Structs/M_Records.cs index 93c30bc0b..876429cd0 100644 --- a/Source/Game/DataStorage/Structs/M_Records.cs +++ b/Source/Game/DataStorage/Structs/M_Records.cs @@ -33,11 +33,11 @@ namespace Game.DataStorage public LocalizedString MapName; public string MapDescription0; // Horde public string MapDescription1; // Alliance - public string ShortDescription; - public string LongDescription; + public string PvpShortDescription; + public string PvpLongDescription; public MapFlags[] Flags = new MapFlags[2]; public float MinimapIconScale; - public Vector2 CorpsePos; // entrance coordinates in ghost mode (in most cases = normal entrance) + public Vector2 Corpse; // entrance coordinates in ghost mode (in most cases = normal entrance) public ushort AreaTableID; public ushort LoadingScreenID; public short CorpseMapID; // map_id of entrance map in ghost mode (continent always and in most cases = normal entrance) @@ -46,7 +46,7 @@ namespace Game.DataStorage public short CosmeticParentMapID; public ushort WindSettingsID; public MapTypes InstanceType; - public byte unk5; + public byte MapType; public byte ExpansionID; public byte MaxPlayers; public byte TimeOffset; @@ -76,8 +76,8 @@ namespace Game.DataStorage if (CorpseMapID < 0) return false; mapid = (uint)CorpseMapID; - x = CorpsePos.X; - y = CorpsePos.Y; + x = Corpse.X; + y = Corpse.Y; return true; } @@ -93,21 +93,21 @@ namespace Game.DataStorage public sealed class MapDifficultyRecord { public uint Id; - public LocalizedString Message_lang; // m_message_lang (text showed when transfer to map failed) + public LocalizedString Message; // m_message_lang (text showed when transfer to map failed) public byte DifficultyID; - public byte RaidDurationType; // 1 means daily reset, 2 means weekly + public byte ResetInterval; // 1 means daily reset, 2 means weekly public byte MaxPlayers; // m_maxPlayers some heroic versions have 0 when expected same amount as in normal version public byte LockID; public byte Flags; - public byte ItemBonusTreeModID; - public uint Context; + public byte ItemContext; + public uint ItemContextPickerID; public uint MapID; public uint GetRaidDuration() { - if (RaidDurationType == 1) + if (ResetInterval == 1) return 86400; - if (RaidDurationType == 2) + if (ResetInterval == 2) return 604800; return 0; } @@ -116,10 +116,11 @@ namespace Game.DataStorage public sealed class ModifierTreeRecord { public uint Id; - public uint[] Asset = new uint[2]; + public uint Asset; + public uint SecondaryAsset; public uint Parent; public byte Type; - public byte Unk700; + public byte TertiaryAsset; public byte Operator; public byte Amount; } @@ -128,14 +129,14 @@ namespace Game.DataStorage { public string Name; public string Description; - public string SourceDescription; - public uint SpellId; - public float CameraPivotMultiplier; - public ushort MountTypeId; + public string SourceText; + public uint SourceSpellID; + public float MountFlyRideHeight; + public ushort MountTypeID; public ushort Flags; - public byte Source; + public byte SourceTypeEnum; public uint Id; - public uint PlayerConditionId; + public uint PlayerConditionID; public byte UiModelSceneID; public bool IsSelfMount() { return (Flags & (ushort)MountFlags.SelfMount) != 0; } @@ -143,14 +144,14 @@ namespace Game.DataStorage public sealed class MountCapabilityRecord { - public uint RequiredSpell; - public uint SpeedModSpell; - public ushort RequiredRidingSkill; - public ushort RequiredArea; - public short RequiredMap; + public uint ReqSpellKnownID; + public uint ModSpellAuraID; + public ushort ReqRidingSkill; + public ushort ReqAreaID; + public short ReqMapID; public MountCapabilityFlags Flags; public uint Id; - public byte RequiredAura; + public byte ReqSpellAuraID; } public sealed class MountTypeXCapabilityRecord @@ -164,7 +165,7 @@ namespace Game.DataStorage public sealed class MountXDisplayRecord { public uint Id; - public uint DisplayID; + public uint CreatureDisplayInfoID; public uint PlayerConditionID; public uint MountID; } diff --git a/Source/Game/DataStorage/Structs/N_Records.cs b/Source/Game/DataStorage/Structs/N_Records.cs index 6b304b23a..ac30f3083 100644 --- a/Source/Game/DataStorage/Structs/N_Records.cs +++ b/Source/Game/DataStorage/Structs/N_Records.cs @@ -20,8 +20,8 @@ namespace Game.DataStorage public sealed class NameGenRecord { public uint Id; - public LocalizedString Name; - public byte Race; + public string Name; + public byte RaceID; public byte Sex; } diff --git a/Source/Game/DataStorage/Structs/O_Records.cs b/Source/Game/DataStorage/Structs/O_Records.cs index f170fa819..f1e8bab49 100644 --- a/Source/Game/DataStorage/Structs/O_Records.cs +++ b/Source/Game/DataStorage/Structs/O_Records.cs @@ -22,8 +22,8 @@ namespace Game.DataStorage public sealed class OverrideSpellDataRecord { public uint Id; - public uint[] SpellID = new uint[SharedConst.MaxOverrideSpell]; - public uint PlayerActionbarFileDataID; + public uint[] Spells = new uint[SharedConst.MaxOverrideSpell]; + public uint PlayerActionBarFileDataID; public byte Flags; } } diff --git a/Source/Game/DataStorage/Structs/P_Records.cs b/Source/Game/DataStorage/Structs/P_Records.cs index 0a452f854..249a16ad8 100644 --- a/Source/Game/DataStorage/Structs/P_Records.cs +++ b/Source/Game/DataStorage/Structs/P_Records.cs @@ -51,7 +51,7 @@ namespace Game.DataStorage public ushort MaxFactionID; public byte MaxReputation; public uint ReputationLogic; - public byte Unknown1; + public byte CurrentPvpFaction; public byte MinPVPRank; public byte MaxPVPRank; public byte PvpMedal; @@ -91,7 +91,7 @@ namespace Game.DataStorage public byte PowerTypeComp; public byte PowerTypeValue; public uint ModifierTreeID; - public int MainHandItemSubclassMask; + public int WeaponSubclassMask; public ushort[] SkillID = new ushort[4]; public short[] MinSkill = new short[4]; public short[] MaxSkill = new short[4]; @@ -106,7 +106,7 @@ namespace Game.DataStorage public ushort[] Explored = new ushort[2]; public uint[] Time = new uint[2]; public uint[] AuraSpellID = new uint[4]; - public byte[] AuraCount = new byte[4]; + public byte[] AuraStacks = new byte[4]; public ushort[] Achievement = new ushort[4]; public byte[] LfgStatus = new byte[4]; public byte[] LfgCompare = new byte[4]; @@ -122,7 +122,7 @@ namespace Game.DataStorage { public uint Id; public uint GlobalStringBaseTag; - public byte PowerType; + public byte ActualType; public byte Red; public byte Green; public byte Blue; @@ -131,25 +131,25 @@ namespace Game.DataStorage public sealed class PowerTypeRecord { public uint Id; - public string PowerTypeToken; - public string PowerCostToken; - public float RegenerationPeace; - public float RegenerationCombat; - public short MaxPower; - public ushort RegenerationDelay; + public string NameGlobalStringTag; + public string CostGlobalStringTag; + public float RegenPeace; + public float RegenCombat; + public short MaxBasePower; + public ushort RegenInterruptTimeMS; public ushort Flags; public PowerType PowerTypeEnum; - public sbyte RegenerationMin; - public sbyte RegenerationCenter; - public sbyte RegenerationMax; - public byte UIModifier; + public sbyte MinPower; + public sbyte CenterPower; + public sbyte DefaultPower; + public sbyte DisplayModifier; } public sealed class PrestigeLevelInfoRecord { public uint Id; - public string PrestigeText; - public uint IconID; + public string Name; + public uint BadgeTextureFileDataID; public byte PrestigeLevel; public PrestigeLevelInfoFlags Flags; @@ -159,27 +159,27 @@ namespace Game.DataStorage public sealed class PvpDifficultyRecord { public uint Id; - public byte BracketID; + public byte RangeIndex; public byte MinLevel; public byte MaxLevel; public uint MapID; // helpers - public BattlegroundBracketId GetBracketId() { return (BattlegroundBracketId)BracketID; } + public BattlegroundBracketId GetBracketId() { return (BattlegroundBracketId)RangeIndex; } } public sealed class PvpItemRecord { public uint Id; public uint ItemID; - public byte ItemLevelBonus; + public byte ItemLevelDelta; } public sealed class PvpRewardRecord { public uint Id; public byte HonorLevel; - public byte Prestige; + public byte PrestigeLevel; public ushort RewardPackID; } @@ -189,7 +189,7 @@ namespace Game.DataStorage public LocalizedString Description; public uint SpellID; public uint OverridesSpellID; - public int ExtraSpellID; + public int ActionBarSpellID; public int TierID; public byte ColumnIndex; public byte Flags; diff --git a/Source/Game/DataStorage/Structs/Q_Records.cs b/Source/Game/DataStorage/Structs/Q_Records.cs index cbae70a7b..a0a340256 100644 --- a/Source/Game/DataStorage/Structs/Q_Records.cs +++ b/Source/Game/DataStorage/Structs/Q_Records.cs @@ -22,29 +22,29 @@ namespace Game.DataStorage public sealed class QuestFactionRewardRecord { public uint Id; - public short[] QuestRewFactionValue = new short[10]; + public short[] Difficulty = new short[10]; } public sealed class QuestMoneyRewardRecord { public uint Id; - public uint[] Money = new uint[10]; + public uint[] Difficulty = new uint[10]; } public sealed class QuestPackageItemRecord { public uint Id; public uint ItemID; - public ushort QuestPackageID; - public QuestPackageFilter FilterType; - public byte ItemCount; + public ushort PackageID; + public QuestPackageFilter DisplayType; + public byte ItemQuantity; } public sealed class QuestSortRecord { public uint Id; public LocalizedString SortName; - public byte SortOrder; + public byte UiOrderIndex; } public sealed class QuestV2Record @@ -56,6 +56,6 @@ namespace Game.DataStorage public sealed class QuestXPRecord { public uint Id; - public ushort[] Exp = new ushort[10]; + public ushort[] Difficulty = new ushort[10]; } } diff --git a/Source/Game/DataStorage/Structs/R_Records.cs b/Source/Game/DataStorage/Structs/R_Records.cs index ac019d95a..67193a10a 100644 --- a/Source/Game/DataStorage/Structs/R_Records.cs +++ b/Source/Game/DataStorage/Structs/R_Records.cs @@ -20,9 +20,9 @@ namespace Game.DataStorage public sealed class RandPropPointsRecord { public uint Id; - public uint[] EpicPropertiesPoints = new uint[5]; - public uint[] RarePropertiesPoints = new uint[5]; - public uint[] UncommonPropertiesPoints = new uint[5]; + public uint[] Epic = new uint[5]; + public uint[] Superior = new uint[5]; + public uint[] Good = new uint[5]; } public sealed class RewardPackRecord @@ -31,16 +31,16 @@ namespace Game.DataStorage public uint Money; public float ArtifactXPMultiplier; public byte ArtifactXPDifficulty; - public byte ArtifactCategoryID; - public ushort TitleID; - public ushort Unused; + public byte ArtifactXPCategoryID; + public ushort CharTitleID; + public ushort TreasurePickerID; } public sealed class RewardPackXItemRecord { public uint Id; public uint ItemID; - public uint Amount; + public uint ItemQuantity; public uint RewardPackID; } diff --git a/Source/Game/DataStorage/Structs/S_Records.cs b/Source/Game/DataStorage/Structs/S_Records.cs index 2225df8c8..b00fdb05f 100644 --- a/Source/Game/DataStorage/Structs/S_Records.cs +++ b/Source/Game/DataStorage/Structs/S_Records.cs @@ -32,7 +32,7 @@ namespace Game.DataStorage public sealed class ScalingStatDistributionRecord { public uint Id; - public ushort ItemLevelCurveID; + public ushort PlayerLevelToItemLevelCurveID; public byte MinLevel; public uint MaxLevel; } @@ -41,7 +41,7 @@ namespace Game.DataStorage { public uint Id; public LocalizedString Name; - public ushort Data; // Seems to indicate different things, for zone invasions, this is the area id + public ushort AreaTableID; public byte Flags; public byte Type; } @@ -50,14 +50,14 @@ namespace Game.DataStorage { public uint Id; public LocalizedString Description; - public LocalizedString Name; + public LocalizedString Title; public ushort ScenarioID; - public ushort PreviousStepID; // Used in conjunction with Proving Grounds scenarios, when sequencing steps (Not using step order?) - public ushort QuestRewardID; - public byte Step; + public ushort Supersedes; // Used in conjunction with Proving Grounds scenarios, when sequencing steps (Not using step order?) + public ushort RewardQuestID; + public byte OrderIndex; public ScenarioStepFlags Flags; - public ushort CriteriaTreeID; - public byte BonusRequiredStepID; // Bonus step can only be completed if scenario is in the step specified in this field + public ushort CriteriaTreeId; + public byte RelatedStep; // Bonus step can only be completed if scenario is in the step specified in this field // helpers public bool IsBonusObjective() @@ -69,8 +69,8 @@ namespace Game.DataStorage public sealed class SceneScriptRecord { public uint Id; - public ushort PrevScriptId; - public ushort NextScriptId; + public ushort FirstSceneScriptID; + public ushort NextSceneScriptID; } public sealed class SceneScriptGlobalTextRecord @@ -102,15 +102,15 @@ namespace Game.DataStorage public ushort Flags; public SkillCategory CategoryID; public byte CanLink; - public uint IconFileDataID; + public uint SpellIconFileID; public byte ParentSkillLineID; } public sealed class SkillLineAbilityRecord { - public ulong RaceMask; + public long RaceMask; public uint Id; - public uint SpellID; + public uint Spell; public uint SupercedesSpell; public ushort SkillLine; public ushort TrivialSkillLineRankHigh; @@ -153,7 +153,7 @@ namespace Game.DataStorage public float PitchVariationMinus; public float PitchAdjust; public ushort BusOverwriteID; - public byte Unk700; + public byte MaxInstances; } public sealed class SpecializationSpellsRecord @@ -162,7 +162,7 @@ namespace Game.DataStorage public uint SpellID; public uint OverridesSpellID; public ushort SpecID; - public byte OrderIndex; + public byte DisplayOrder; public uint Id; } @@ -206,9 +206,9 @@ namespace Game.DataStorage public sealed class SpellCastTimesRecord { public uint Id; - public int CastTime; - public int MinCastTime; - public short CastTimePerLevel; + public int Base; + public int Minimum; + public short PerLevel; } public sealed class SpellCastingRequirementsRecord @@ -245,7 +245,7 @@ namespace Game.DataStorage public SpellCategoryFlags Flags; public byte UsesPerWeek; public byte MaxCharges; - public byte ChargeCategoryType; + public byte TypeMask; } public sealed class SpellClassOptionsRecord @@ -297,16 +297,14 @@ namespace Game.DataStorage public float EffectPosFacing; public uint EffectAttributes; public float BonusCoefficientFromAP; - public float PvPMultiplier; + public float PvpMultiplier; public float Coefficient; public float Variance; public float ResourceCoefficient; - public float GroupSizeCoefficient; + public float GroupSizeBasePointsCoefficient; public FlagArray128 EffectSpellClassMask; - public int EffectMiscValue; - public int EffectMiscValueB; - public uint EffectRadiusIndex; - public uint EffectRadiusMaxIndex; + public int[] EffectMiscValue = new int[2]; + public uint[] EffectRadiusIndex = new uint[2]; public uint[] ImplicitTarget = new uint[2]; public uint SpellID; } @@ -315,8 +313,8 @@ namespace Game.DataStorage { public uint Id; public uint SpellID; - public int EquippedItemInventoryTypeMask; - public int EquippedItemSubClassMask; + public int EquippedItemInvTypes; + public int EquippedItemSubclass; public sbyte EquippedItemClass; } @@ -340,10 +338,10 @@ namespace Game.DataStorage { public uint Id; public string Name; - public uint[] EffectSpellID = new uint[ItemConst.MaxItemEnchantmentEffects]; + public uint[] EffectArg = new uint[ItemConst.MaxItemEnchantmentEffects]; public float[] EffectScalingPoints = new float[ItemConst.MaxItemEnchantmentEffects]; public uint TransmogCost; - public uint TextureFileDataID; + public uint IconFileDataID; public ushort[] EffectPointsMin = new ushort[ItemConst.MaxItemEnchantmentEffects]; public ushort ItemVisual; public EnchantmentSlotMask Flags; @@ -357,25 +355,25 @@ namespace Game.DataStorage public byte MaxLevel; public sbyte ScalingClass; public sbyte ScalingClassRestricted; - public ushort PlayerConditionID; + public ushort TransmogPlayerConditionID; } public sealed class SpellItemEnchantmentConditionRecord { public uint Id; - public uint[] LTOperand = new uint[5]; - public byte[] LTOperandType = new byte[5]; + public uint[] LtOperand = new uint[5]; + public byte[] LtOperandType = new byte[5]; public byte[] Operator = new byte[5]; - public byte[] RTOperandType = new byte[5]; - public byte[] RTOperand = new byte[5]; + public byte[] RtOperandType = new byte[5]; + public byte[] RtOperand = new byte[5]; public byte[] Logic = new byte[5]; } public sealed class SpellLearnSpellRecord { public uint Id; - public uint LearnSpellID; public uint SpellID; + public uint LearnSpellID; public uint OverridesSpellID; } @@ -386,7 +384,7 @@ namespace Game.DataStorage public ushort MaxLevel; public ushort SpellLevel; public byte DifficultyID; - public byte MaxUsableLevel; + public byte MaxPassiveAuraLevel; public uint SpellID; } @@ -397,51 +395,38 @@ namespace Game.DataStorage public ushort DurationIndex; public ushort RangeIndex; public byte SchoolMask; - public uint IconFileDataID; + public uint SpellIconFileDataID; public float Speed; public uint ActiveIconFileDataID; - public float MultistrikeSpeedMod; + public float LaunchDelay; public byte DifficultyID; - public uint Attributes; - public uint AttributesEx; - public uint AttributesExB; - public uint AttributesExC; - public uint AttributesExD; - public uint AttributesExE; - public uint AttributesExF; - public uint AttributesExG; - public uint AttributesExH; - public uint AttributesExI; - public uint AttributesExJ; - public uint AttributesExK; - public uint AttributesExL; - public uint AttributesExM; + public uint[] Attributes = new uint[14]; public uint SpellID; } public sealed class SpellPowerRecord { public int ManaCost; - public float ManaCostPercentage; - public float ManaCostPercentagePerSecond; - public uint RequiredAura; - public float HealthCostPercentage; - public byte PowerIndex; + public float PowerCostPct; + public float PowerPctPerSecond; + public uint RequiredAuraSpellID; + public float PowerCostMaxPct; + public byte OrderIndex; public PowerType PowerType; public uint Id; public byte ManaCostPerLevel; - public ushort ManaCostPerSecond; - public int ManaCostAdditional; // Spell uses [ManaCost, ManaCost+ManaCostAdditional] power - affects tooltip parsing as multiplier on SpellEffectEntry::EffectPointsPerResource + public ushort ManaPerSecond; + public int OptionalCost; // Spell uses [ManaCost, ManaCost+ManaCostAdditional] power - affects tooltip parsing as multiplier on SpellEffectEntry::EffectPointsPerResource // only SPELL_EFFECT_WEAPON_DAMAGE_NOSCHOOL, SPELL_EFFECT_WEAPON_PERCENT_DAMAGE, SPELL_EFFECT_WEAPON_DAMAGE, SPELL_EFFECT_NORMALIZED_WEAPON_DMG public uint PowerDisplayID; - public uint UnitPowerBarID; + public uint AltPowerBarID; public uint SpellID; } public sealed class SpellPowerDifficultyRecord { public byte DifficultyID; - public byte PowerIndex; + public byte OrderIndex; public uint Id; } @@ -475,10 +460,8 @@ namespace Game.DataStorage public uint Id; public string DisplayName; public string DisplayNameShort; - public float MinRangeHostile; - public float MinRangeFriend; - public float MaxRangeHostile; - public float MaxRangeFriend; + public float[] RangeMin = new float[2]; + public float[] RangeMax = new float[2]; public SpellRangeFlag Flags; } @@ -495,7 +478,7 @@ namespace Game.DataStorage public uint Id; public uint SpellID; public ushort ScalesFromItemLevel; - public byte ScalingClass; + public byte Class; public byte MinScalingLevel; public uint MaxScalingLevel; } @@ -513,13 +496,13 @@ namespace Game.DataStorage { public uint Id; public LocalizedString Name; - public float WeaponDamageVariance; + public float DamageVariance; public SpellShapeshiftFormFlags Flags; public ushort CombatRoundTime; public ushort MountTypeID; public sbyte CreatureType; public byte BonusActionBar; - public uint AttackIconFileDataID; + public uint AttackIconFileID; public ushort[] CreatureDisplayID = new ushort[4]; public ushort[] PresetSpellID = new ushort[SpellConst.MaxShapeshift]; } @@ -527,12 +510,12 @@ namespace Game.DataStorage public sealed class SpellTargetRestrictionsRecord { public uint Id; - public float ConeAngle; + public float ConeDegrees; public float Width; public uint Targets; public ushort TargetCreatureType; public byte DifficultyID; - public byte MaxAffectedTargets; + public byte MaxTargets; public uint MaxTargetLevel; public uint SpellID; } @@ -549,13 +532,13 @@ namespace Game.DataStorage { public uint SpellVisualID; public uint Id; - public float Chance; + public float Probability; public ushort CasterPlayerConditionID; public ushort CasterUnitConditionID; - public ushort PlayerConditionID; - public ushort UnitConditionID; - public uint IconFileDataID; - public uint ActiveIconFileDataID; + public ushort ViewerPlayerConditionID; + public ushort ViewerUnitConditionID; + public uint SpellIconFileID; + public uint ActiveIconFileID; public byte Flags; public byte DifficultyID; public byte Priority; @@ -566,9 +549,9 @@ namespace Game.DataStorage { public uint Id; public uint Flags; - public SummonCategory Category; + public SummonCategory Control; public ushort Faction; - public SummonType Type; + public SummonType Title; public byte Slot; } } diff --git a/Source/Game/DataStorage/Structs/T_Records.cs b/Source/Game/DataStorage/Structs/T_Records.cs index 1775c618f..fec9202a6 100644 --- a/Source/Game/DataStorage/Structs/T_Records.cs +++ b/Source/Game/DataStorage/Structs/T_Records.cs @@ -47,20 +47,20 @@ namespace Game.DataStorage public Vector3 Pos; public uint[] MountCreatureID = new uint[2]; public Vector2 MapOffset; - public float Unk730; + public float Facing; public Vector2 FlightMapOffset; - public ushort MapID; + public ushort ContinentID; public ushort ConditionID; - public ushort LearnableIndex; + public ushort CharacterBitNumber; public TaxiNodeFlags Flags; - public int UiTextureKitPrefixID; - public uint SpecialAtlasIconPlayerConditionID; + public int UiTextureKitID; + public uint SpecialIconConditionID; } public sealed class TaxiPathRecord { - public ushort From; - public ushort To; + public ushort FromTaxiNode; + public ushort ToTaxiNode; public uint Id; public uint Cost; } @@ -69,7 +69,7 @@ namespace Game.DataStorage { public Vector3 Loc; public ushort PathID; - public ushort MapID; + public ushort ContinentID; public byte NodeIndex; public uint Id; public TaxiPathNodeFlags Flags; @@ -82,34 +82,34 @@ namespace Game.DataStorage { public uint Id; public LocalizedString Name; - public uint CategoryMask; - public byte CategoryType; + public uint TotemCategoryMask; + public byte TotemCategoryType; } public sealed class ToyRecord { - public LocalizedString Description; + public LocalizedString SourceText; public uint ItemID; public byte Flags; - public byte CategoryFilter; + public byte SourceTypeEnum; public uint Id; } public sealed class TransmogHolidayRecord { public uint Id; - public int HolidayID; + public int RequiredTransmogHoliday; } public sealed class TransmogSetRecord { public LocalizedString Name; - public ushort BaseSetID; + public ushort ParentTransmogSetID; public ushort UIOrder; public byte ExpansionID; public uint Id; public byte Flags; - public int QuestID; + public int TrackingQuestID; public int ClassMask; public int ItemNameDescriptionID; public byte TransmogSetGroupID; @@ -117,7 +117,7 @@ namespace Game.DataStorage public sealed class TransmogSetGroupRecord { - public LocalizedString Label; + public LocalizedString Name; public uint Id; } @@ -142,10 +142,7 @@ namespace Game.DataStorage { public uint Id; public uint TimeIndex; - public float X; - public float Y; - public float Z; - public float W; - public uint TransportID; + public float[] Rot = new float[4]; + public uint GameObjectsID; } } diff --git a/Source/Game/DataStorage/Structs/V_Records.cs b/Source/Game/DataStorage/Structs/V_Records.cs index 9d835ac05..414037d96 100644 --- a/Source/Game/DataStorage/Structs/V_Records.cs +++ b/Source/Game/DataStorage/Structs/V_Records.cs @@ -40,14 +40,16 @@ namespace Game.DataStorage public ushort VehicleUIIndicatorID; public ushort[] PowerDisplayID = new ushort[3]; public byte FlagsB; - public byte UILocomotionType; + public byte UiLocomotionType; public ushort MissileTargetingID; } public sealed class VehicleSeatRecord { public uint Id; - public uint[] Flags = new uint[3]; + public VehicleSeatFlags Flags; + public VehicleSeatFlagsB FlagsB; + public uint FlagsC; public Vector3 AttachmentOffset; public float EnterPreDelay; public float EnterSpeed; @@ -78,7 +80,7 @@ namespace Game.DataStorage public float CameraEnteringZoom; public float CameraSeatZoomMin; public float CameraSeatZoomMax; - public uint UISkinFileDataID; + public uint UiSkinFileDataID; public short EnterAnimStart; public short EnterAnimLoop; public short RideAnimStart; @@ -110,17 +112,17 @@ namespace Game.DataStorage public bool CanEnterOrExit() { - return (Flags[0].HasAnyFlag((uint)VehicleSeatFlags.CanEnterOrExit) || + return (Flags.HasAnyFlag(VehicleSeatFlags.CanEnterOrExit) || //If it has anmation for enter/ride, means it can be entered/exited by logic - Flags[0].HasAnyFlag((uint)VehicleSeatFlags.HasLowerAnimForEnter | (uint)VehicleSeatFlags.HasLowerAnimForRide)); + Flags.HasAnyFlag(VehicleSeatFlags.HasLowerAnimForEnter | VehicleSeatFlags.HasLowerAnimForRide)); } - public bool CanSwitchFromSeat() { return Flags[0].HasAnyFlag((uint)VehicleSeatFlags.CanSwitch); } + public bool CanSwitchFromSeat() { return Flags.HasAnyFlag(VehicleSeatFlags.CanSwitch); } public bool IsUsableByOverride() { - return Flags[0].HasAnyFlag((uint)VehicleSeatFlags.Uncontrolled | (uint)VehicleSeatFlags.Unk18) - || Flags[1].HasAnyFlag((uint)VehicleSeatFlagsB.UsableForced | (uint)VehicleSeatFlagsB.UsableForced2 | - (uint)VehicleSeatFlagsB.UsableForced3 | (uint)VehicleSeatFlagsB.UsableForced4); + return Flags.HasAnyFlag(VehicleSeatFlags.Uncontrolled | VehicleSeatFlags.Unk18) + || FlagsB.HasAnyFlag(VehicleSeatFlagsB.UsableForced | VehicleSeatFlagsB.UsableForced2 | + VehicleSeatFlagsB.UsableForced3 | VehicleSeatFlagsB.UsableForced4); } - public bool IsEjectable() { return Flags[1].HasAnyFlag((uint)VehicleSeatFlagsB.Ejectable); } + public bool IsEjectable() { return FlagsB.HasAnyFlag(VehicleSeatFlagsB.Ejectable); } } } diff --git a/Source/Game/DataStorage/Structs/W_Records.cs b/Source/Game/DataStorage/Structs/W_Records.cs index 7233214b9..37db26442 100644 --- a/Source/Game/DataStorage/Structs/W_Records.cs +++ b/Source/Game/DataStorage/Structs/W_Records.cs @@ -23,20 +23,20 @@ namespace Game.DataStorage public sealed class WMOAreaTableRecord { public string AreaName; - public int WMOGroupID; // used in group WMO + public int WmoGroupID; // used in group WMO public ushort AmbienceID; public ushort ZoneMusic; public ushort IntroSound; public ushort AreaTableID; - public ushort UWIntroSound; - public ushort UWAmbience; - public sbyte NameSet; // used in adt file + public ushort UwIntroSound; + public ushort UwAmbience; + public sbyte NameSetID; // used in adt file public byte SoundProviderPref; public byte SoundProviderPrefUnderwater; public byte Flags; public uint Id; - public byte UWZoneMusic; - public uint WMOID; // used in root WMO + public byte UwZoneMusic; + public uint WmoID; // used in root WMO } public sealed class WorldEffectRecord @@ -66,9 +66,9 @@ namespace Game.DataStorage public byte LevelRangeMin; public byte LevelRangeMax; public byte BountySetID; - public byte BountyBoardLocation; + public byte BountyDisplayLocation; public uint Id; - public uint PlayerConditionID; + public uint VisibilityPlayerConditionID; } public sealed class WorldMapOverlayRecord diff --git a/Source/Game/DungeonFinding/LFGManager.cs b/Source/Game/DungeonFinding/LFGManager.cs index b81157d5a..8d1cca257 100644 --- a/Source/Game/DungeonFinding/LFGManager.cs +++ b/Source/Game/DungeonFinding/LFGManager.cs @@ -177,7 +177,7 @@ namespace Game.DungeonFinding // Initialize Dungeon map with data from dbcs foreach (var dungeon in CliDB.LFGDungeonsStorage.Values) { - switch (dungeon.Type) + switch (dungeon.TypeID) { case LfgType.Dungeon: case LfgType.Raid: @@ -2151,8 +2151,8 @@ namespace Game.DungeonFinding id = dbc.Id; name = dbc.Name[Global.WorldMgr.GetDefaultDbcLocale()]; map = (uint)dbc.MapID; - type = dbc.Type; - expansion = dbc.Expansion; + type = dbc.TypeID; + expansion = dbc.ExpansionLevel; group = dbc.GroupID; minlevel = dbc.MinLevel; maxlevel = dbc.MaxLevel; diff --git a/Source/Game/Entities/GameObject/GameObject.cs b/Source/Game/Entities/GameObject/GameObject.cs index 048e87740..a95a85b41 100644 --- a/Source/Game/Entities/GameObject/GameObject.cs +++ b/Source/Game/Entities/GameObject/GameObject.cs @@ -2164,8 +2164,8 @@ namespace Game.Entities uint modelId = m_goInfo.displayId; DestructibleModelDataRecord modelData = CliDB.DestructibleModelDataStorage.LookupByKey(m_goInfo.DestructibleBuilding.DestructibleModelRec); if (modelData != null) - if (modelData.StateDamagedDisplayID != 0) - modelId = modelData.StateDamagedDisplayID; + if (modelData.State0Wmo != 0) + modelId = modelData.State0Wmo; SetDisplayId(modelId); if (setHealth) @@ -2196,8 +2196,8 @@ namespace Game.Entities uint modelId = m_goInfo.displayId; DestructibleModelDataRecord modelData = CliDB.DestructibleModelDataStorage.LookupByKey(m_goInfo.DestructibleBuilding.DestructibleModelRec); if (modelData != null) - if (modelData.StateDestroyedDisplayID != 0) - modelId = modelData.StateDestroyedDisplayID; + if (modelData.State1Wmo != 0) + modelId = modelData.State1Wmo; SetDisplayId(modelId); if (setHealth) @@ -2216,8 +2216,8 @@ namespace Game.Entities uint modelId = m_goInfo.displayId; DestructibleModelDataRecord modelData = CliDB.DestructibleModelDataStorage.LookupByKey(m_goInfo.DestructibleBuilding.DestructibleModelRec); if (modelData != null) - if (modelData.StateRebuildingDisplayID != 0) - modelId = modelData.StateRebuildingDisplayID; + if (modelData.State2Wmo != 0) + modelId = modelData.State2Wmo; SetDisplayId(modelId); // restores to full health diff --git a/Source/Game/Entities/Item/Item.cs b/Source/Game/Entities/Item/Item.cs index d7cbd0f4a..20a8e93ac 100644 --- a/Source/Game/Entities/Item/Item.cs +++ b/Source/Game/Entities/Item/Item.cs @@ -103,13 +103,13 @@ namespace Game.Entities if (itemProto.GetArtifactID() != artifactAppearanceSet.ArtifactID) continue; - PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(artifactAppearance.PlayerConditionID); + PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(artifactAppearance.UnlockPlayerConditionID); if (playerCondition != null) if (!owner || !ConditionManager.IsPlayerMeetingCondition(owner, playerCondition)) continue; SetModifier(ItemModifier.ArtifactAppearanceId, artifactAppearance.Id); - SetAppearanceModId(artifactAppearance.AppearanceModID); + SetAppearanceModId(artifactAppearance.ItemAppearanceModifierID); break; } } @@ -546,7 +546,7 @@ namespace Game.Entities SetModifier(ItemModifier.ArtifactAppearanceId, artifactAppearanceId); ArtifactAppearanceRecord artifactAppearance = CliDB.ArtifactAppearanceStorage.LookupByKey(artifactAppearanceId); if (artifactAppearance != null) - SetAppearanceModId(artifactAppearance.AppearanceModID); + SetAppearanceModId(artifactAppearance.ItemAppearanceModifierID); byte totalPurchasedRanks = 0; foreach (ItemDynamicFieldArtifactPowers power in powers) @@ -565,22 +565,22 @@ namespace Game.Entities switch (enchant.Effect[i]) { case ItemEnchantmentType.ArtifactPowerBonusRankByType: - if (artifactPower.RelicType == enchant.EffectSpellID[i]) + if (artifactPower.Label == enchant.EffectArg[i]) power.CurrentRankWithBonus += (byte)enchant.EffectPointsMin[i]; break; case ItemEnchantmentType.ArtifactPowerBonusRankByID: - if (artifactPower.Id == enchant.EffectSpellID[i]) + if (artifactPower.Id == enchant.EffectArg[i]) power.CurrentRankWithBonus += (byte)enchant.EffectPointsMin[i]; break; case ItemEnchantmentType.ArtifactPowerBonusRankPicker: if (_bonusData.GemRelicType[e - EnchantmentSlot.Sock1] != -1) { - ArtifactPowerPickerRecord artifactPowerPicker = CliDB.ArtifactPowerPickerStorage.LookupByKey(enchant.EffectSpellID[i]); + ArtifactPowerPickerRecord artifactPowerPicker = CliDB.ArtifactPowerPickerStorage.LookupByKey(enchant.EffectArg[i]); if (artifactPowerPicker != null) { PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(artifactPowerPicker.PlayerConditionID); if (playerCondition == null || ConditionManager.IsPlayerMeetingCondition(owner, playerCondition)) - if (artifactPower.RelicType == _bonusData.GemRelicType[e - EnchantmentSlot.Sock1]) + if (artifactPower.Label == _bonusData.GemRelicType[e - EnchantmentSlot.Sock1]) power.CurrentRankWithBonus += (byte)enchant.EffectPointsMin[i]; } } @@ -1010,7 +1010,7 @@ namespace Game.Entities GemPropertiesRecord gemProperties = CliDB.GemPropertiesStorage.LookupByKey(gemTemplate.GetGemProperties()); if (gemProperties != null) { - SpellItemEnchantmentRecord gemEnchant = CliDB.SpellItemEnchantmentStorage.LookupByKey(gemProperties.EnchantID); + SpellItemEnchantmentRecord gemEnchant = CliDB.SpellItemEnchantmentStorage.LookupByKey(gemProperties.EnchantId); if (gemEnchant != null) { BonusData gemBonus = new BonusData(gemTemplate); @@ -1029,7 +1029,7 @@ namespace Game.Entities ScalingStatDistributionRecord ssd = CliDB.ScalingStatDistributionStorage.LookupByKey(gemBonus.ScalingStatDistribution); if (ssd != null) { - uint scaledIlvl = (uint)Global.DB2Mgr.GetCurveValueAt(ssd.ItemLevelCurveID, gemScalingLevel); + uint scaledIlvl = (uint)Global.DB2Mgr.GetCurveValueAt(ssd.PlayerLevelToItemLevelCurveID, gemScalingLevel); if (scaledIlvl != 0) gemBaseItemLevel = scaledIlvl; } @@ -1042,7 +1042,7 @@ namespace Game.Entities { case ItemEnchantmentType.BonusListID: { - var bonusesEffect = Global.DB2Mgr.GetItemBonusList(gemEnchant.EffectSpellID[i]); + var bonusesEffect = Global.DB2Mgr.GetItemBonusList(gemEnchant.EffectArg[i]); if (bonusesEffect != null) { foreach (ItemBonusRecord itemBonus in bonusesEffect) @@ -1600,7 +1600,7 @@ namespace Game.Entities if (basePrice == null) return 0; - float qualityFactor = qualityPrice.Factor; + float qualityFactor = qualityPrice.Data; float baseFactor = 0.0f; var inventoryType = proto.GetInventoryType(); @@ -1612,9 +1612,9 @@ namespace Game.Entities inventoryType == InventoryType.Ranged || inventoryType == InventoryType.Thrown || inventoryType == InventoryType.RangedRight) - baseFactor = basePrice.WeaponFactor; + baseFactor = basePrice.Weapon; else - baseFactor = basePrice.ArmorFactor; + baseFactor = basePrice.Armor; if (inventoryType == InventoryType.Robe) inventoryType = InventoryType.Chest; @@ -1622,7 +1622,7 @@ namespace Game.Entities if (proto.GetClass() == ItemClass.Gem && (ItemSubClassGem)proto.GetSubClass() == ItemSubClassGem.ArtifactRelic) { inventoryType = InventoryType.Weapon; - baseFactor = basePrice.WeaponFactor / 3.0f; + baseFactor = basePrice.Weapon / 3.0f; } @@ -1653,16 +1653,16 @@ namespace Game.Entities { case ItemSubClassArmor.Miscellaneous: case ItemSubClassArmor.Cloth: - typeFactor = armorPrice.ClothFactor; + typeFactor = armorPrice.ClothModifier; break; case ItemSubClassArmor.Leather: - typeFactor = armorPrice.LeatherFactor; + typeFactor = armorPrice.LeatherModifier; break; case ItemSubClassArmor.Mail: - typeFactor = armorPrice.MailFactor; + typeFactor = armorPrice.ChainModifier; break; case ItemSubClassArmor.Plate: - typeFactor = armorPrice.PlateFactor; + typeFactor = armorPrice.PlateModifier; break; default: typeFactor = 1.0f; @@ -1677,7 +1677,7 @@ namespace Game.Entities if (shieldPrice == null) return 0; - typeFactor = shieldPrice.Factor; + typeFactor = shieldPrice.Data; break; } case InventoryType.WeaponMainhand: @@ -1707,11 +1707,11 @@ namespace Game.Entities if (weaponPrice == null) return 0; - typeFactor = weaponPrice.Factor; + typeFactor = weaponPrice.Data; } standardPrice = false; - return (uint)(proto.GetUnk2() * typeFactor * baseFactor * qualityFactor * proto.GetUnk1()); + return (uint)(proto.GetPriceVariance() * typeFactor * baseFactor * qualityFactor * proto.GetPriceRandomValue()); } public uint GetSellPrice(Player owner) @@ -1733,7 +1733,7 @@ namespace Game.Entities if (classEntry != null) { uint buyCount = Math.Max(proto.GetBuyCount(), 1u); - return (uint)(cost * classEntry.PriceMod / buyCount); + return (uint)(cost * classEntry.PriceModifier / buyCount); } return 0; @@ -1764,7 +1764,7 @@ namespace Game.Entities var enchant = CliDB.SpellItemEnchantmentStorage.LookupByKey(GetEnchantmentId(e)); if (enchant != null) for (uint f = 0; f < ItemConst.MaxItemEnchantmentEffects; ++f) - if (enchant.Effect[f] == ItemEnchantmentType.Stat && (ItemModType)enchant.EffectSpellID[f] == statType) + if (enchant.Effect[f] == ItemEnchantmentType.Stat && (ItemModType)enchant.EffectArg[f] == statType) for (int k = 0; k < 5; ++k) if (randomSuffix.Enchantment[k] == enchant.Id) return (int)((randomSuffix.AllocationPct[k] * GetItemSuffixFactor()) / 10000); @@ -1781,7 +1781,7 @@ namespace Game.Entities var enchant = CliDB.SpellItemEnchantmentStorage.LookupByKey(GetEnchantmentId(e)); if (enchant != null) for (uint f = 0; f < ItemConst.MaxItemEnchantmentEffects; ++f) - if (enchant.Effect[f] == ItemEnchantmentType.Stat && (ItemModType)enchant.EffectSpellID[f] == statType) + if (enchant.Effect[f] == ItemEnchantmentType.Stat && (ItemModType)enchant.EffectArg[f] == statType) for (int k = 0; k < ItemConst.MaxItemRandomProperties; ++k) if (randomProp.Enchantment[k] == enchant.Id) return (int)(enchant.EffectPointsMin[k]); @@ -2003,7 +2003,7 @@ namespace Game.Entities if ((Convert.ToBoolean(sandbox.Flags & 2) || sandbox.MinLevel != 0 || sandbox.MaxLevel != 0) && !Convert.ToBoolean(sandbox.Flags & 4)) level = Math.Min(Math.Max(level, sandbox.MinLevel), sandbox.MaxLevel); - uint heirloomIlvl = (uint)Global.DB2Mgr.GetCurveValueAt(ssd.ItemLevelCurveID, level); + uint heirloomIlvl = (uint)Global.DB2Mgr.GetCurveValueAt(ssd.PlayerLevelToItemLevelCurveID, level); if (heirloomIlvl != 0) itemLevel = heirloomIlvl; } @@ -2016,7 +2016,7 @@ namespace Game.Entities uint itemLevelBeforeUpgrades = itemLevel; ItemUpgradeRecord upgrade = CliDB.ItemUpgradeStorage.LookupByKey(upgradeId); if (upgrade != null) - itemLevel += upgrade.ItemLevelBonus; + itemLevel += upgrade.ItemLevelIncrement; if (pvpBonus) itemLevel += Global.DB2Mgr.GetPvpItemLevelBonus(itemTemplate.GetId()); @@ -2072,19 +2072,19 @@ namespace Game.Entities byte expansion = itemTemplate.GetRequiredExpansion(); foreach (ItemDisenchantLootRecord disenchant in CliDB.ItemDisenchantLootStorage.Values) { - if (disenchant.ItemClass != itemClass) + if (disenchant.ClassID != itemClass) continue; - if (disenchant.ItemSubClass >= 0 && itemSubClass != 0) + if (disenchant.Subclass >= 0 && itemSubClass != 0) continue; - if (disenchant.ItemQuality != quality) + if (disenchant.Quality != quality) continue; - if (disenchant.MinItemLevel > itemLevel || disenchant.MaxItemLevel < itemLevel) + if (disenchant.MinLevel > itemLevel || disenchant.MaxLevel < itemLevel) continue; - if (disenchant.Expansion != -2 && disenchant.Expansion != expansion) + if (disenchant.ExpansionID != -2 && disenchant.ExpansionID != expansion) continue; return disenchant; @@ -2102,9 +2102,9 @@ namespace Game.Entities ItemModifiedAppearanceRecord transmog = CliDB.ItemModifiedAppearanceStorage.LookupByKey(GetModifier(transmogModifier)); if (transmog != null) { - ItemAppearanceRecord itemAppearance = CliDB.ItemAppearanceStorage.LookupByKey(transmog.AppearanceID); + ItemAppearanceRecord itemAppearance = CliDB.ItemAppearanceStorage.LookupByKey(transmog.ItemAppearanceID); if (itemAppearance != null) - return itemAppearance.DisplayID; + return itemAppearance.ItemDisplayInfoID; } return Global.DB2Mgr.GetItemDisplayId(GetEntry(), GetAppearanceModId()); @@ -2147,7 +2147,7 @@ namespace Game.Entities ItemModifiedAppearanceRecord transmog = CliDB.ItemModifiedAppearanceStorage.LookupByKey(GetModifier(transmogModifier)); if (transmog != null) - return transmog.AppearanceModID; + return transmog.ItemAppearanceModifierID; return (ushort)GetAppearanceModId(); } @@ -2223,7 +2223,7 @@ namespace Game.Entities { foreach (ArtifactPowerRecord artifactPower in Global.DB2Mgr.GetArtifactPowers(artifactId)) { - if (artifactPower.ArtifactTier != artifactTier) + if (artifactPower.Tier != artifactTier) continue; if (m_artifactPowerIdToIndex.ContainsKey(artifactPower.Id)) @@ -2259,7 +2259,7 @@ namespace Game.Entities { foreach (ItemDynamicFieldArtifactPowers artifactPower in GetArtifactPowers()) { - if (CliDB.ArtifactPowerStorage.LookupByKey(artifactPower.ArtifactPowerId).RelicType == enchant.EffectSpellID[i]) + if (CliDB.ArtifactPowerStorage.LookupByKey(artifactPower.ArtifactPowerId).Label == enchant.EffectArg[i]) { ItemDynamicFieldArtifactPowers newPower = artifactPower; if (apply) @@ -2281,7 +2281,7 @@ namespace Game.Entities break; case ItemEnchantmentType.ArtifactPowerBonusRankByID: { - ItemDynamicFieldArtifactPowers artifactPower = GetArtifactPower(enchant.EffectSpellID[i]); + ItemDynamicFieldArtifactPowers artifactPower = GetArtifactPower(enchant.EffectArg[i]); if (artifactPower != null) { ItemDynamicFieldArtifactPowers newPower = artifactPower; @@ -2304,7 +2304,7 @@ namespace Game.Entities case ItemEnchantmentType.ArtifactPowerBonusRankPicker: if (slot >= EnchantmentSlot.Sock1 && slot <= EnchantmentSlot.Sock3 && _bonusData.GemRelicType[slot - EnchantmentSlot.Sock1] != -1) { - ArtifactPowerPickerRecord artifactPowerPicker = CliDB.ArtifactPowerPickerStorage.LookupByKey(enchant.EffectSpellID[i]); + ArtifactPowerPickerRecord artifactPowerPicker = CliDB.ArtifactPowerPickerStorage.LookupByKey(enchant.EffectArg[i]); if (artifactPowerPicker != null) { PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(artifactPowerPicker.PlayerConditionID); @@ -2312,7 +2312,7 @@ namespace Game.Entities { foreach (ItemDynamicFieldArtifactPowers artifactPower in GetArtifactPowers()) { - if (CliDB.ArtifactPowerStorage.LookupByKey(artifactPower.ArtifactPowerId).RelicType == _bonusData.GemRelicType[slot - EnchantmentSlot.Sock1]) + if (CliDB.ArtifactPowerStorage.LookupByKey(artifactPower.ArtifactPowerId).Label == _bonusData.GemRelicType[slot - EnchantmentSlot.Sock1]) { ItemDynamicFieldArtifactPowers newPower = artifactPower; if (apply) @@ -2363,7 +2363,7 @@ namespace Game.Entities if (sourceItem && sourceItem.GetModifier(ItemModifier.ArtifactKnowledgeLevel) != 0) artifactKnowledgeLevel = sourceItem.GetModifier(ItemModifier.ArtifactKnowledgeLevel); else - artifactKnowledgeLevel = owner.GetCurrency(artifactCategory.ArtifactKnowledgeCurrencyID) + 1; + artifactKnowledgeLevel = owner.GetCurrency(artifactCategory.XpMultCurrencyID) + 1; GtArtifactKnowledgeMultiplierRecord artifactKnowledge = CliDB.ArtifactKnowledgeMultiplierGameTable.GetRow(artifactKnowledgeLevel); if (artifactKnowledge != null) @@ -2403,7 +2403,7 @@ namespace Game.Entities if (set.RequiredSkill != 0 && player.GetSkillValue((SkillType)set.RequiredSkill) < set.RequiredSkillRank) return; - if (set.Flags.HasAnyFlag(ItemSetFlags.LegacyInactive)) + if (set.SetFlags.HasAnyFlag(ItemSetFlags.LegacyInactive)) return; ItemSetEffect eff = null; diff --git a/Source/Game/Entities/Item/ItemEnchantment.cs b/Source/Game/Entities/Item/ItemEnchantment.cs index 8ad2a0650..4e71244a4 100644 --- a/Source/Game/Entities/Item/ItemEnchantment.cs +++ b/Source/Game/Entities/Item/ItemEnchantment.cs @@ -216,14 +216,14 @@ namespace Game.Entities switch (quality) { case ItemQuality.Uncommon: - return randPropPointsEntry.UncommonPropertiesPoints[propIndex]; + return randPropPointsEntry.Good[propIndex]; case ItemQuality.Rare: case ItemQuality.Heirloom: - return randPropPointsEntry.RarePropertiesPoints[propIndex]; + return randPropPointsEntry.Superior[propIndex]; case ItemQuality.Epic: case ItemQuality.Legendary: case ItemQuality.Artifact: - return randPropPointsEntry.EpicPropertiesPoints[propIndex]; + return randPropPointsEntry.Epic[propIndex]; } return 0; } diff --git a/Source/Game/Entities/Item/ItemTemplate.cs b/Source/Game/Entities/Item/ItemTemplate.cs index 47e591024..809684acf 100644 --- a/Source/Game/Entities/Item/ItemTemplate.cs +++ b/Source/Game/Entities/Item/ItemTemplate.cs @@ -38,7 +38,7 @@ namespace Game.Entities public string GetName(LocaleConstant locale = SharedConst.DefaultLocale) { - return ExtendedData.Name[locale]; + return ExtendedData.Display[locale]; } public bool CanChangeEquipStateInCombat() @@ -124,7 +124,31 @@ namespace Game.Entities if (GetSubClass() < (uint)ItemSubClassArmor.Cloth || GetSubClass() > (uint)ItemSubClassArmor.Plate) return 0; - return (uint)(armorQuality.QualityMod[(int)quality] * armorTotal.Value[GetSubClass() - 1] * location.Modifier[GetSubClass() - 1] + 0.5f); + float total = 1.0f; + float locationModifier = 1.0f; + switch ((ItemSubClassArmor)GetSubClass()) + { + case ItemSubClassArmor.Cloth: + total = armorTotal.Cloth; + locationModifier = location.Clothmodifier; + break; + case ItemSubClassArmor.Leather: + total = armorTotal.Leather; + locationModifier = location.Leathermodifier; + break; + case ItemSubClassArmor.Mail: + total = armorTotal.Mail; + locationModifier = location.Chainmodifier; + break; + case ItemSubClassArmor.Plate: + total = armorTotal.Plate; + locationModifier = location.Platemodifier; + break; + default: + break; + } + + return (uint)(armorQuality.QualityMod[(int)quality] * total * locationModifier + 0.5f); } // shields @@ -150,13 +174,13 @@ namespace Game.Entities switch (GetInventoryType()) { case InventoryType.Ammo: - dps = CliDB.ItemDamageAmmoStorage.LookupByKey(itemLevel).DPS[(int)quality]; + dps = CliDB.ItemDamageAmmoStorage.LookupByKey(itemLevel).Quality[(int)quality]; break; case InventoryType.Weapon2Hand: if (GetFlags2().HasAnyFlag(ItemFlags2.CasterWeapon)) - dps = CliDB.ItemDamageTwoHandCasterStorage.LookupByKey(itemLevel).DPS[(int)quality]; + dps = CliDB.ItemDamageTwoHandCasterStorage.LookupByKey(itemLevel).Quality[(int)quality]; else - dps = CliDB.ItemDamageTwoHandStorage.LookupByKey(itemLevel).DPS[(int)quality]; + dps = CliDB.ItemDamageTwoHandStorage.LookupByKey(itemLevel).Quality[(int)quality]; break; case InventoryType.Ranged: case InventoryType.Thrown: @@ -164,15 +188,15 @@ namespace Game.Entities switch ((ItemSubClassWeapon)GetSubClass()) { case ItemSubClassWeapon.Wand: - dps = CliDB.ItemDamageOneHandCasterStorage.LookupByKey(itemLevel).DPS[(int)quality]; + dps = CliDB.ItemDamageOneHandCasterStorage.LookupByKey(itemLevel).Quality[(int)quality]; break; case ItemSubClassWeapon.Bow: case ItemSubClassWeapon.Gun: case ItemSubClassWeapon.Crossbow: if (GetFlags2().HasAnyFlag(ItemFlags2.CasterWeapon)) - dps = CliDB.ItemDamageTwoHandCasterStorage.LookupByKey(itemLevel).DPS[(int)quality]; + dps = CliDB.ItemDamageTwoHandCasterStorage.LookupByKey(itemLevel).Quality[(int)quality]; else - dps = CliDB.ItemDamageTwoHandStorage.LookupByKey(itemLevel).DPS[(int)quality]; + dps = CliDB.ItemDamageTwoHandStorage.LookupByKey(itemLevel).Quality[(int)quality]; break; default: return; @@ -182,17 +206,17 @@ namespace Game.Entities case InventoryType.WeaponMainhand: case InventoryType.WeaponOffhand: if (GetFlags2().HasAnyFlag(ItemFlags2.CasterWeapon)) - dps = CliDB.ItemDamageOneHandCasterStorage.LookupByKey(itemLevel).DPS[(int)quality]; + dps = CliDB.ItemDamageOneHandCasterStorage.LookupByKey(itemLevel).Quality[(int)quality]; else - dps = CliDB.ItemDamageOneHandStorage.LookupByKey(itemLevel).DPS[(int)quality]; + dps = CliDB.ItemDamageOneHandStorage.LookupByKey(itemLevel).Quality[(int)quality]; break; default: return; } float avgDamage = dps * GetDelay() * 0.001f; - minDamage = (GetStatScalingFactor() * -0.5f + 1.0f) * avgDamage; - maxDamage = (float)Math.Floor(avgDamage * (GetStatScalingFactor() * 0.5f + 1.0f) + 0.5f); + minDamage = (GetDmgVariance() * -0.5f + 1.0f) * avgDamage; + maxDamage = (float)Math.Floor(avgDamage * (GetDmgVariance() * 0.5f + 1.0f) + 0.5f); } public bool IsUsableByLootSpecialization(Player player, bool alwaysAllowBoundToAccount) @@ -225,16 +249,16 @@ namespace Game.Entities } public uint GetId() { return BasicData.Id; } - public ItemClass GetClass() { return (ItemClass)BasicData.Class; } - public uint GetSubClass() { return BasicData.SubClass; } - public ItemQuality GetQuality() { return (ItemQuality)ExtendedData.Quality; } + public ItemClass GetClass() { return (ItemClass)BasicData.ClassID; } + public uint GetSubClass() { return BasicData.SubclassID; } + public ItemQuality GetQuality() { return (ItemQuality)ExtendedData.OverallQualityID; } public ItemFlags GetFlags() { return (ItemFlags)ExtendedData.Flags[0]; } public ItemFlags2 GetFlags2() { return (ItemFlags2)ExtendedData.Flags[1]; } public ItemFlags3 GetFlags3() { return (ItemFlags3)ExtendedData.Flags[2]; } public uint GetFlags4() { return ExtendedData.Flags[3]; } - public float GetUnk1() { return ExtendedData.Unk1; } - public float GetUnk2() { return ExtendedData.Unk2; } - public uint GetBuyCount() { return Math.Max(ExtendedData.BuyCount, 1u); } + public float GetPriceRandomValue() { return ExtendedData.PriceRandomValue; } + public float GetPriceVariance() { return ExtendedData.PriceVariance; } + public uint GetBuyCount() { return Math.Max(ExtendedData.VendorStackCount, 1u); } public uint GetBuyPrice() { return ExtendedData.BuyPrice; } public uint GetSellPrice() { return ExtendedData.SellPrice; } public InventoryType GetInventoryType() { return ExtendedData.inventoryType; } @@ -244,15 +268,15 @@ namespace Game.Entities public int GetBaseRequiredLevel() { return ExtendedData.RequiredLevel; } public uint GetRequiredSkill() { return ExtendedData.RequiredSkill; } public uint GetRequiredSkillRank() { return ExtendedData.RequiredSkillRank; } - public uint GetRequiredSpell() { return ExtendedData.RequiredSpell; } - public uint GetRequiredReputationFaction() { return ExtendedData.RequiredReputationFaction; } - public uint GetRequiredReputationRank() { return ExtendedData.RequiredReputationRank; } + public uint GetRequiredSpell() { return ExtendedData.RequiredAbility; } + public uint GetRequiredReputationFaction() { return ExtendedData.MinFactionID; } + public uint GetRequiredReputationRank() { return ExtendedData.MinReputation; } public uint GetMaxCount() { return ExtendedData.MaxCount; } public uint GetContainerSlots() { return ExtendedData.ContainerSlots; } public int GetItemStatType(uint index) { Contract.Assert(index < ItemConst.MaxStats); - return ExtendedData.ItemStatType[index]; + return ExtendedData.StatModifierBonusStat[index]; } public int GetItemStatValue(uint index) { @@ -262,42 +286,42 @@ namespace Game.Entities public int GetItemStatAllocation(uint index) { Contract.Assert(index < ItemConst.MaxStats); - return ExtendedData.ItemStatAllocation[index]; + return ExtendedData.StatPercentEditor[index]; } public float GetItemStatSocketCostMultiplier(uint index) { Contract.Assert(index < ItemConst.MaxStats); - return ExtendedData.ItemStatSocketCostMultiplier[index]; + return ExtendedData.StatPercentageOfSocket[index]; } - public uint GetScalingStatDistribution() { return ExtendedData.ScalingStatDistribution; } + public uint GetScalingStatDistribution() { return ExtendedData.ScalingStatDistributionID; } public uint GetDamageType() { return ExtendedData.DamageType; } - public uint GetDelay() { return ExtendedData.Delay; } - public float GetRangedModRange() { return ExtendedData.RangedModRange; } + public uint GetDelay() { return ExtendedData.ItemDelay; } + public float GetRangedModRange() { return ExtendedData.ItemRange; } public ItemBondingType GetBonding() { return (ItemBondingType)ExtendedData.Bonding; } - public uint GetPageText() { return ExtendedData.PageText; } - public uint GetStartQuest() { return ExtendedData.StartQuest; } + public uint GetPageText() { return ExtendedData.PageID; } + public uint GetStartQuest() { return ExtendedData.StartQuestID; } public uint GetLockID() { return ExtendedData.LockID; } - public uint GetRandomProperty() { return ExtendedData.RandomProperty; } - public uint GetRandomSuffix() { return ExtendedData.RandomSuffix; } + public uint GetRandomProperty() { return ExtendedData.RandomSelect; } + public uint GetRandomSuffix() { return ExtendedData.ItemRandomSuffixGroupID; } public uint GetItemSet() { return ExtendedData.ItemSet; } - public uint GetArea() { return ExtendedData.Area; } - public uint GetMap() { return ExtendedData.Map; } + public uint GetArea() { return ExtendedData.ZoneBound; } + public uint GetMap() { return ExtendedData.InstanceBound; } public BagFamilyMask GetBagFamily() { return (BagFamilyMask)ExtendedData.BagFamily; } - public uint GetTotemCategory() { return ExtendedData.TotemCategory; } + public uint GetTotemCategory() { return ExtendedData.TotemCategoryID; } public SocketColor GetSocketColor(uint index) { Contract.Assert(index < ItemConst.MaxGemSockets); - return (SocketColor)ExtendedData.SocketColor[index]; + return (SocketColor)ExtendedData.SocketType[index]; } - public uint GetSocketBonus() { return ExtendedData.SocketBonus; } + public uint GetSocketBonus() { return ExtendedData.SocketMatchEnchantmentId; } public uint GetGemProperties() { return ExtendedData.GemProperties; } - public float GetArmorDamageModifier() { return ExtendedData.ArmorDamageModifier; } - public uint GetDuration() { return ExtendedData.Duration; } - public uint GetItemLimitCategory() { return ExtendedData.ItemLimitCategory; } - public HolidayIds GetHolidayID() { return (HolidayIds)ExtendedData.HolidayID; } - public float GetStatScalingFactor() { return ExtendedData.StatScalingFactor; } + public float GetQualityModifier() { return ExtendedData.QualityModifier; } + public uint GetDuration() { return ExtendedData.DurationInInventory; } + public uint GetItemLimitCategory() { return ExtendedData.LimitCategory; } + public HolidayIds GetHolidayID() { return (HolidayIds)ExtendedData.RequiredHoliday; } + public float GetDmgVariance() { return ExtendedData.DmgVariance; } public byte GetArtifactID() { return ExtendedData.ArtifactID; } - public byte GetRequiredExpansion() { return ExtendedData.RequiredExpansion; } + public byte GetRequiredExpansion() { return ExtendedData.ExpansionID; } public bool IsCurrencyToken() { return (GetBagFamily() & BagFamilyMask.CurrencyTokens) != 0; } diff --git a/Source/Game/Entities/Player/CollectionManager.cs b/Source/Game/Entities/Player/CollectionManager.cs index 4f9d369a0..83aec55af 100644 --- a/Source/Game/Entities/Player/CollectionManager.cs +++ b/Source/Game/Entities/Player/CollectionManager.cs @@ -153,11 +153,11 @@ namespace Game.Entities uint bonusId = 0; if (flags.HasAnyFlag(HeirloomPlayerFlags.BonusLevel110)) - bonusId = heirloom.ItemBonusListID[2]; + bonusId = heirloom.UpgradeItemBonusListID[2]; else if (flags.HasAnyFlag(HeirloomPlayerFlags.BonusLevel100)) - bonusId = heirloom.ItemBonusListID[1]; + bonusId = heirloom.UpgradeItemBonusListID[1]; else if (flags.HasAnyFlag(HeirloomPlayerFlags.BonusLevel90)) - bonusId = heirloom.ItemBonusListID[0]; + bonusId = heirloom.UpgradeItemBonusListID[0]; _heirlooms[itemId] = new HeirloomData(flags, bonusId); } while (result.NextRow()); @@ -232,17 +232,17 @@ namespace Game.Entities if (heirloom.UpgradeItemID[0] == castItem) { flags |= HeirloomPlayerFlags.BonusLevel90; - bonusId = heirloom.ItemBonusListID[0]; + bonusId = heirloom.UpgradeItemBonusListID[0]; } if (heirloom.UpgradeItemID[1] == castItem) { flags |= HeirloomPlayerFlags.BonusLevel100; - bonusId = heirloom.ItemBonusListID[1]; + bonusId = heirloom.UpgradeItemBonusListID[1]; } if (heirloom.UpgradeItemID[2] == castItem) { flags |= HeirloomPlayerFlags.BonusLevel110; - bonusId = heirloom.ItemBonusListID[2]; + bonusId = heirloom.UpgradeItemBonusListID[2]; } foreach (Item item in player.GetItemListByEntry(itemId, true)) @@ -272,7 +272,7 @@ namespace Game.Entities return; // Check for heirloom pairs (normal - heroic, heroic - mythic) - uint heirloomItemId = heirloom.NextDifficultyItemID; + uint heirloomItemId = heirloom.StaticUpgradedItemID; uint newItemId = 0; HeirloomRecord heirloomDiff; while ((heirloomDiff = Global.DB2Mgr.GetHeirloomByItemId(heirloomItemId)) != null) @@ -280,7 +280,7 @@ namespace Game.Entities if (player.GetItemByEntry(heirloomDiff.ItemID)) newItemId = heirloomDiff.ItemID; - HeirloomRecord heirloomSub = Global.DB2Mgr.GetHeirloomByItemId(heirloomDiff.NextDifficultyItemID); + HeirloomRecord heirloomSub = Global.DB2Mgr.GetHeirloomByItemId(heirloomDiff.StaticUpgradedItemID); if (heirloomSub != null) { heirloomItemId = heirloomSub.ItemID; @@ -385,10 +385,10 @@ namespace Game.Entities _mounts[spellId] = flags; // Mount condition only applies to using it, should still learn it. - if (mount.PlayerConditionId != 0) + if (mount.PlayerConditionID != 0) { - PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(mount.PlayerConditionId); - if (!ConditionManager.IsPlayerMeetingCondition(player, playerCondition)) + PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(mount.PlayerConditionID); + if (playerCondition != null && !ConditionManager.IsPlayerMeetingCondition(player, playerCondition)) return false; } @@ -578,7 +578,7 @@ namespace Game.Entities if (itemModifiedAppearance == null) return false; - if (itemModifiedAppearance.SourceType == 6 || itemModifiedAppearance.SourceType == 9) + if (itemModifiedAppearance.TransmogSourceTypeEnum == 6 || itemModifiedAppearance.TransmogSourceTypeEnum == 9) return false; if (!CliDB.ItemSearchNameStorage.ContainsKey(itemModifiedAppearance.ItemID)) diff --git a/Source/Game/Entities/Player/Player.DB.cs b/Source/Game/Entities/Player/Player.DB.cs index 4a6d1cea5..c1cec54e4 100644 --- a/Source/Game/Entities/Player/Player.DB.cs +++ b/Source/Game/Entities/Player/Player.DB.cs @@ -56,8 +56,8 @@ namespace Game.Entities ArtifactPowerRecord artifactPower = CliDB.ArtifactPowerStorage.LookupByKey(artifactPowerData.ArtifactPowerId); if (artifactPower != null) { - if (artifactPowerData.PurchasedRank > artifactPower.MaxRank) - artifactPowerData.PurchasedRank = artifactPower.MaxRank; + if (artifactPowerData.PurchasedRank > artifactPower.MaxPurchasableRank) + artifactPowerData.PurchasedRank = artifactPower.MaxPurchasableRank; artifactPowerData.CurrentRankWithBonus = (byte)(artifactPower.Flags.HasAnyFlag(ArtifactPowerFlag.First) ? 1 : 0); @@ -2659,7 +2659,7 @@ namespace Game.Entities else // have start node, to it { Log.outError(LogFilter.Player, "Character {0} have too short taxi destination list, teleport to original node.", GetGUID().ToString()); - mapId = nodeEntry.MapID; + mapId = nodeEntry.ContinentID; Relocate(nodeEntry.Pos.X, nodeEntry.Pos.Y, nodeEntry.Pos.Z, 0.0f); } m_taxi.ClearTaxiDestinations(); @@ -2669,10 +2669,10 @@ namespace Game.Entities { // save source node as recall coord to prevent recall and fall from sky var nodeEntry = CliDB.TaxiNodesStorage.LookupByKey(nodeid); - if (nodeEntry != null && nodeEntry.MapID == GetMapId()) + if (nodeEntry != null && nodeEntry.ContinentID == GetMapId()) { Contract.Assert(nodeEntry != null); // checked in m_taxi.LoadTaxiDestinationsFromString - mapId = nodeEntry.MapID; + mapId = nodeEntry.ContinentID; Relocate(nodeEntry.Pos.X, nodeEntry.Pos.Y, nodeEntry.Pos.Z, 0.0f); } diff --git a/Source/Game/Entities/Player/Player.Items.cs b/Source/Game/Entities/Player/Player.Items.cs index ebe0d5c23..9bffde923 100644 --- a/Source/Game/Entities/Player/Player.Items.cs +++ b/Source/Game/Entities/Player/Player.Items.cs @@ -78,8 +78,8 @@ namespace Game.Entities bool store_error = false; for (byte i = 0; i < ItemConst.MaxItemExtCostItems; ++i) { - uint count = iece.RequiredItemCount[i]; - uint itemid = iece.RequiredItem[i]; + uint count = iece.ItemCount[i]; + uint itemid = iece.ItemID[i]; if (count != 0 && itemid != 0) { @@ -116,8 +116,8 @@ namespace Game.Entities // Grant back extendedcost items for (byte i = 0; i < ItemConst.MaxItemExtCostItems; ++i) { - uint count = iece.RequiredItemCount[i]; - uint itemid = iece.RequiredItem[i]; + uint count = iece.ItemCount[i]; + uint itemid = iece.ItemID[i]; if (count != 0 && itemid != 0) { List dest = new List(); @@ -131,11 +131,11 @@ namespace Game.Entities // Grant back currencies for (byte i = 0; i < ItemConst.MaxItemExtCostCurrencies; ++i) { - if (iece.RequirementFlags.HasAnyFlag((byte)((int)ItemExtendedCostFlags.RequireSeasonEarned1 << i))) + if (iece.Flags.HasAnyFlag((byte)((int)ItemExtendedCostFlags.RequireSeasonEarned1 << i))) continue; - uint count = iece.RequiredCurrencyCount[i]; - uint currencyid = iece.RequiredCurrency[i]; + uint count = iece.CurrencyCount[i]; + uint currencyid = iece.CurrencyID[i]; if (count != 0 && currencyid != 0) ModifyCurrency((CurrencyTypes)currencyid, (int)count, true, true); } @@ -179,17 +179,17 @@ namespace Game.Entities for (byte i = 0; i < ItemConst.MaxItemExtCostItems; ++i) // item cost data { - setItemPurchaseData.Contents.Items[i].ItemCount = iece.RequiredItemCount[i]; - setItemPurchaseData.Contents.Items[i].ItemID = iece.RequiredItem[i]; + setItemPurchaseData.Contents.Items[i].ItemCount = iece.ItemCount[i]; + setItemPurchaseData.Contents.Items[i].ItemID = iece.ItemID[i]; } for (byte i = 0; i < ItemConst.MaxItemExtCostCurrencies; ++i) // currency cost data { - if (iece.RequirementFlags.HasAnyFlag((byte)((int)ItemExtendedCostFlags.RequireSeasonEarned1 << i))) + if (iece.Flags.HasAnyFlag((byte)((int)ItemExtendedCostFlags.RequireSeasonEarned1 << i))) continue; - setItemPurchaseData.Contents.Currencies[i].CurrencyCount = iece.RequiredCurrencyCount[i]; - setItemPurchaseData.Contents.Currencies[i].CurrencyID = iece.RequiredCurrency[i]; + setItemPurchaseData.Contents.Currencies[i].CurrencyCount = iece.CurrencyCount[i]; + setItemPurchaseData.Contents.Currencies[i].CurrencyID = iece.CurrencyID[i]; } SendPacket(setItemPurchaseData); @@ -205,17 +205,17 @@ namespace Game.Entities itemPurchaseRefundResult.Contents.Value.Money = item.GetPaidMoney(); for (byte i = 0; i < ItemConst.MaxItemExtCostItems; ++i) // item cost data { - itemPurchaseRefundResult.Contents.Value.Items[i].ItemCount = iece.RequiredItemCount[i]; - itemPurchaseRefundResult.Contents.Value.Items[i].ItemID = iece.RequiredItem[i]; + itemPurchaseRefundResult.Contents.Value.Items[i].ItemCount = iece.ItemCount[i]; + itemPurchaseRefundResult.Contents.Value.Items[i].ItemID = iece.ItemID[i]; } for (byte i = 0; i < ItemConst.MaxItemExtCostCurrencies; ++i) // currency cost data { - if (iece.RequirementFlags.HasAnyFlag((byte)((uint)ItemExtendedCostFlags.RequireSeasonEarned1 << i))) + if (iece.Flags.HasAnyFlag((byte)((uint)ItemExtendedCostFlags.RequireSeasonEarned1 << i))) continue; - itemPurchaseRefundResult.Contents.Value.Currencies[i].CurrencyCount = iece.RequiredCurrencyCount[i]; - itemPurchaseRefundResult.Contents.Value.Currencies[i].CurrencyID = iece.RequiredCurrency[i]; + itemPurchaseRefundResult.Contents.Value.Currencies[i].CurrencyCount = iece.CurrencyCount[i]; + itemPurchaseRefundResult.Contents.Value.Currencies[i].CurrencyID = iece.CurrencyID[i]; } } @@ -442,7 +442,7 @@ namespace Game.Entities else if (ditemProto.GetClass() == ItemClass.Armor) dmultiplier = dcost.ArmorSubClassCost[ditemProto.GetSubClass()]; - uint costs = (uint)(LostDurability * dmultiplier * (double)dQualitymodEntry.QualityMod * item.GetRepairCostMultiplier()); + uint costs = (uint)(LostDurability * dmultiplier * (double)dQualitymodEntry.Data * item.GetRepairCostMultiplier()); costs = (uint)(costs * discountMod * WorldConfig.GetFloatValue(WorldCfg.RateRepaircost)); if (costs == 0) //fix for ITEM_QUALITY_ARTIFACT @@ -1159,7 +1159,7 @@ namespace Game.Entities ItemTemplate proto = pItem.GetTemplate(); for (byte i = 0; i < proto.Effects.Count; ++i) - if (proto.Effects[i].Trigger == ItemSpelltriggerType.OnObtain && proto.Effects[i].SpellID > 0) // On obtain trigger + if (proto.Effects[i].TriggerType == ItemSpelltriggerType.OnObtain && proto.Effects[i].SpellID > 0) // On obtain trigger if (bag == InventorySlots.Bag0 || (bag >= InventorySlots.BagStart && bag < InventorySlots.BagEnd)) if (!HasAura(proto.Effects[i].SpellID)) CastSpell(this, proto.Effects[i].SpellID, true, pItem); @@ -1202,7 +1202,7 @@ namespace Game.Entities ItemTemplate proto = pItem2.GetTemplate(); for (byte i = 0; i < proto.Effects.Count; ++i) - if (proto.Effects[i].Trigger == ItemSpelltriggerType.OnObtain && proto.Effects[i].SpellID > 0) // On obtain trigger + if (proto.Effects[i].TriggerType == ItemSpelltriggerType.OnObtain && proto.Effects[i].SpellID > 0) // On obtain trigger if (bag == InventorySlots.Bag0 || (bag >= InventorySlots.BagStart && bag < InventorySlots.BagEnd)) if (!HasAura(proto.Effects[i].SpellID)) CastSpell(this, proto.Effects[i].SpellID, true, pItem2); @@ -1321,7 +1321,7 @@ namespace Game.Entities ItemChildEquipmentRecord childItemEntry = Global.DB2Mgr.GetItemChildEquipment(itemId); if (childItemEntry != null) { - ItemTemplate childTemplate = Global.ObjectMgr.GetItemTemplate(childItemEntry.AltItemID); + ItemTemplate childTemplate = Global.ObjectMgr.GetItemTemplate(childItemEntry.ChildItemID); if (childTemplate != null) { List childDest = new List(); @@ -1510,7 +1510,7 @@ namespace Game.Entities ArtifactRecord artifact = CliDB.ArtifactStorage.LookupByKey(proto.GetArtifactID()); if (artifact != null) - if (artifact.SpecID != GetUInt32Value(PlayerFields.CurrentSpecId)) + if (artifact.ChrSpecializationID != GetUInt32Value(PlayerFields.CurrentSpecId)) return InventoryResult.CantUseItem; return InventoryResult.Ok; @@ -1735,7 +1735,7 @@ namespace Game.Entities Item childItem = GetChildItemByGuid(parentItem.GetChildItem()); if (childItem) { - ushort childDest = (ushort)((InventorySlots.Bag0 << 8) | itemChildEquipment.AltEquipmentSlot); + ushort childDest = (ushort)((InventorySlots.Bag0 << 8) | itemChildEquipment.ChildItemEquipSlot); if (childItem.GetPos() != childDest) { Item dstItem = GetItemByPos(childDest); @@ -2521,17 +2521,17 @@ namespace Game.Entities var iece = CliDB.ItemExtendedCostStorage.LookupByKey(crItem.ExtendedCost); for (int i = 0; i < ItemConst.MaxItemExtCostItems; ++i) { - if (iece.RequiredItem[i] != 0) - DestroyItemCount(iece.RequiredItem[i], iece.RequiredItemCount[i] * stacks, true); + if (iece.ItemID[i] != 0) + DestroyItemCount(iece.ItemID[i], iece.ItemCount[i] * stacks, true); } for (int i = 0; i < ItemConst.MaxItemExtCostCurrencies; ++i) { - if (iece.RequirementFlags.HasAnyFlag((byte)((int)ItemExtendedCostFlags.RequireSeasonEarned1 << i))) + if (iece.Flags.HasAnyFlag((byte)((int)ItemExtendedCostFlags.RequireSeasonEarned1 << i))) continue; - if (iece.RequiredCurrency[i] != 0) - ModifyCurrency((CurrencyTypes)iece.RequiredCurrency[i], -(int)(iece.RequiredCurrencyCount[i] * stacks), true, true); + if (iece.CurrencyID[i] != 0) + ModifyCurrency((CurrencyTypes)iece.CurrencyID[i], -(int)(iece.CurrencyCount[i] * stacks), true, true); } } @@ -3502,7 +3502,7 @@ namespace Game.Entities for (byte i = 0; i < ItemConst.MaxItemExtCostItems; ++i) { - if (iece.RequiredItem[i] != 0 && !HasItemCount(iece.RequiredItem[i], (iece.RequiredItemCount[i] * stacks))) + if (iece.ItemID[i] != 0 && !HasItemCount(iece.ItemID[i], (iece.ItemCount[i] * stacks))) { SendEquipError(InventoryResult.VendorMissingTurnins); return false; @@ -3511,23 +3511,23 @@ namespace Game.Entities for (byte i = 0; i < ItemConst.MaxItemExtCostCurrencies; ++i) { - if (iece.RequiredCurrency[i] == 0) + if (iece.CurrencyID[i] == 0) continue; - CurrencyTypesRecord entry = CliDB.CurrencyTypesStorage.LookupByKey(iece.RequiredCurrency[i]); + CurrencyTypesRecord entry = CliDB.CurrencyTypesStorage.LookupByKey(iece.CurrencyID[i]); if (entry == null) { SendBuyError(BuyResult.CantFindItem, creature, currency); // Find correct error return false; } - if (iece.RequirementFlags.HasAnyFlag((byte)((uint)ItemExtendedCostFlags.RequireSeasonEarned1 << i))) + if (iece.Flags.HasAnyFlag((byte)((uint)ItemExtendedCostFlags.RequireSeasonEarned1 << i))) { // Not implemented SendEquipError(InventoryResult.VendorMissingTurnins); // Find correct error return false; } - else if (!HasCurrency(iece.RequiredCurrency[i], (iece.RequiredCurrencyCount[i] * stacks))) + else if (!HasCurrency(iece.CurrencyID[i], (iece.CurrencyCount[i] * stacks))) { SendEquipError(InventoryResult.VendorMissingTurnins); // Find correct error return false; @@ -3535,20 +3535,20 @@ namespace Game.Entities } // check for personal arena rating requirement - if (GetMaxPersonalArenaRatingRequirement(iece.RequiredArenaSlot) < iece.RequiredPersonalArenaRating) + if (GetMaxPersonalArenaRatingRequirement(iece.ArenaBracket) < iece.RequiredArenaRating) { // probably not the proper equip err SendEquipError(InventoryResult.CantEquipRank); return false; } - if (iece.RequiredFactionId != 0 && (uint)GetReputationRank(iece.RequiredFactionId) < iece.RequiredFactionStanding) + if (iece.MinFactionID != 0 && (uint)GetReputationRank(iece.MinFactionID) < iece.RequiredAchievement) { SendBuyError(BuyResult.ReputationRequire, creature, currency); return false; } - if (iece.RequirementFlags.HasAnyFlag((byte)ItemExtendedCostFlags.RequireGuild) && GetGuildId() == 0) + if (iece.Flags.HasAnyFlag((byte)ItemExtendedCostFlags.RequireGuild) && GetGuildId() == 0) { SendEquipError(InventoryResult.VendorMissingTurnins); // Find correct error return false; @@ -3571,21 +3571,21 @@ namespace Game.Entities { for (byte i = 0; i < ItemConst.MaxItemExtCostItems; ++i) { - if (iece.RequiredItem[i] == 0) + if (iece.ItemID[i] == 0) continue; - DestroyItemCount(iece.RequiredItem[i], iece.RequiredItemCount[i] * stacks, true); + DestroyItemCount(iece.ItemID[i], iece.ItemCount[i] * stacks, true); } for (byte i = 0; i < ItemConst.MaxItemExtCostCurrencies; ++i) { - if (iece.RequiredCurrency[i] == 0) + if (iece.CurrencyID[i] == 0) continue; - if (iece.RequirementFlags.HasAnyFlag((byte)((uint)ItemExtendedCostFlags.RequireSeasonEarned1 << i))) + if (iece.Flags.HasAnyFlag((byte)((uint)ItemExtendedCostFlags.RequireSeasonEarned1 << i))) continue; - ModifyCurrency((CurrencyTypes)iece.RequiredCurrency[i], -(int)(iece.RequiredCurrencyCount[i] * stacks), false, true); + ModifyCurrency((CurrencyTypes)iece.CurrencyID[i], -(int)(iece.CurrencyCount[i] * stacks), false, true); } } @@ -3702,7 +3702,7 @@ namespace Game.Entities for (byte i = 0; i < ItemConst.MaxItemExtCostItems; ++i) { - if (iece.RequiredItem[i] != 0 && !HasItemCount(iece.RequiredItem[i], iece.RequiredItemCount[i] * stacks)) + if (iece.ItemID[i] != 0 && !HasItemCount(iece.ItemID[i], iece.ItemCount[i] * stacks)) { SendEquipError(InventoryResult.VendorMissingTurnins); return false; @@ -3711,22 +3711,22 @@ namespace Game.Entities for (byte i = 0; i < ItemConst.MaxItemExtCostCurrencies; ++i) { - if (iece.RequiredCurrency[i] == 0) + if (iece.CurrencyID[i] == 0) continue; - var entry = CliDB.CurrencyTypesStorage.LookupByKey(iece.RequiredCurrency[i]); + var entry = CliDB.CurrencyTypesStorage.LookupByKey(iece.CurrencyID[i]); if (entry == null) { SendBuyError(BuyResult.CantFindItem, creature, item); return false; } - if (iece.RequirementFlags.HasAnyFlag((byte)((uint)ItemExtendedCostFlags.RequireSeasonEarned1 << i))) + if (iece.Flags.HasAnyFlag((byte)((uint)ItemExtendedCostFlags.RequireSeasonEarned1 << i))) { SendEquipError(InventoryResult.VendorMissingTurnins); // Find correct error return false; } - else if (!HasCurrency(iece.RequiredCurrency[i], iece.RequiredCurrencyCount[i] * stacks)) + else if (!HasCurrency(iece.CurrencyID[i], iece.CurrencyCount[i] * stacks)) { SendEquipError(InventoryResult.VendorMissingTurnins); return false; @@ -3734,20 +3734,20 @@ namespace Game.Entities } // check for personal arena rating requirement - if (GetMaxPersonalArenaRatingRequirement(iece.RequiredArenaSlot) < iece.RequiredPersonalArenaRating) + if (GetMaxPersonalArenaRatingRequirement(iece.ArenaBracket) < iece.RequiredArenaRating) { // probably not the proper equip err SendEquipError(InventoryResult.CantEquipRank); return false; } - if (iece.RequiredFactionId != 0 && (uint)GetReputationRank(iece.RequiredFactionId) < iece.RequiredFactionStanding) + if (iece.MinFactionID != 0 && (uint)GetReputationRank(iece.MinFactionID) < iece.MinReputation) { SendBuyError(BuyResult.ReputationRequire, creature, item); return false; } - if (iece.RequirementFlags.HasAnyFlag((byte)ItemExtendedCostFlags.RequireGuild) && GetGuildId() == 0) + if (iece.Flags.HasAnyFlag((byte)ItemExtendedCostFlags.RequireGuild) && GetGuildId() == 0) { SendEquipError(InventoryResult.VendorMissingTurnins); // Find correct error return false; @@ -4264,7 +4264,7 @@ namespace Game.Entities continue; // wrong triggering type - if (apply && spellData.Trigger != ItemSpelltriggerType.OnEquip) + if (apply && spellData.TriggerType != ItemSpelltriggerType.OnEquip) continue; // check if it is valid spell @@ -4336,7 +4336,7 @@ namespace Game.Entities var effectData = proto.Effects[i]; // apply proc cooldown to equip auras if we have any - if (effectData.Trigger == ItemSpelltriggerType.OnEquip) + if (effectData.TriggerType == ItemSpelltriggerType.OnEquip) { SpellProcEntry procEntry = Global.SpellMgr.GetSpellProcEntry(effectData.SpellID); if (procEntry == null) @@ -4353,7 +4353,7 @@ namespace Game.Entities continue; // wrong triggering type - if (effectData.Trigger != ItemSpelltriggerType.OnUse) + if (effectData.TriggerType != ItemSpelltriggerType.OnUse) continue; // Don't replace longer cooldowns by equip cooldown if we have any. @@ -5277,11 +5277,11 @@ namespace Game.Entities if (childEquipement == null) return InventoryResult.Ok; - Item dstItem = GetItemByPos(InventorySlots.Bag0, childEquipement.AltEquipmentSlot); + Item dstItem = GetItemByPos(InventorySlots.Bag0, childEquipement.ChildItemEquipSlot); if (!dstItem) return InventoryResult.Ok; - ushort childDest = (ushort)((InventorySlots.Bag0 << 8) | childEquipement.AltEquipmentSlot); + ushort childDest = (ushort)((InventorySlots.Bag0 << 8) | childEquipement.ChildItemEquipSlot); InventoryResult msg = CanUnequipItem(childDest, !childItem.IsBag()); if (msg != InventoryResult.Ok) return msg; @@ -5428,7 +5428,7 @@ namespace Game.Entities ArtifactAppearanceRecord artifactAppearance = CliDB.ArtifactAppearanceStorage.LookupByKey(item.GetModifier(ItemModifier.ArtifactAppearanceId)); if (artifactAppearance != null) - if (artifactAppearance.ShapeshiftDisplayID != 0 && GetShapeshiftForm() == (ShapeShiftForm)artifactAppearance.ModifiesShapeshiftFormDisplay) + if (artifactAppearance.OverrideShapeshiftDisplayID != 0 && GetShapeshiftForm() == (ShapeShiftForm)artifactAppearance.OverrideShapeshiftFormID) RestoreDisplayId(); } @@ -5451,7 +5451,7 @@ namespace Game.Entities continue; if (powerAura.HasEffect(auraEffect.GetEffIndex())) - auraEffect.ChangeAmount((int)(artifactPowerRank.Value != 0 ? artifactPowerRank.Value : auraEffect.GetSpellEffectInfo().CalcValue())); + auraEffect.ChangeAmount((int)(artifactPowerRank.AuraPointsOverride != 0 ? artifactPowerRank.AuraPointsOverride : auraEffect.GetSpellEffectInfo().CalcValue())); } } else @@ -5460,10 +5460,10 @@ namespace Game.Entities else if (apply) { Dictionary csv = new Dictionary(); - if (artifactPowerRank.Value != 0) + if (artifactPowerRank.AuraPointsOverride != 0) for (int i = 0; i < SpellConst.MaxEffects; ++i) if (spellInfo.GetEffect((uint)i) != null) - csv.Add(SpellValueMod.BasePoint0 + i, (int)artifactPowerRank.Value); + csv.Add(SpellValueMod.BasePoint0 + i, (int)artifactPowerRank.AuraPointsOverride); CastCustomSpell(artifactPowerRank.SpellID, csv, this, TriggerCastFlags.FullMask, artifact); } @@ -5651,7 +5651,7 @@ namespace Game.Entities ItemTemplate proto = pItem.GetTemplate(); for (byte i = 0; i < proto.Effects.Count; ++i) - if (proto.Effects[i].Trigger == ItemSpelltriggerType.OnObtain && proto.Effects[i].SpellID > 0) // On obtain trigger + if (proto.Effects[i].TriggerType == ItemSpelltriggerType.OnObtain && proto.Effects[i].SpellID > 0) // On obtain trigger RemoveAurasDueToSpell(proto.Effects[i].SpellID); ItemRemovedQuestCheck(pItem.GetEntry(), pItem.GetCount()); diff --git a/Source/Game/Entities/Player/Player.Map.cs b/Source/Game/Entities/Player/Player.Map.cs index 43766d164..2ed0f0caa 100644 --- a/Source/Game/Entities/Player/Player.Map.cs +++ b/Source/Game/Entities/Player/Player.Map.cs @@ -512,7 +512,7 @@ namespace Game.Entities { if (missingQuest != 0 && !string.IsNullOrEmpty(ar.questFailedText)) SendSysMessage("{0}", ar.questFailedText); - else if (mapDiff.Message_lang.HasString(Global.WorldMgr.GetDefaultDbcLocale())) // if (missingAchievement) covered by this case + else if (mapDiff.Message.HasString(Global.WorldMgr.GetDefaultDbcLocale())) // if (missingAchievement) covered by this case SendTransferAborted(target_map, TransferAbortReason.Difficulty, (byte)target_difficulty); else if (missingItem != 0) GetSession().SendNotification(Global.ObjectMgr.GetCypherString(CypherStrings.LevelMinrequiredAndItem), LevelMin, Global.ObjectMgr.GetItemTemplate(missingItem).GetName()); diff --git a/Source/Game/Entities/Player/Player.PvP.cs b/Source/Game/Entities/Player/Player.PvP.cs index 46b0b7dfd..9909d9f7b 100644 --- a/Source/Game/Entities/Player/Player.PvP.cs +++ b/Source/Game/Entities/Player/Player.PvP.cs @@ -236,7 +236,7 @@ namespace Game.Entities if (rewardPackEntry == null) return; - CharTitlesRecord charTitlesEntry = CliDB.CharTitlesStorage.LookupByKey(rewardPackEntry.TitleID); + CharTitlesRecord charTitlesEntry = CliDB.CharTitlesStorage.LookupByKey(rewardPackEntry.CharTitleID); if (charTitlesEntry != null) SetTitle(charTitlesEntry); @@ -245,7 +245,7 @@ namespace Game.Entities if (rewardPackXItems != null) { foreach (RewardPackXItemRecord rewardPackXItem in rewardPackXItems) - AddItem(rewardPackXItem.ItemID, rewardPackXItem.Amount); + AddItem(rewardPackXItem.ItemID, rewardPackXItem.ItemQuantity); } } diff --git a/Source/Game/Entities/Player/Player.Quest.cs b/Source/Game/Entities/Player/Player.Quest.cs index 7528b4442..2b233d720 100644 --- a/Source/Game/Entities/Player/Player.Quest.cs +++ b/Source/Game/Entities/Player/Player.Quest.cs @@ -652,7 +652,7 @@ namespace Game.Entities if (CanSelectQuestPackageItem(questPackageItem)) { hasFilteredQuestPackageReward = true; - InventoryResult res = CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, questPackageItem.ItemID, questPackageItem.ItemCount); + InventoryResult res = CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, questPackageItem.ItemID, questPackageItem.ItemQuantity); if (res != InventoryResult.Ok) { SendEquipError(res, null, null, questPackageItem.ItemID); @@ -672,7 +672,7 @@ namespace Game.Entities if (questPackageItem.ItemID != reward) continue; - InventoryResult res = CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, questPackageItem.ItemID, questPackageItem.ItemCount); + InventoryResult res = CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, questPackageItem.ItemID, questPackageItem.ItemQuantity); if (res != InventoryResult.Ok) { SendEquipError(res, null, null, questPackageItem.ItemID); @@ -829,7 +829,7 @@ namespace Game.Entities (rewardProto.GetFlags2().HasAnyFlag(ItemFlags2.FactionHorde) && GetTeam() != Team.Horde)) return false; - switch (questPackageItem.FilterType) + switch (questPackageItem.DisplayType) { case QuestPackageFilter.LootSpecialization: return rewardProto.IsUsableByLootSpecialization(this, true); @@ -859,10 +859,10 @@ namespace Game.Entities { hasFilteredQuestPackageReward = true; List dest = new List(); - if (CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, questPackageItem.ItemID, questPackageItem.ItemCount) == InventoryResult.Ok) + if (CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, questPackageItem.ItemID, questPackageItem.ItemQuantity) == InventoryResult.Ok) { Item item = StoreNewItem(dest, questPackageItem.ItemID, true, ItemEnchantment.GenerateItemRandomPropertyId(questPackageItem.ItemID)); - SendNewItem(item, questPackageItem.ItemCount, true, false); + SendNewItem(item, questPackageItem.ItemQuantity, true, false); } } } @@ -879,10 +879,10 @@ namespace Game.Entities continue; List dest = new List(); - if (CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, questPackageItem.ItemID, questPackageItem.ItemCount) == InventoryResult.Ok) + if (CanStoreNewItem(ItemConst.NullBag, ItemConst.NullSlot, dest, questPackageItem.ItemID, questPackageItem.ItemQuantity) == InventoryResult.Ok) { Item item = StoreNewItem(dest, questPackageItem.ItemID, true, ItemEnchantment.GenerateItemRandomPropertyId(questPackageItem.ItemID)); - SendNewItem(item, questPackageItem.ItemCount, true, false); + SendNewItem(item, questPackageItem.ItemQuantity, true, false); } } } diff --git a/Source/Game/Entities/Player/Player.Spells.cs b/Source/Game/Entities/Player/Player.Spells.cs index 4ff54d2ff..f26692740 100644 --- a/Source/Game/Entities/Player/Player.Spells.cs +++ b/Source/Game/Entities/Player/Player.Spells.cs @@ -594,7 +594,7 @@ namespace Game.Entities { ItemEnchantmentType enchant_display_type = (ItemEnchantmentType)pEnchant.Effect[s]; uint enchant_amount = pEnchant.EffectPointsMin[s]; - uint enchant_spell_id = pEnchant.EffectSpellID[s]; + uint enchant_spell_id = pEnchant.EffectArg[s]; switch (enchant_display_type) { @@ -1064,7 +1064,7 @@ namespace Game.Entities if (proto != null) for (byte idx = 0; idx < proto.Effects.Count; ++idx) { - if (proto.Effects[idx].SpellID != 0 && proto.Effects[idx].Trigger == ItemSpelltriggerType.OnUse) + if (proto.Effects[idx].SpellID != 0 && proto.Effects[idx].TriggerType == ItemSpelltriggerType.OnUse) { SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(proto.Effects[idx].SpellID); if (spellInfo != null) @@ -1158,7 +1158,7 @@ namespace Game.Entities // remove all spells that related to this skill foreach (var pAbility in CliDB.SkillLineAbilityStorage.Values) if (pAbility.SkillLine == id) - RemoveSpell(Global.SpellMgr.GetFirstSpellInChain(pAbility.SpellID)); + RemoveSpell(Global.SpellMgr.GetFirstSpellInChain(pAbility.Spell)); // Clear profession lines if (GetUInt32Value(PlayerFields.ProfessionSkillLine1) == id) @@ -1396,13 +1396,13 @@ namespace Game.Entities for (byte i = 0; i < 5; i++) { - if (Condition.LTOperandType[i] == 0) + if (Condition.LtOperandType[i] == 0) continue; - uint _cur_gem = curcount[Condition.LTOperandType[i] - 1]; + uint _cur_gem = curcount[Condition.LtOperandType[i] - 1]; // if have use them as count, else use from Condition - uint _cmp_gem = Condition.RTOperandType[i] != 0 ? curcount[Condition.RTOperandType[i] - 1] : Condition.RTOperand[i]; + uint _cmp_gem = Condition.RtOperandType[i] != 0 ? curcount[Condition.RtOperandType[i] - 1] : Condition.RtOperand[i]; switch (Condition.Operator[i]) { @@ -1507,7 +1507,7 @@ namespace Game.Entities continue; // wrong triggering type - if (spellData.Trigger != ItemSpelltriggerType.OnUse) + if (spellData.TriggerType != ItemSpelltriggerType.OnUse) continue; SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(spellData.SpellID); @@ -1544,10 +1544,10 @@ namespace Game.Entities if (pEnchant.Effect[s] != ItemEnchantmentType.UseSpell) continue; - SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(pEnchant.EffectSpellID[s]); + SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(pEnchant.EffectArg[s]); if (spellInfo == null) { - Log.outError(LogFilter.Player, "Player.CastItemUseSpell Enchant {0}, cast unknown spell {1}", enchant_id, pEnchant.EffectSpellID[s]); + Log.outError(LogFilter.Player, "Player.CastItemUseSpell Enchant {0}, cast unknown spell {1}", enchant_id, pEnchant.EffectArg[s]); continue; } @@ -1573,14 +1573,14 @@ namespace Game.Entities void LearnSkillRewardedSpells(uint skillId, uint skillValue) { - ulong raceMask = getRaceMask(); + long raceMask = getRaceMask(); uint classMask = getClassMask(); foreach (var ability in CliDB.SkillLineAbilityStorage.Values) { if (ability.SkillLine != skillId) continue; - SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(ability.SpellID); + SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(ability.Spell); if (spellInfo == null) continue; @@ -1605,12 +1605,12 @@ namespace Game.Entities // need unlearn spell if (skillValue < ability.MinSkillLineRank && ability.AcquireMethod == AbilytyLearnType.OnSkillValue) - RemoveSpell(ability.SpellID); + RemoveSpell(ability.Spell); // need learn else if (!IsInWorld) - AddSpell(ability.SpellID, true, true, true, false, false, ability.SkillLine); + AddSpell(ability.Spell, true, true, true, false, false, ability.SkillLine); else - LearnSpell(ability.SpellID, true, ability.SkillLine); + LearnSpell(ability.Spell, true, ability.SkillLine); } } @@ -2961,8 +2961,8 @@ namespace Game.Entities PowerTypeRecord runeEntry = Global.DB2Mgr.GetPowerTypeEntry(PowerType.Runes); uint cooldown = GetRuneBaseCooldown(); - SetStatFloatValue(UnitFields.PowerRegenFlatModifier + runeIndex, (float)(1 * Time.InMilliseconds) / (float)cooldown - runeEntry.RegenerationPeace); - SetStatFloatValue(UnitFields.PowerRegenInterruptedFlatModifier + runeIndex, (float)(1 * Time.InMilliseconds) / (float)cooldown - runeEntry.RegenerationCombat); + SetStatFloatValue(UnitFields.PowerRegenFlatModifier + runeIndex, (float)(1 * Time.InMilliseconds) / (float)cooldown - runeEntry.RegenPeace); + SetStatFloatValue(UnitFields.PowerRegenInterruptedFlatModifier + runeIndex, (float)(1 * Time.InMilliseconds) / (float)cooldown - runeEntry.RegenCombat); } public uint GetRuneCooldown(byte index) { return m_runes.Cooldown[index]; } @@ -3052,7 +3052,7 @@ namespace Game.Entities continue; // wrong triggering type - if (spellData.Trigger != ItemSpelltriggerType.ChanceOnHit) + if (spellData.TriggerType != ItemSpelltriggerType.ChanceOnHit) continue; SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(spellData.SpellID); @@ -3109,11 +3109,11 @@ namespace Game.Entities continue; } - SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(pEnchant.EffectSpellID[s]); + SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(pEnchant.EffectArg[s]); if (spellInfo == null) { Log.outError(LogFilter.Player, "Player.CastItemCombatSpell(GUID: {0}, name: {1}, enchant: {2}): unknown spell {3} is casted, ignoring...", - GetGUID().ToString(), GetName(), enchant_id, pEnchant.EffectSpellID[s]); + GetGUID().ToString(), GetName(), enchant_id, pEnchant.EffectArg[s]); continue; } @@ -3128,7 +3128,7 @@ namespace Game.Entities } // Apply spell mods - ApplySpellMod(pEnchant.EffectSpellID[s], SpellModOp.ChanceOfSuccess, ref chance); + ApplySpellMod(pEnchant.EffectArg[s], SpellModOp.ChanceOfSuccess, ref chance); // Shiv has 100% chance to apply the poison if (FindCurrentSpellBySpellId(5938) != null && e_slot == (byte)EnchantmentSlot.Temp) diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index 31ac73716..c7fe52d5b 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -191,7 +191,7 @@ namespace Game.Entities SetMap(Global.MapMgr.CreateMap(info.MapId, this)); - int powertype = (int)cEntry.PowerType; + int powertype = (int)cEntry.DisplayPower; SetObjectScale(1.0f); @@ -388,7 +388,7 @@ namespace Game.Entities { if (!iProto.Effects.Empty()) { - switch (iProto.Effects[0].Category) + switch (iProto.Effects[0].SpellCategoryID) { case 11: // food count = (uint)(GetClass() == Class.Deathknight ? 10 : 4); @@ -1425,7 +1425,7 @@ namespace Game.Entities return false; } - if (!HasSpell(mount.SpellId)) + if (!HasSpell(mount.SourceSpellID)) { Log.outError(LogFilter.Player, "Mount action {0} not added into button {1} for player {2} ({3}): Player does not know this mount", action, button, GetName(), GetGUID().ToString()); return false; @@ -1655,7 +1655,7 @@ namespace Game.Entities if (questFactionRewEntry != null) { uint field = (uint)Math.Abs(quest.RewardFactionValue[i]); - rep = questFactionRewEntry.QuestRewFactionValue[field]; + rep = questFactionRewEntry.Difficulty[field]; } } @@ -2117,7 +2117,7 @@ namespace Game.Entities } public bool IsInAreaTriggerRadius(AreaTriggerRecord trigger) { - if (trigger == null || GetMapId() != trigger.MapID) + if (trigger == null || GetMapId() != trigger.ContinentID) return false; if (trigger.Radius > 0.0f) @@ -3752,13 +3752,13 @@ namespace Game.Entities if (!IsInCombat()) { - if (powerType.RegenerationDelay != 0 && Time.GetMSTimeDiffToNow(m_combatExitTime) < powerType.RegenerationDelay) + if (powerType.RegenInterruptTimeMS != 0 && Time.GetMSTimeDiffToNow(m_combatExitTime) < powerType.RegenInterruptTimeMS) return; - addvalue = (powerType.RegenerationPeace + GetFloatValue(UnitFields.PowerRegenFlatModifier + (int)powerIndex)) * 0.001f * m_regenTimer; + addvalue = (powerType.RegenPeace + GetFloatValue(UnitFields.PowerRegenFlatModifier + (int)powerIndex)) * 0.001f * m_regenTimer; } else - addvalue = (powerType.RegenerationCombat + GetFloatValue(UnitFields.PowerRegenInterruptedFlatModifier + (int)powerIndex)) * 0.001f * m_regenTimer; + addvalue = (powerType.RegenCombat + GetFloatValue(UnitFields.PowerRegenInterruptedFlatModifier + (int)powerIndex)) * 0.001f * m_regenTimer; WorldCfg[] RatesForPower = { @@ -3793,7 +3793,7 @@ namespace Game.Entities addvalue += GetTotalAuraModifierByMiscValue(AuraType.ModPowerRegen, (int)power) * ((power != PowerType.Energy) ? m_regenTimerCount : m_regenTimer) / (5 * Time.InMilliseconds); } - int minPower = powerType.RegenerationMin; + int minPower = powerType.MinPower; int maxPower = GetMaxPower(power); if (addvalue < 0.0f) @@ -3812,17 +3812,17 @@ namespace Game.Entities addvalue += m_powerFraction[powerIndex]; int integerValue = (int)Math.Abs(addvalue); - if (powerType.RegenerationCenter != 0) + if (powerType.CenterPower != 0) { - if (curValue > powerType.RegenerationCenter) + if (curValue > powerType.CenterPower) { addvalue = -Math.Abs(addvalue); - minPower = powerType.RegenerationCenter; + minPower = powerType.CenterPower; } - else if (curValue < powerType.RegenerationCenter) + else if (curValue < powerType.CenterPower) { addvalue = Math.Abs(addvalue); - maxPower = powerType.RegenerationCenter; + maxPower = powerType.CenterPower; } else return; @@ -3982,46 +3982,46 @@ namespace Game.Entities switch (selection) { case 0: - if (!entry.Flags.HasAnyFlag((ushort)1)) + if (!entry.Flags.HasAnyFlag((short)1)) return false; - return !entry.Flags.HasAnyFlag((ushort)0x2C); + return !entry.Flags.HasAnyFlag((short)0x2C); case 1: - if (!entry.Flags.HasAnyFlag((ushort)1)) + if (!entry.Flags.HasAnyFlag((short)1)) return false; - if (!entry.Flags.HasAnyFlag((ushort)0x94)) + if (!entry.Flags.HasAnyFlag((short)0x94)) return false; - return !entry.Flags.HasAnyFlag((ushort)8); + return !entry.Flags.HasAnyFlag((short)8); case 2: - if (!entry.Flags.HasAnyFlag((ushort)1)) + if (!entry.Flags.HasAnyFlag((short)1)) return false; - if (!entry.Flags.HasAnyFlag((ushort)0x70)) + if (!entry.Flags.HasAnyFlag((short)0x70)) return false; - return !entry.Flags.HasAnyFlag((ushort)8); + return !entry.Flags.HasAnyFlag((short)8); case 3: - if (!entry.Flags.HasAnyFlag((ushort)1)) + if (!entry.Flags.HasAnyFlag((short)1)) return false; - if (!entry.Flags.HasAnyFlag((ushort)0x20)) + if (!entry.Flags.HasAnyFlag((short)0x20)) return false; - return !entry.Flags.HasAnyFlag((ushort)8); + return !entry.Flags.HasAnyFlag((short)8); case 4: case 8: - if (!entry.Flags.HasAnyFlag((ushort)3)) + if (!entry.Flags.HasAnyFlag((short)3)) return false; - return !entry.Flags.HasAnyFlag((ushort)0x2C); + return !entry.Flags.HasAnyFlag((short)0x2C); case 5: case 9: - if (!entry.Flags.HasAnyFlag((ushort)3)) + if (!entry.Flags.HasAnyFlag((short)3)) return false; - if (!entry.Flags.HasAnyFlag((ushort)0x94)) + if (!entry.Flags.HasAnyFlag((short)0x94)) return false; - return !entry.Flags.HasAnyFlag((ushort)8); + return !entry.Flags.HasAnyFlag((short)8); case 6: case 10: - if (!entry.Flags.HasAnyFlag((ushort)3)) + if (!entry.Flags.HasAnyFlag((short)3)) return false; - if (!entry.Flags.HasAnyFlag((ushort)0x70)) + if (!entry.Flags.HasAnyFlag((short)0x70)) return false; - return !entry.Flags.HasAnyFlag((ushort)8); + return !entry.Flags.HasAnyFlag((short)8); case 7: return true; default: @@ -5143,7 +5143,7 @@ namespace Game.Entities { ChrRacesRecord rEntry = CliDB.ChrRacesStorage.LookupByKey((byte)race); if (rEntry != null) - return rEntry.TeamID; + return (uint)rEntry.Alliance; Log.outError(LogFilter.Player, "Race ({0}) not found in DBC: wrong DBC files?", race); return TeamId.Neutral; @@ -6731,7 +6731,7 @@ namespace Game.Entities // check node starting pos data set case if provided if (node.Pos.X != 0.0f || node.Pos.Y != 0.0f || node.Pos.Z != 0.0f) { - if (node.MapID != GetMapId() || !IsInDist(node.Pos.X, node.Pos.Y, node.Pos.Z, 2 * SharedConst.InteractionDistance)) + if (node.ContinentID != GetMapId() || !IsInDist(node.Pos.X, node.Pos.Y, node.Pos.Z, 2 * SharedConst.InteractionDistance)) { GetSession().SendActivateTaxiReply(ActivateTaxiReply.TooFarAway); return false; @@ -6842,7 +6842,7 @@ namespace Game.Entities m_taxi.ClearTaxiDestinations(); ModifyMoney(-totalcost); UpdateCriteria(CriteriaTypes.GoldSpentForTravelling, totalcost); - TeleportTo(lastPathNode.MapID, lastPathNode.Pos.X, lastPathNode.Pos.Y, lastPathNode.Pos.Z, GetOrientation()); + TeleportTo(lastPathNode.ContinentID, lastPathNode.Pos.X, lastPathNode.Pos.Y, lastPathNode.Pos.Z, GetOrientation()); return false; } else @@ -6863,8 +6863,8 @@ namespace Game.Entities List nodes = new List(); - nodes.Add(entry.From); - nodes.Add(entry.To); + nodes.Add(entry.FromTaxiNode); + nodes.Add(entry.ToTaxiNode); return ActivateTaxiPathTo(nodes, null, spellid); } @@ -6905,7 +6905,7 @@ namespace Game.Entities var prevNode = nodeList[i - 1]; // skip nodes at another map - if (node.MapID != GetMapId()) + if (node.ContinentID != GetMapId()) continue; distPrev = distNext; @@ -7054,7 +7054,7 @@ namespace Game.Entities } public bool IsSpellFitByClassAndRace(uint spell_id) { - ulong racemask = getRaceMask(); + long racemask = getRaceMask(); uint classmask = getClassMask(); var bounds = Global.SpellMgr.GetSkillLineAbilityMapBounds(spell_id); diff --git a/Source/Game/Entities/StatSystem.cs b/Source/Game/Entities/StatSystem.cs index ec0896447..132adff25 100644 --- a/Source/Game/Entities/StatSystem.cs +++ b/Source/Game/Entities/StatSystem.cs @@ -538,7 +538,7 @@ namespace Game.Entities PowerTypeRecord powerTypeEntry = Global.DB2Mgr.GetPowerTypeEntry(powerType); if (powerTypeEntry != null) - return powerTypeEntry.MaxPower; + return powerTypeEntry.MaxBasePower; return 0; } diff --git a/Source/Game/Entities/Taxi/TaxiPathGraph.cs b/Source/Game/Entities/Taxi/TaxiPathGraph.cs index 2334a3e4f..5dae8f0f8 100644 --- a/Source/Game/Entities/Taxi/TaxiPathGraph.cs +++ b/Source/Game/Entities/Taxi/TaxiPathGraph.cs @@ -37,8 +37,8 @@ namespace Game.Entities // Initialize here foreach (TaxiPathRecord path in CliDB.TaxiPathStorage.Values) { - TaxiNodesRecord from = CliDB.TaxiNodesStorage.LookupByKey(path.From); - TaxiNodesRecord to = CliDB.TaxiNodesStorage.LookupByKey(path.To); + TaxiNodesRecord from = CliDB.TaxiNodesStorage.LookupByKey(path.FromTaxiNode); + TaxiNodesRecord to = CliDB.TaxiNodesStorage.LookupByKey(path.ToTaxiNode); if (from != null && to != null && from.Flags.HasAnyFlag(TaxiNodeFlags.Alliance | TaxiNodeFlags.Horde) && to.Flags.HasAnyFlag(TaxiNodeFlags.Alliance | TaxiNodeFlags.Horde)) AddVerticeAndEdgeFromNodeInfo(from, to, path.Id, edges); } @@ -62,7 +62,7 @@ namespace Game.Entities uint GetVertexIDFromNodeID(TaxiNodesRecord node) { - return node.LearnableIndex; + return node.CharacterBitNumber; } int GetVertexCount() @@ -105,8 +105,8 @@ namespace Game.Entities uint map1, map2; Vector2 pos1, pos2; - Global.DB2Mgr.DeterminaAlternateMapPosition(nodes[i - 1].MapID, nodes[i - 1].Loc.X, nodes[i - 1].Loc.Y, nodes[i - 1].Loc.Z, out map1, out pos1); - Global.DB2Mgr.DeterminaAlternateMapPosition(nodes[i].MapID, nodes[i].Loc.X, nodes[i].Loc.Y, nodes[i].Loc.Z, out map2, out pos2); + Global.DB2Mgr.DeterminaAlternateMapPosition(nodes[i - 1].ContinentID, nodes[i - 1].Loc.X, nodes[i - 1].Loc.Y, nodes[i - 1].Loc.Z, out map1, out pos1); + Global.DB2Mgr.DeterminaAlternateMapPosition(nodes[i].ContinentID, nodes[i].Loc.X, nodes[i].Loc.Y, nodes[i].Loc.Z, out map2, out pos2); if (map1 != map2) continue; @@ -172,11 +172,11 @@ namespace Game.Entities uint CreateVertexFromFromNodeInfoIfNeeded(TaxiNodesRecord node) { //Check if we need a new one or if it may be already created - if (m_vertices.Length <= node.LearnableIndex) - Array.Resize(ref m_vertices, (int)node.LearnableIndex + 1); + if (m_vertices.Length <= node.CharacterBitNumber) + Array.Resize(ref m_vertices, (int)node.CharacterBitNumber + 1); - m_vertices[node.LearnableIndex] = node; - return node.LearnableIndex; + m_vertices[node.CharacterBitNumber] = node; + return node.CharacterBitNumber; } TaxiNodesRecord[] m_vertices = new TaxiNodesRecord[0]; diff --git a/Source/Game/Entities/TemporarySummon.cs b/Source/Game/Entities/TemporarySummon.cs index eb2d2edb2..dde5e6f5d 100644 --- a/Source/Game/Entities/TemporarySummon.cs +++ b/Source/Game/Entities/TemporarySummon.cs @@ -337,7 +337,7 @@ namespace Game.Entities public bool IsGuardianPet() { - return IsPet() || (m_Properties != null && m_Properties.Category == SummonCategory.Pet); + return IsPet() || (m_Properties != null && m_Properties.Control == SummonCategory.Pet); } public override Unit GetOwner() { return m_owner; } @@ -373,7 +373,7 @@ namespace Game.Entities m_bonusSpellDamage = 0; m_unitTypeMask |= UnitTypeMask.Guardian; - if (properties != null && (properties.Type == SummonType.Pet || properties.Category == SummonCategory.Pet)) + if (properties != null && (properties.Title == SummonType.Pet || properties.Control == SummonCategory.Pet)) { m_unitTypeMask |= UnitTypeMask.ControlableGuardian; InitCharmInfo(); diff --git a/Source/Game/Entities/Transport.cs b/Source/Game/Entities/Transport.cs index a7bbb43b3..a2401413f 100644 --- a/Source/Game/Entities/Transport.cs +++ b/Source/Game/Entities/Transport.cs @@ -213,15 +213,15 @@ namespace Game.Entities MoveToNextWaypoint(); - Global.ScriptMgr.OnRelocate(this, _currentFrame.Node.NodeIndex, _currentFrame.Node.MapID, _currentFrame.Node.Loc.X, _currentFrame.Node.Loc.Y, _currentFrame.Node.Loc.Z); + Global.ScriptMgr.OnRelocate(this, _currentFrame.Node.NodeIndex, _currentFrame.Node.ContinentID, _currentFrame.Node.Loc.X, _currentFrame.Node.Loc.Y, _currentFrame.Node.Loc.Z); - Log.outDebug(LogFilter.Transport, "Transport {0} ({1}) moved to node {2} {3} {4} {5} {6}", GetEntry(), GetName(), _currentFrame.Node.NodeIndex, _currentFrame.Node.MapID, + Log.outDebug(LogFilter.Transport, "Transport {0} ({1}) moved to node {2} {3} {4} {5} {6}", GetEntry(), GetName(), _currentFrame.Node.NodeIndex, _currentFrame.Node.ContinentID, _currentFrame.Node.Loc.X, _currentFrame.Node.Loc.Y, _currentFrame.Node.Loc.Z); // Departure event var nextframe = GetKeyFrames()[_nextFrame]; if (_currentFrame.IsTeleportFrame()) - if (TeleportTransport(nextframe.Node.MapID, nextframe.Node.Loc.X, nextframe.Node.Loc.Y, nextframe.Node.Loc.Z, nextframe.InitialOrientation)) + if (TeleportTransport(nextframe.Node.ContinentID, nextframe.Node.Loc.X, nextframe.Node.Loc.Y, nextframe.Node.Loc.Z, nextframe.InitialOrientation)) return; } @@ -399,7 +399,7 @@ namespace Game.Entities UnitTypeMask mask = UnitTypeMask.Summon; if (properties != null) { - switch (properties.Category) + switch (properties.Control) { case SummonCategory.Pet: mask = UnitTypeMask.Guardian; @@ -414,7 +414,7 @@ namespace Game.Entities case SummonCategory.Ally: case SummonCategory.Unk: { - switch (properties.Type) + switch (properties.Title) { case SummonType.Minion: case SummonType.Guardian: @@ -664,7 +664,7 @@ namespace Game.Entities var nextFrame = GetKeyFrames()[_nextFrame]; _delayedTeleport = false; - Map newMap = Global.MapMgr.CreateBaseMap(nextFrame.Node.MapID); + Map newMap = Global.MapMgr.CreateBaseMap(nextFrame.Node.ContinentID); GetMap().RemoveFromMap(this, false); SetMap(newMap); @@ -684,7 +684,7 @@ namespace Game.Entities switch (obj.GetTypeId()) { case TypeId.Player: - if (!obj.ToPlayer().TeleportTo(nextFrame.Node.MapID, destX, destY, destZ, destO, TeleportToOptions.NotLeaveTransport)) + if (!obj.ToPlayer().TeleportTo(nextFrame.Node.ContinentID, destX, destY, destZ, destO, TeleportToOptions.NotLeaveTransport)) RemovePassenger(obj); break; case TypeId.DynamicObject: diff --git a/Source/Game/Entities/Unit/Unit.Movement.cs b/Source/Game/Entities/Unit/Unit.Movement.cs index 120f5cd17..3d61909de 100644 --- a/Source/Game/Entities/Unit/Unit.Movement.cs +++ b/Source/Game/Entities/Unit/Unit.Movement.cs @@ -687,7 +687,7 @@ namespace Game.Entities if (mountCapability == null) continue; - if (ridingSkill < mountCapability.RequiredRidingSkill) + if (ridingSkill < mountCapability.ReqRidingSkill) continue; if (!mountCapability.Flags.HasAnyFlag(MountCapabilityFlags.IgnoreRestrictions)) @@ -721,19 +721,19 @@ namespace Game.Entities else if (!mountCapability.Flags.HasAnyFlag(MountCapabilityFlags.Float)) continue; - if (mountCapability.RequiredMap != -1 && - GetMapId() != mountCapability.RequiredMap && - GetMap().GetEntry().CosmeticParentMapID != mountCapability.RequiredMap && - GetMap().GetEntry().ParentMapID != mountCapability.RequiredMap) + if (mountCapability.ReqMapID != -1 && + GetMapId() != mountCapability.ReqMapID && + GetMap().GetEntry().CosmeticParentMapID != mountCapability.ReqMapID && + GetMap().GetEntry().ParentMapID != mountCapability.ReqMapID) continue; - if (mountCapability.RequiredArea != 0 && !Global.DB2Mgr.IsInArea(areaId, mountCapability.RequiredArea)) + if (mountCapability.ReqAreaID != 0 && !Global.DB2Mgr.IsInArea(areaId, mountCapability.ReqAreaID)) continue; - if (mountCapability.RequiredAura != 0 && !HasAura(mountCapability.RequiredAura)) + if (mountCapability.ReqSpellAuraID != 0 && !HasAura(mountCapability.ReqSpellAuraID)) continue; - if (mountCapability.RequiredSpell != 0 && !HasSpell(mountCapability.RequiredSpell)) + if (mountCapability.ReqSpellKnownID != 0 && !HasSpell(mountCapability.ReqSpellKnownID)) continue; return mountCapability; diff --git a/Source/Game/Entities/Unit/Unit.Pets.cs b/Source/Game/Entities/Unit/Unit.Pets.cs index d3f9475ad..f6295ab3a 100644 --- a/Source/Game/Entities/Unit/Unit.Pets.cs +++ b/Source/Game/Entities/Unit/Unit.Pets.cs @@ -198,7 +198,7 @@ namespace Game.Entities if (minion.HasUnitTypeMask(UnitTypeMask.Guardian)) AddGuidValue(UnitFields.Summon, minion.GetGUID()); - if (minion.m_Properties != null && minion.m_Properties.Type == SummonType.Minipet) + if (minion.m_Properties != null && minion.m_Properties.Title == SummonType.Minipet) { SetCritterGUID(minion.GetGUID()); if (GetTypeId() == TypeId.Player) @@ -228,7 +228,7 @@ namespace Game.Entities m_Controlled.Remove(minion); - if (minion.m_Properties != null && minion.m_Properties.Type == SummonType.Minipet) + if (minion.m_Properties != null && minion.m_Properties.Title == SummonType.Minipet) { if (GetCritterGUID() == minion.GetGUID()) SetCritterGUID(ObjectGuid.Empty); diff --git a/Source/Game/Entities/Unit/Unit.Spells.cs b/Source/Game/Entities/Unit/Unit.Spells.cs index 95d558c88..07b2af2e8 100644 --- a/Source/Game/Entities/Unit/Unit.Spells.cs +++ b/Source/Game/Entities/Unit/Unit.Spells.cs @@ -2991,7 +2991,7 @@ namespace Game.Entities { if (spellInfo.RangeEntry == null) return 0; - if (spellInfo.RangeEntry.MaxRangeFriend == spellInfo.RangeEntry.MaxRangeHostile) + if (spellInfo.RangeEntry.RangeMax[0] == spellInfo.RangeEntry.RangeMax[1]) return spellInfo.GetMaxRange(); if (!target) return spellInfo.GetMaxRange(true); @@ -3002,7 +3002,7 @@ namespace Game.Entities { if (spellInfo.RangeEntry == null) return 0; - if (spellInfo.RangeEntry.MinRangeFriend == spellInfo.RangeEntry.MinRangeHostile) + if (spellInfo.RangeEntry.RangeMin[0] == spellInfo.RangeEntry.RangeMin[1]) return spellInfo.GetMinRange(); if (!target) return spellInfo.GetMinRange(true); diff --git a/Source/Game/Entities/Unit/Unit.cs b/Source/Game/Entities/Unit/Unit.cs index 31d8cb00f..cb3cdac5b 100644 --- a/Source/Game/Entities/Unit/Unit.cs +++ b/Source/Game/Entities/Unit/Unit.cs @@ -1175,8 +1175,8 @@ namespace Game.Entities { ArtifactAppearanceRecord artifactAppearance = CliDB.ArtifactAppearanceStorage.LookupByKey(artifact.GetModifier(ItemModifier.ArtifactAppearanceId)); if (artifactAppearance != null) - if ((ShapeShiftForm)artifactAppearance.ModifiesShapeshiftFormDisplay == form) - return artifactAppearance.ShapeshiftDisplayID; + if ((ShapeShiftForm)artifactAppearance.OverrideShapeshiftFormID == form) + return artifactAppearance.OverrideShapeshiftDisplayID; } } @@ -1892,17 +1892,17 @@ namespace Game.Entities else if (GetTypeId() == TypeId.Player) { ChrClassesRecord cEntry = CliDB.ChrClassesStorage.LookupByKey(GetClass()); - if (cEntry != null && cEntry.PowerType < PowerType.Max) - displayPower = cEntry.PowerType; + if (cEntry != null && cEntry.DisplayPower < PowerType.Max) + displayPower = cEntry.DisplayPower; } else if (GetTypeId() == TypeId.Unit) { - Vehicle vehicle = GetVehicle(); + Vehicle vehicle = GetVehicleKit(); if (vehicle) { PowerDisplayRecord powerDisplay = CliDB.PowerDisplayStorage.LookupByKey(vehicle.GetVehicleInfo().PowerDisplayID[0]); if (powerDisplay != null) - displayPower = (PowerType)powerDisplay.PowerType; + displayPower = (PowerType)powerDisplay.ActualType; else if (GetClass() == Class.Rogue) displayPower = PowerType.Energy; } @@ -2097,9 +2097,9 @@ namespace Game.Entities { return (Race)GetByteValue(UnitFields.Bytes0, 0); } - public ulong getRaceMask() + public long getRaceMask() { - return (1ul << ((int)GetRace() - 1)); + return (1 << ((int)GetRace() - 1)); } public Class GetClass() { diff --git a/Source/Game/Entities/Vehicle.cs b/Source/Game/Entities/Vehicle.cs index c3a3cf61a..3463dcf7f 100644 --- a/Source/Game/Entities/Vehicle.cs +++ b/Source/Game/Entities/Vehicle.cs @@ -75,7 +75,7 @@ namespace Game.Entities { PowerDisplayRecord powerDisplay = CliDB.PowerDisplayStorage.LookupByKey(_vehicleInfo.PowerDisplayID[0]); if (powerDisplay != null) - _me.SetPowerType((PowerType)powerDisplay.PowerType); + _me.SetPowerType((PowerType)powerDisplay.ActualType); else if (_me.GetClass() == Class.Rogue) _me.SetPowerType(PowerType.Energy); } @@ -343,12 +343,12 @@ namespace Game.Entities _me.SetFlag64(UnitFields.NpcFlags, (_me.IsTypeId(TypeId.Player) ? NPCFlags.PlayerVehicle : NPCFlags.SpellClick)); // Remove UNIT_FLAG_NOT_SELECTABLE if passenger did not have it before entering vehicle - if (seat.Value.SeatInfo.Flags[0].HasAnyFlag((uint)VehicleSeatFlags.PassengerNotSelectable) && !seat.Value.Passenger.IsUnselectable) + if (seat.Value.SeatInfo.Flags.HasAnyFlag(VehicleSeatFlags.PassengerNotSelectable) && !seat.Value.Passenger.IsUnselectable) unit.RemoveFlag(UnitFields.Flags, UnitFlags.NotSelectable); seat.Value.Passenger.Reset(); - if (_me.IsTypeId(TypeId.Unit) && unit.IsTypeId(TypeId.Player) && seat.Value.SeatInfo.Flags[0].HasAnyFlag((uint)VehicleSeatFlags.CanControl)) + if (_me.IsTypeId(TypeId.Unit) && unit.IsTypeId(TypeId.Player) && seat.Value.SeatInfo.Flags.HasAnyFlag(VehicleSeatFlags.CanControl)) _me.RemoveCharmedBy(unit); if (_me.IsInWorld) @@ -579,11 +579,11 @@ namespace Game.Entities player.StopCastingCharm(); player.StopCastingBindSight(); player.SendOnCancelExpectedVehicleRideAura(); - if (!veSeat.Flags[1].HasAnyFlag((uint)VehicleSeatFlagsB.KeepPet)) + if (!veSeat.FlagsB.HasAnyFlag(VehicleSeatFlagsB.KeepPet)) player.UnsummonPetTemporaryIfAny(); } - if (Seat.Value.SeatInfo.Flags[0].HasAnyFlag((uint)VehicleSeatFlags.PassengerNotSelectable)) + if (Seat.Value.SeatInfo.Flags.HasAnyFlag(VehicleSeatFlags.PassengerNotSelectable)) Passenger.SetFlag(UnitFields.Flags, UnitFlags.NotSelectable); Passenger.m_movementInfo.transport.pos.Relocate(veSeat.AttachmentOffset.X, veSeat.AttachmentOffset.Y, veSeat.AttachmentOffset.Z); @@ -592,7 +592,7 @@ namespace Game.Entities Passenger.m_movementInfo.transport.guid = Target.GetBase().GetGUID(); if (Target.GetBase().IsTypeId(TypeId.Unit) && Passenger.IsTypeId(TypeId.Player) && - Seat.Value.SeatInfo.Flags[0].HasAnyFlag((uint)VehicleSeatFlags.CanControl)) + Seat.Value.SeatInfo.Flags.HasAnyFlag(VehicleSeatFlags.CanControl)) Contract.Assert(Target.GetBase().SetCharmedBy(Passenger, CharmType.Vehicle)); // SMSG_CLIENT_CONTROL Passenger.SendClearTarget(); // SMSG_BREAK_TARGET diff --git a/Source/Game/Garrisons/GarrisonManager.cs b/Source/Game/Garrisons/GarrisonManager.cs index 7362f8ca8..c303564b3 100644 --- a/Source/Game/Garrisons/GarrisonManager.cs +++ b/Source/Game/Garrisons/GarrisonManager.cs @@ -37,12 +37,12 @@ namespace Game.Garrisons foreach (GameObjectsRecord gameObject in CliDB.GameObjectsStorage.Values) { - if (gameObject.Type == GameObjectTypes.GarrisonPlot) + if (gameObject.TypeID == GameObjectTypes.GarrisonPlot) { - if (!_garrisonPlots.ContainsKey(gameObject.MapID)) - _garrisonPlots[gameObject.MapID] = new Dictionary(); + if (!_garrisonPlots.ContainsKey(gameObject.OwnerID)) + _garrisonPlots[gameObject.OwnerID] = new Dictionary(); - _garrisonPlots[gameObject.MapID][(uint)gameObject.Data[0]] = gameObject; + _garrisonPlots[gameObject.OwnerID][(uint)gameObject.PropValue[0]] = gameObject; } } @@ -53,7 +53,7 @@ namespace Game.Garrisons _garrisonBuildingPlotInstances[MathFunctions.MakePair64(buildingPlotInst.GarrBuildingID, buildingPlotInst.GarrSiteLevelPlotInstID)] = buildingPlotInst.Id; foreach (GarrBuildingRecord building in CliDB.GarrBuildingStorage.Values) - _garrisonBuildingsByType.Add(building.Type, building.Id); + _garrisonBuildingsByType.Add(building.BuildingType, building.Id); for (var i = 0; i < 2; ++i) _garrisonFollowerAbilities[i] = new Dictionary(); @@ -63,7 +63,7 @@ namespace Game.Garrisons GarrAbilityRecord ability = CliDB.GarrAbilityStorage.LookupByKey(followerAbility.GarrAbilityID); if (ability != null) { - if (ability.FollowerTypeID != (uint)GarrisonFollowerType.Garrison) + if (ability.GarrFollowerTypeID != (uint)GarrisonFollowerType.Garrison) continue; if (!ability.Flags.HasAnyFlag(GarrisonAbilityFlags.CannotRoll) && ability.Flags.HasAnyFlag(GarrisonAbilityFlags.Trait)) @@ -92,7 +92,7 @@ namespace Game.Garrisons public GarrSiteLevelRecord GetGarrSiteLevelEntry(uint garrSiteId, uint level) { foreach (GarrSiteLevelRecord siteLevel in CliDB.GarrSiteLevelStorage.Values) - if (siteLevel.SiteID == garrSiteId && siteLevel.Level == level) + if (siteLevel.GarrSiteID == garrSiteId && siteLevel.GarrLevel == level) return siteLevel; return null; @@ -136,7 +136,7 @@ namespace Game.Garrisons if (!list.Empty()) { foreach (uint buildingId in list) - if (CliDB.GarrBuildingStorage.LookupByKey(buildingId).Level == currentLevel - 1) + if (CliDB.GarrBuildingStorage.LookupByKey(buildingId).UpgradeLevel == currentLevel - 1) return buildingId; } diff --git a/Source/Game/Garrisons/Garrisons.cs b/Source/Game/Garrisons/Garrisons.cs index 792093072..4adf66654 100644 --- a/Source/Game/Garrisons/Garrisons.cs +++ b/Source/Game/Garrisons/Garrisons.cs @@ -245,7 +245,7 @@ namespace Game.Garrisons GarrisonDeleteResult garrisonDelete = new GarrisonDeleteResult(); garrisonDelete.Result = GarrisonError.Success; - garrisonDelete.GarrSiteID = _siteLevel.SiteID; + garrisonDelete.GarrSiteID = _siteLevel.GarrSiteID; _owner.SendPacket(garrisonDelete); } @@ -267,7 +267,7 @@ namespace Game.Garrisons Plot plotInfo = _plots[garrPlotInstanceId]; plotInfo.PacketInfo.GarrPlotInstanceID = garrPlotInstanceId; - plotInfo.PacketInfo.PlotPos.Relocate(gameObject.Position.X, gameObject.Position.Y, gameObject.Position.Z, 2 * (float)Math.Acos(gameObject.RotationW)); + plotInfo.PacketInfo.PlotPos.Relocate(gameObject.Pos.X, gameObject.Pos.Y, gameObject.Pos.Z, 2 * (float)Math.Acos(gameObject.Rot[3])); plotInfo.PacketInfo.PlotType = plot.PlotType; plotInfo.EmptyGameObjectId = gameObject.Id; plotInfo.GarrSiteLevelPlotInstId = plots[i].Id; @@ -366,7 +366,7 @@ namespace Game.Garrisons if (plot.BuildingInfo.PacketInfo.HasValue) { oldBuildingId = plot.BuildingInfo.PacketInfo.Value.GarrBuildingID; - if (CliDB.GarrBuildingStorage.LookupByKey(oldBuildingId).Type != building.Type) + if (CliDB.GarrBuildingStorage.LookupByKey(oldBuildingId).BuildingType != building.BuildingType) plot.ClearBuildingInfo(_owner); } @@ -378,8 +378,8 @@ namespace Game.Garrisons map.AddToMap(go); } - _owner.ModifyCurrency((CurrencyTypes)building.CostCurrencyID, -building.CostCurrencyAmount, false, true); - _owner.ModifyMoney(-building.CostMoney * MoneyConstants.Gold, false); + _owner.ModifyCurrency((CurrencyTypes)building.CurrencyTypeID, -building.CurrencyQty, false, true); + _owner.ModifyMoney(-building.GoldCost * MoneyConstants.Gold, false); if (oldBuildingId != 0) { @@ -418,13 +418,13 @@ namespace Game.Garrisons GarrBuildingRecord constructing = CliDB.GarrBuildingStorage.LookupByKey(buildingRemoved.GarrBuildingID); // Refund construction/upgrade cost - _owner.ModifyCurrency((CurrencyTypes)constructing.CostCurrencyID, constructing.CostCurrencyAmount, false, true); - _owner.ModifyMoney(constructing.CostMoney * MoneyConstants.Gold, false); + _owner.ModifyCurrency((CurrencyTypes)constructing.CurrencyTypeID, constructing.CurrencyQty, false, true); + _owner.ModifyMoney(constructing.GoldCost * MoneyConstants.Gold, false); - if (constructing.Level > 1) + if (constructing.UpgradeLevel > 1) { // Restore previous level building - uint restored = Global.GarrisonMgr.GetPreviousLevelBuilding(constructing.Type, constructing.Level); + uint restored = Global.GarrisonMgr.GetPreviousLevelBuilding(constructing.BuildingType, constructing.UpgradeLevel); Contract.Assert(restored != 0); GarrisonPlaceBuildingResult placeBuildingResult = new GarrisonPlaceBuildingResult(); @@ -493,7 +493,7 @@ namespace Game.Garrisons follower.PacketInfo.DbID = dbId; follower.PacketInfo.GarrFollowerID = garrFollowerId; follower.PacketInfo.Quality = followerEntry.Quality; // TODO: handle magic upgrades - follower.PacketInfo.FollowerLevel = followerEntry.Level; + follower.PacketInfo.FollowerLevel = followerEntry.FollowerLevel; follower.PacketInfo.ItemLevelWeapon = followerEntry.ItemLevelWeapon; follower.PacketInfo.ItemLevelArmor = followerEntry.ItemLevelArmor; follower.PacketInfo.Xp = 0; @@ -521,7 +521,7 @@ namespace Game.Garrisons GarrisonInfo garrison = new GarrisonInfo(); garrison.GarrTypeID = GarrisonType.Garrison; - garrison.GarrSiteID = _siteLevel.SiteID; + garrison.GarrSiteID = _siteLevel.GarrSiteID; garrison.GarrSiteLevelID = _siteLevel.Id; garrison.NumFollowerActivationsRemaining = _followerActivationsRemainingToday; foreach (var plot in _plots.Values) @@ -602,7 +602,7 @@ namespace Game.Garrisons return GarrisonError.InvalidPlotBuilding; // Cannot place buldings of higher level than garrison level - if (building.Level > _siteLevel.Level) + if (building.UpgradeLevel > _siteLevel.MaxBuildingLevel) return GarrisonError.InvalidBuildingId; if (building.Flags.HasAnyFlag(GarrisonBuildingFlags.NeedsPlan)) @@ -620,16 +620,16 @@ namespace Game.Garrisons if (p.Value.BuildingInfo.PacketInfo.HasValue) { existingBuilding = CliDB.GarrBuildingStorage.LookupByKey(p.Value.BuildingInfo.PacketInfo.Value.GarrBuildingID); - if (existingBuilding.Type == building.Type) - if (p.Key != garrPlotInstanceId || existingBuilding.Level + 1 != building.Level) // check if its an upgrade in same plot + if (existingBuilding.BuildingType == building.BuildingType) + if (p.Key != garrPlotInstanceId || existingBuilding.UpgradeLevel + 1 != building.UpgradeLevel) // check if its an upgrade in same plot return GarrisonError.BuildingExists; } } - if (!_owner.HasCurrency(building.CostCurrencyID, (uint)building.CostCurrencyAmount)) + if (!_owner.HasCurrency(building.CurrencyTypeID, (uint)building.CurrencyQty)) return GarrisonError.NotEnoughCurrency; - if (!_owner.HasEnoughMoney(building.CostMoney * MoneyConstants.Gold)) + if (!_owner.HasEnoughMoney(building.GoldCost * MoneyConstants.Gold)) return GarrisonError.NotEnoughGold; // New building cannot replace another building currently under construction @@ -673,7 +673,7 @@ namespace Game.Garrisons if (PacketInfo.HasValue) { GarrBuildingRecord building = CliDB.GarrBuildingStorage.LookupByKey(PacketInfo.Value.GarrBuildingID); - if (PacketInfo.Value.TimeBuilt + building.BuildDuration <= Time.UnixTime) + if (PacketInfo.Value.TimeBuilt + building.BuildSeconds <= Time.UnixTime) return true; } @@ -696,7 +696,7 @@ namespace Game.Garrisons GarrPlotRecord plot = CliDB.GarrPlotStorage.LookupByKey(plotInstance.GarrPlotID); GarrBuildingRecord building = CliDB.GarrBuildingStorage.LookupByKey(BuildingInfo.PacketInfo.Value.GarrBuildingID); - entry = faction == GarrisonFactionIndex.Horde ? plot.HordeConstructionGameObjectID : plot.AllianceConstructionGameObjectID; + entry = faction == GarrisonFactionIndex.Horde ? plot.HordeConstructObjID : plot.AllianceConstructObjID; if (BuildingInfo.PacketInfo.Value.Active || entry == 0) entry = faction == GarrisonFactionIndex.Horde ? building.HordeGameObjectID : building.AllianceGameObjectID; } diff --git a/Source/Game/Globals/ObjectManager.cs b/Source/Game/Globals/ObjectManager.cs index 5cdc4cab6..7d49995ec 100644 --- a/Source/Game/Globals/ObjectManager.cs +++ b/Source/Game/Globals/ObjectManager.cs @@ -900,7 +900,7 @@ namespace Game if (mapEntry == null || mapEntry.CorpseMapID < 0 || mapEntry.CorpseMapID != entry.MapID - || (mapEntry.CorpsePos.X == 0 && mapEntry.CorpsePos.Y == 0)) + || (mapEntry.Corpse.X == 0 && mapEntry.Corpse.Y == 0)) { // not have any corrdinates for check distance anyway entryFar = entry; @@ -908,8 +908,8 @@ namespace Game } // at entrance map calculate distance (2D); - float dist2 = (entry.Loc.X - mapEntry.CorpsePos.X) * (entry.Loc.X - mapEntry.CorpsePos.X) - + (entry.Loc.Y - mapEntry.CorpsePos.Y) * (entry.Loc.Y - mapEntry.CorpsePos.Y); + float dist2 = (entry.Loc.X - mapEntry.Corpse.X) * (entry.Loc.X - mapEntry.Corpse.X) + + (entry.Loc.Y - mapEntry.Corpse.Y) * (entry.Loc.Y - mapEntry.Corpse.Y); if (foundEntr) { if (dist2 < distEntr) @@ -2136,7 +2136,7 @@ namespace Game equipmentInfo.Items[i].ItemId, equipmentInfo.Items[i].AppearanceModId, i + 1, i + 1, entry, id); ItemModifiedAppearanceRecord defaultAppearance = Global.DB2Mgr.GetDefaultItemModifiedAppearance(equipmentInfo.Items[i].ItemId); if (defaultAppearance != null) - equipmentInfo.Items[i].AppearanceModId = defaultAppearance.AppearanceModID; + equipmentInfo.Items[i].AppearanceModId = defaultAppearance.ItemAppearanceModifierID; else equipmentInfo.Items[i].AppearanceModId = 0; continue; @@ -3611,17 +3611,17 @@ namespace Game { GameObjectTemplate go = new GameObjectTemplate(); go.entry = db2go.Id; - go.type = db2go.Type; + go.type = db2go.TypeID; go.displayId = db2go.DisplayID; go.name = db2go.Name[Global.WorldMgr.GetDefaultDbcLocale()]; - go.size = db2go.Size; + go.size = db2go.Scale; unsafe { fixed (int* b = go.Raw.data) { - for (byte x = 0; x < db2go.Data.Length; ++x) - b[x] = db2go.Data[x]; + for (byte x = 0; x < db2go.PropValue.Length; ++x) + b[x] = db2go.PropValue[x]; } } @@ -4414,7 +4414,7 @@ namespace Game continue; var itemTemplate = new ItemTemplate(db2Data, sparse); - itemTemplate.MaxDurability = FillMaxDurability(db2Data.Class, db2Data.SubClass, sparse.inventoryType, (ItemQuality)sparse.Quality, sparse.ItemLevel); + itemTemplate.MaxDurability = FillMaxDurability(db2Data.ClassID, db2Data.SubclassID, sparse.inventoryType, (ItemQuality)sparse.OverallQualityID, sparse.ItemLevel); var itemSpecOverrides = Global.DB2Mgr.GetItemSpecOverrides(sparse.Id); if (itemSpecOverrides != null) @@ -4454,7 +4454,7 @@ namespace Game if (!hasPrimary || !hasSecondary) continue; - ChrSpecializationRecord specialization = CliDB.ChrSpecializationStorage.LookupByKey(itemSpec.SpecID); + ChrSpecializationRecord specialization = CliDB.ChrSpecializationStorage.LookupByKey(itemSpec.SpecializationID); if (specialization != null) { if (Convert.ToBoolean((1 << (specialization.ClassID - 1)) & sparse.AllowableClass)) @@ -4482,7 +4482,7 @@ namespace Game foreach (var effectEntry in CliDB.ItemEffectStorage.Values) { - var itemTemplate = ItemTemplateStorage.LookupByKey(effectEntry.ItemID); + var itemTemplate = ItemTemplateStorage.LookupByKey(effectEntry.ParentItemID); if (itemTemplate == null) continue; @@ -5223,8 +5223,8 @@ namespace Game pInfo.PositionZ = positionZ; pInfo.Orientation = orientation; - pInfo.DisplayId_m = rEntry.MaleDisplayID; - pInfo.DisplayId_f = rEntry.FemaleDisplayID; + pInfo.DisplayId_m = rEntry.MaleDisplayId; + pInfo.DisplayId_f = rEntry.FemaleDisplayId; _playerInfo[currentrace][currentclass] = pInfo; @@ -9153,7 +9153,7 @@ namespace Game foreach (var node in CliDB.TaxiNodesStorage.Values) { var i = node.Id; - if (node.MapID != mapid || !node.Flags.HasAnyFlag(requireFlag)) + if (node.ContinentID != mapid || !node.Flags.HasAnyFlag(requireFlag)) continue; byte field = (byte)((i - 1) / 8); @@ -9280,7 +9280,7 @@ namespace Game if ((!useParentDbValue && pair.Value.target_mapId == entrance_map) || (useParentDbValue && pair.Value.target_mapId == parentId)) { AreaTriggerRecord atEntry = CliDB.AreaTriggerStorage.LookupByKey(pair.Key); - if (atEntry != null && atEntry.MapID == Map) + if (atEntry != null && atEntry.ContinentID == Map) return pair.Value; } } @@ -10076,10 +10076,10 @@ namespace Game { public ItemSpecStats(ItemRecord item, ItemSparseRecord sparse) { - if (item.Class == ItemClass.Weapon) + if (item.ClassID == ItemClass.Weapon) { ItemType = 5; - switch ((ItemSubClassWeapon)item.SubClass) + switch ((ItemSubClassWeapon)item.SubclassID) { case ItemSubClassWeapon.Axe: AddStat(ItemSpecStat.OneHandedAxe); @@ -10133,9 +10133,9 @@ namespace Game break; } } - else if (item.Class == ItemClass.Armor) + else if (item.ClassID == ItemClass.Armor) { - switch ((ItemSubClassArmor)item.SubClass) + switch ((ItemSubClassArmor)item.SubclassID) { case ItemSubClassArmor.Cloth: if (sparse.inventoryType != InventoryType.Cloak) @@ -10157,12 +10157,12 @@ namespace Game ItemType = 4; break; default: - if (item.SubClass == (int)ItemSubClassArmor.Shield) + if (item.SubclassID == (int)ItemSubClassArmor.Shield) { ItemType = 6; AddStat(ItemSpecStat.Shield); } - else if (item.SubClass > (int)ItemSubClassArmor.Shield && item.SubClass <= (int)ItemSubClassArmor.Relic) + else if (item.SubclassID > (int)ItemSubClassArmor.Shield && item.SubclassID <= (int)ItemSubClassArmor.Relic) { ItemType = 6; AddStat(ItemSpecStat.Relic); @@ -10172,7 +10172,7 @@ namespace Game break; } } - else if (item.Class == ItemClass.Gem) + else if (item.ClassID == ItemClass.Gem) { ItemType = 7; GemPropertiesRecord gem = CliDB.GemPropertiesStorage.LookupByKey(sparse.GemProperties); @@ -10206,8 +10206,8 @@ namespace Game ItemType = 0; for (uint i = 0; i < ItemConst.MaxStats; ++i) - if (sparse.ItemStatType[i] != -1) - AddModStat(sparse.ItemStatType[i]); + if (sparse.StatModifierBonusStat[i] != -1) + AddModStat(sparse.StatModifierBonusStat[i]); } void AddStat(ItemSpecStat statType) diff --git a/Source/Game/Groups/Group.cs b/Source/Game/Groups/Group.cs index 74228f46b..08903fc56 100644 --- a/Source/Game/Groups/Group.cs +++ b/Source/Game/Groups/Group.cs @@ -814,7 +814,7 @@ namespace Game.Groups ItemDisenchantLootRecord disenchant = r.GetItemDisenchantLoot(p); if (disenchant != null) - if (m_maxEnchantingLevel >= disenchant.RequiredDisenchantSkill) + if (m_maxEnchantingLevel >= disenchant.SkillRequired) startLootRoll.ValidRolls |= RollMask.Disenchant; p.SendPacket(startLootRoll); @@ -1406,7 +1406,7 @@ namespace Game.Groups { LFGDungeonsRecord dungeon = CliDB.LFGDungeonsStorage.LookupByKey(selectedDungeons.First()); if (dungeon != null) - if (dungeon.Type == LfgType.RandomDungeon) + if (dungeon.TypeID == LfgType.RandomDungeon) randomSlot= dungeon.Id; } diff --git a/Source/Game/Guilds/GuildFinderManager.cs b/Source/Game/Guilds/GuildFinderManager.cs index 48822731c..be923ef67 100644 --- a/Source/Game/Guilds/GuildFinderManager.cs +++ b/Source/Game/Guilds/GuildFinderManager.cs @@ -63,7 +63,7 @@ namespace Game.Guilds uint guildTeam = TeamId.Alliance; ChrRacesRecord raceEntry = CliDB.ChrRacesStorage.LookupByKey(result.Read(7)); if (raceEntry != null) - if (raceEntry.TeamID == 1) + if (raceEntry.Alliance == 1) guildTeam = TeamId.Horde; LFGuildSettings settings = new LFGuildSettings(listed, guildTeam, guildId, classRoles, availability, interests, level, comment); diff --git a/Source/Game/Handlers/ArtifactHandler.cs b/Source/Game/Handlers/ArtifactHandler.cs index cef8330b5..a0c6ec9ad 100644 --- a/Source/Game/Handlers/ArtifactHandler.cs +++ b/Source/Game/Handlers/ArtifactHandler.cs @@ -57,7 +57,7 @@ namespace Game return; if (artifactAddPower.PowerChoices[0].Rank != artifactPower.PurchasedRank + 1 || - artifactAddPower.PowerChoices[0].Rank > artifactPowerEntry.MaxRank) + artifactAddPower.PowerChoices[0].Rank > artifactPowerEntry.MaxPurchasableRank) return; var artifactPowerLinks = Global.DB2Mgr.GetArtifactPowerLinks(artifactPower.ArtifactPowerId); @@ -74,7 +74,7 @@ namespace Game if (artifactPowerLinkLearned == null) continue; - if (artifactPowerLinkLearned.PurchasedRank >= artifactPowerLink.MaxRank) + if (artifactPowerLinkLearned.PurchasedRank >= artifactPowerLink.MaxPurchasableRank) { hasAnyLink = true; break; @@ -139,18 +139,18 @@ namespace Game if (artifactAppearanceSet == null || artifactAppearanceSet.ArtifactID != artifact.GetTemplate().GetArtifactID()) return; - PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(artifactAppearance.PlayerConditionID); + PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(artifactAppearance.UnlockPlayerConditionID); if (playerCondition != null) if (!ConditionManager.IsPlayerMeetingCondition(_player, playerCondition)) return; - artifact.SetAppearanceModId(artifactAppearance.AppearanceModID); + artifact.SetAppearanceModId(artifactAppearance.ItemAppearanceModifierID); artifact.SetModifier(ItemModifier.ArtifactAppearanceId, artifactAppearance.Id); artifact.SetState(ItemUpdateState.Changed, _player); Item childItem = _player.GetChildItemByGuid(artifact.GetChildItem()); if (childItem) { - childItem.SetAppearanceModId(artifactAppearance.AppearanceModID); + childItem.SetAppearanceModId(artifactAppearance.ItemAppearanceModifierID); childItem.SetState(ItemUpdateState.Changed, _player); } @@ -162,7 +162,7 @@ namespace Game _player.SetVisibleItemSlot(childItem.GetSlot(), childItem); // change druid form appearance - if (artifactAppearance.ShapeshiftDisplayID != 0 && artifactAppearance.ModifiesShapeshiftFormDisplay != 0 && _player.GetShapeshiftForm() == (ShapeShiftForm)artifactAppearance.ModifiesShapeshiftFormDisplay) + if (artifactAppearance.OverrideShapeshiftDisplayID != 0 && artifactAppearance.OverrideShapeshiftFormID != 0 && _player.GetShapeshiftForm() == (ShapeShiftForm)artifactAppearance.OverrideShapeshiftFormID) _player.RestoreDisplayId(); } } diff --git a/Source/Game/Handlers/CharacterHandler.cs b/Source/Game/Handlers/CharacterHandler.cs index a6cb36b2c..1027ab86b 100644 --- a/Source/Game/Handlers/CharacterHandler.cs +++ b/Source/Game/Handlers/CharacterHandler.cs @@ -558,7 +558,7 @@ namespace Game GenerateRandomCharacterNameResult result = new GenerateRandomCharacterNameResult(); result.Success = true; - result.Name = Global.DB2Mgr.GetNameGenEntry(packet.Race, packet.Sex, GetSessionDbcLocale(), Global.WorldMgr.GetDefaultDbcLocale()); + result.Name = Global.DB2Mgr.GetNameGenEntry(packet.Race, packet.Sex); SendPacket(result); } @@ -1373,7 +1373,7 @@ namespace Game if (illusion.ItemVisual == 0 || !illusion.Flags.HasAnyFlag(EnchantmentSlotMask.Collectable)) return false; - PlayerConditionRecord condition = CliDB.PlayerConditionStorage.LookupByKey(illusion.PlayerConditionID); + PlayerConditionRecord condition = CliDB.PlayerConditionStorage.LookupByKey(illusion.TransmogPlayerConditionID); if (condition != null) if (!ConditionManager.IsPlayerMeetingCondition(_player, condition)) return false; diff --git a/Source/Game/Handlers/CombatHandler.cs b/Source/Game/Handlers/CombatHandler.cs index 4853bded2..c2669c22e 100644 --- a/Source/Game/Handlers/CombatHandler.cs +++ b/Source/Game/Handlers/CombatHandler.cs @@ -53,7 +53,7 @@ namespace Game { VehicleSeatRecord seat = vehicle.GetSeatForPassenger(GetPlayer()); Contract.Assert(seat != null); - if (!seat.Flags[0].HasAnyFlag((uint)VehicleSeatFlags.CanAttack)) + if (!seat.Flags.HasAnyFlag(VehicleSeatFlags.CanAttack)) { SendAttackStop(enemy); return; diff --git a/Source/Game/Handlers/ItemHandler.cs b/Source/Game/Handlers/ItemHandler.cs index 71c572624..b629f7dd4 100644 --- a/Source/Game/Handlers/ItemHandler.cs +++ b/Source/Game/Handlers/ItemHandler.cs @@ -938,8 +938,8 @@ namespace Game itemTarget.SetGem(i, gemData[i], gemScalingLevel); - if (gemProperties[i] != null && gemProperties[i].EnchantID != 0) - itemTarget.SetEnchantment(EnchantmentSlot.Sock1 + i, gemProperties[i].EnchantID, 0, 0, GetPlayer().GetGUID()); + if (gemProperties[i] != null && gemProperties[i].EnchantId != 0) + itemTarget.SetEnchantment(EnchantmentSlot.Sock1 + i, gemProperties[i].EnchantId, 0, 0, GetPlayer().GetGUID()); uint gemCount = 1; GetPlayer().DestroyItemCount(gems[i], ref gemCount, true); @@ -1097,16 +1097,16 @@ namespace Game } // Check if player has enough currency - if (!_player.HasCurrency(itemUpgradeEntry.CurrencyID, itemUpgradeEntry.CurrencyCost)) + if (!_player.HasCurrency(itemUpgradeEntry.CurrencyType, itemUpgradeEntry.CurrencyAmount)) { - Log.outDebug(LogFilter.Network, "WORLD: HandleUpgradeItems - Player has not enougth currency (ID: {0}, Cost: {1}) not found.", itemUpgradeEntry.CurrencyID, itemUpgradeEntry.CurrencyCost); + Log.outDebug(LogFilter.Network, "WORLD: HandleUpgradeItems - Player has not enougth currency (ID: {0}, Cost: {1}) not found.", itemUpgradeEntry.CurrencyType, itemUpgradeEntry.CurrencyAmount); itemUpgradeResult.Success = false; SendPacket(itemUpgradeResult); return; } uint currentUpgradeId = item.GetModifier(ItemModifier.UpgradeId); - if (currentUpgradeId != itemUpgradeEntry.PrevItemUpgradeID) + if (currentUpgradeId != itemUpgradeEntry.PrerequisiteID) { Log.outDebug(LogFilter.Network, "WORLD: HandleUpgradeItems - ItemUpgradeEntry ({0}) is not related to this ItemUpgradePath ({1}).", itemUpgradeEntry.Id, currentUpgradeId); itemUpgradeResult.Success = false; @@ -1126,7 +1126,7 @@ namespace Game _player._ApplyItemBonuses(item, item.GetSlot(), true); item.SetState(ItemUpdateState.Changed, _player); - _player.ModifyCurrency((CurrencyTypes)itemUpgradeEntry.CurrencyID, -(int)itemUpgradeEntry.CurrencyCost); + _player.ModifyCurrency((CurrencyTypes)itemUpgradeEntry.CurrencyType, -(int)itemUpgradeEntry.CurrencyAmount); } [WorldPacketHandler(ClientOpcodes.SortBags)] diff --git a/Source/Game/Handlers/MovementHandler.cs b/Source/Game/Handlers/MovementHandler.cs index 23a5b0952..390e96679 100644 --- a/Source/Game/Handlers/MovementHandler.cs +++ b/Source/Game/Handlers/MovementHandler.cs @@ -152,7 +152,7 @@ namespace Game VehicleSeatRecord seat = vehicle.GetSeatForPassenger(mover); if (seat != null) { - if (seat.Flags[0].HasAnyFlag((uint)VehicleSeatFlags.AllowTurning)) + if (seat.Flags.HasAnyFlag(VehicleSeatFlags.AllowTurning)) { if (movementInfo.Pos.GetOrientation() != mover.GetOrientation()) { @@ -620,7 +620,7 @@ namespace Game TaxiNodesRecord curDestNode = CliDB.TaxiNodesStorage.LookupByKey(curDest); // far teleport case - if (curDestNode != null && curDestNode.MapID != GetPlayer().GetMapId()) + if (curDestNode != null && curDestNode.ContinentID != GetPlayer().GetMapId()) { if (GetPlayer().GetMotionMaster().GetCurrentMovementGeneratorType() == MovementGeneratorType.Flight) { @@ -631,7 +631,7 @@ namespace Game TaxiPathNodeRecord node = flight.GetPath()[(int)flight.GetCurrentNode()]; flight.SkipCurrentNode(); - GetPlayer().TeleportTo(curDestNode.MapID, node.Loc.X, node.Loc.Y, node.Loc.Z, GetPlayer().GetOrientation()); + GetPlayer().TeleportTo(curDestNode.ContinentID, node.Loc.X, node.Loc.Y, node.Loc.Z, GetPlayer().GetOrientation()); } } diff --git a/Source/Game/Handlers/QueryHandler.cs b/Source/Game/Handlers/QueryHandler.cs index 0009daf18..d06ef6467 100644 --- a/Source/Game/Handlers/QueryHandler.cs +++ b/Source/Game/Handlers/QueryHandler.cs @@ -281,8 +281,8 @@ namespace Game if (entranceMap != null) { mapID = (uint)corpseMapEntry.CorpseMapID; - x = corpseMapEntry.CorpsePos.X; - y = corpseMapEntry.CorpsePos.Y; + x = corpseMapEntry.Corpse.X; + y = corpseMapEntry.Corpse.Y; z = entranceMap.GetHeight(player.GetPhases(), x, y, MapConst.MaxHeight); } } diff --git a/Source/Game/Handlers/TaxiHandler.cs b/Source/Game/Handlers/TaxiHandler.cs index 1f5e279ea..9b80502ce 100644 --- a/Source/Game/Handlers/TaxiHandler.cs +++ b/Source/Game/Handlers/TaxiHandler.cs @@ -189,7 +189,7 @@ namespace Game MountRecord mount = CliDB.MountStorage.LookupByKey(activateTaxi.FlyingMountID); if (mount != null) { - if (GetPlayer().HasSpell(mount.SpellId)) + if (GetPlayer().HasSpell(mount.SourceSpellID)) { var mountDisplays = Global.DB2Mgr.GetMountDisplays(mount.Id); if (mountDisplays != null) @@ -204,7 +204,7 @@ namespace Game }).ToList(); if (!usableDisplays.Empty()) - preferredMountDisplay = usableDisplays.SelectRandom().DisplayID; + preferredMountDisplay = usableDisplays.SelectRandom().CreatureDisplayInfoID; } } } diff --git a/Source/Game/Handlers/TransmogrificationHandler.cs b/Source/Game/Handlers/TransmogrificationHandler.cs index be047d591..f51f95ea2 100644 --- a/Source/Game/Handlers/TransmogrificationHandler.cs +++ b/Source/Game/Handlers/TransmogrificationHandler.cs @@ -124,7 +124,7 @@ namespace Game return; } - PlayerConditionRecord condition = CliDB.PlayerConditionStorage.LookupByKey(illusion.PlayerConditionID); + PlayerConditionRecord condition = CliDB.PlayerConditionStorage.LookupByKey(illusion.TransmogPlayerConditionID); if (condition != null) { if (!ConditionManager.IsPlayerMeetingCondition(player, condition)) diff --git a/Source/Game/Handlers/VehicleHandler.cs b/Source/Game/Handlers/VehicleHandler.cs index e89c01047..ab961ed83 100644 --- a/Source/Game/Handlers/VehicleHandler.cs +++ b/Source/Game/Handlers/VehicleHandler.cs @@ -50,7 +50,7 @@ namespace Game if (!seat.CanSwitchFromSeat()) { Log.outError(LogFilter.Network, "HandleRequestVehiclePrevSeat: {0} tried to switch seats but current seatflags {1} don't permit that.", - GetPlayer().GetGUID().ToString(), seat.Flags[0]); + GetPlayer().GetGUID().ToString(), seat.Flags); return; } @@ -68,7 +68,7 @@ namespace Game if (!seat.CanSwitchFromSeat()) { Log.outError(LogFilter.Network, "HandleRequestVehicleNextSeat: {0} tried to switch seats but current seatflags {1} don't permit that.", - GetPlayer().GetGUID().ToString(), seat.Flags[0]); + GetPlayer().GetGUID().ToString(), seat.Flags); return; } @@ -86,7 +86,7 @@ namespace Game if (!seat.CanSwitchFromSeat()) { Log.outError(LogFilter.Network, "HandleMoveChangeVehicleSeats, {0} tried to switch seats but current seatflags {1} don't permit that.", - GetPlayer().GetGUID().ToString(), seat.Flags[0]); + GetPlayer().GetGUID().ToString(), seat.Flags); return; } @@ -120,7 +120,7 @@ namespace Game if (!seat.CanSwitchFromSeat()) { Log.outError(LogFilter.Network, "HandleRequestVehicleSwitchSeat: {0} tried to switch seats but current seatflags {1} don't permit that.", - GetPlayer().GetGUID().ToString(), seat.Flags[0]); + GetPlayer().GetGUID().ToString(), seat.Flags); return; } Unit vehUnit; @@ -202,7 +202,7 @@ namespace Game GetPlayer().ExitVehicle(); else Log.outError(LogFilter.Network, "{0} tried to exit vehicle, but seatflags {1} (ID: {2}) don't permit that.", - GetPlayer().GetGUID().ToString(), seat.Id, seat.Flags[0]); + GetPlayer().GetGUID().ToString(), seat.Id, seat.Flags); } } } diff --git a/Source/Game/Loot/Loot.cs b/Source/Game/Loot/Loot.cs index eb2237e0f..bcbf76e16 100644 --- a/Source/Game/Loot/Loot.cs +++ b/Source/Game/Loot/Loot.cs @@ -175,11 +175,11 @@ namespace Game.Loots for (uint i = 0; i < stacks && lootItems.Count < limit; ++i) { LootItem generatedLoot = new LootItem(item); - generatedLoot.context = _difficultyBonusTreeMod; + generatedLoot.context = _itemContext; generatedLoot.count = (byte)Math.Min(count, proto.GetMaxStackSize()); - if (_difficultyBonusTreeMod != 0) + if (_itemContext != 0) { - List bonusListIDs = Global.DB2Mgr.GetItemBonusTree(generatedLoot.itemid, _difficultyBonusTreeMod); + List bonusListIDs = Global.DB2Mgr.GetItemBonusTree(generatedLoot.itemid, _itemContext); generatedLoot.BonusListIDs.AddRange(bonusListIDs); } lootItems.Add(generatedLoot); @@ -220,7 +220,7 @@ namespace Game.Loots return false; } - _difficultyBonusTreeMod = lootOwner.GetMap().GetDifficultyLootBonusTreeMod(); + _itemContext = lootOwner.GetMap().GetDifficultyLootItemContext(); tab.Process(this, store.IsRatesAllowed(), (byte)lootMode); // Processing is done there, callback via Loot.AddItem() @@ -830,7 +830,7 @@ namespace Game.Loots unlootedCount = 0; roundRobinPlayer = ObjectGuid.Empty; i_LootValidatorRefManager.clearReferences(); - _difficultyBonusTreeMod = 0; + _itemContext = 0; } public bool empty() { return items.Empty() && gold == 0; } @@ -866,7 +866,7 @@ namespace Game.Loots // Loot GUID ObjectGuid _GUID; - byte _difficultyBonusTreeMod; + byte _itemContext; } public class AELootResult diff --git a/Source/Game/Maps/GridMap.cs b/Source/Game/Maps/GridMap.cs index 455a6d538..c45ef4b77 100644 --- a/Source/Game/Maps/GridMap.cs +++ b/Source/Game/Maps/GridMap.cs @@ -521,24 +521,24 @@ namespace Game.Maps { entry = liquidEntry.Id; type &= MapConst.MapLiquidTypeDarkWater; - uint liqTypeIdx = liquidEntry.LiquidType; + uint liqTypeIdx = liquidEntry.SoundBank; if (entry < 21) { var area = CliDB.AreaTableStorage.LookupByKey(getArea(x, y)); if (area != null) { - uint overrideLiquid = area.LiquidTypeID[liquidEntry.LiquidType]; + uint overrideLiquid = area.LiquidTypeID[liquidEntry.SoundBank]; if (overrideLiquid == 0 && area.ParentAreaID == 0) { area = CliDB.AreaTableStorage.LookupByKey(area.ParentAreaID); if (area != null) - overrideLiquid = area.LiquidTypeID[liquidEntry.LiquidType]; + overrideLiquid = area.LiquidTypeID[liquidEntry.SoundBank]; } var liq = CliDB.LiquidTypeStorage.LookupByKey(overrideLiquid); if (liq != null) { entry = overrideLiquid; - liqTypeIdx = liq.LiquidType; + liqTypeIdx = liq.SoundBank; } } } diff --git a/Source/Game/Maps/Map.cs b/Source/Game/Maps/Map.cs index d5731cafa..33e70031f 100644 --- a/Source/Game/Maps/Map.cs +++ b/Source/Game/Maps/Map.cs @@ -1883,7 +1883,7 @@ namespace Game.Maps uint liquidFlagType = 0; LiquidTypeRecord liq = CliDB.LiquidTypeStorage.LookupByKey(liquid_type); if (liq != null) - liquidFlagType = liq.LiquidType; + liquidFlagType = liq.SoundBank; if (liquid_type != 0 && liquid_type < 21) { @@ -1902,7 +1902,7 @@ namespace Game.Maps if (liq != null) { liquid_type = overrideLiquid; - liquidFlagType = liq.LiquidType; + liquidFlagType = liq.SoundBank; } } } @@ -2869,15 +2869,15 @@ namespace Game.Maps return Global.DB2Mgr.GetMapDifficultyData(GetId(), GetDifficultyID()); } - public byte GetDifficultyLootBonusTreeMod() + public byte GetDifficultyLootItemContext() { MapDifficultyRecord mapDifficulty = GetMapDifficulty(); - if (mapDifficulty != null && mapDifficulty.ItemBonusTreeModID != 0) - return mapDifficulty.ItemBonusTreeModID; + if (mapDifficulty != null && mapDifficulty.ItemContext != 0) + return mapDifficulty.ItemContext; DifficultyRecord difficulty = CliDB.DifficultyStorage.LookupByKey(GetDifficultyID()); if (difficulty != null) - return difficulty.ItemBonusTreeModID; + return difficulty.ItemContext; return 0; } @@ -3154,7 +3154,7 @@ namespace Game.Maps var mask = UnitTypeMask.Summon; if (properties != null) { - switch (properties.Category) + switch (properties.Control) { case SummonCategory.Pet: mask = UnitTypeMask.Guardian; @@ -3169,7 +3169,7 @@ namespace Game.Maps case SummonCategory.Ally: case SummonCategory.Unk: { - switch (properties.Type) + switch (properties.Title) { case SummonType.Minion: case SummonType.Guardian: diff --git a/Source/Game/Maps/TransportManager.cs b/Source/Game/Maps/TransportManager.cs index ae317041a..1ec385eff 100644 --- a/Source/Game/Maps/TransportManager.cs +++ b/Source/Game/Maps/TransportManager.cs @@ -94,7 +94,7 @@ namespace Game.Maps AddPathNodeToTransport(anim.TransportID, anim.TimeIndex, anim); foreach (TransportRotationRecord rot in CliDB.TransportRotationStorage.Values) - AddPathRotationToTransport(rot.TransportID, rot.TimeIndex, rot); + AddPathRotationToTransport(rot.GameObjectsID, rot.TimeIndex, rot); } void GeneratePath(GameObjectTemplate goInfo, TransportTemplate transport) @@ -124,7 +124,7 @@ namespace Game.Maps if (!mapChange) { var node_i = path[i]; - if (i != path.Length - 1 && (node_i.Flags.HasAnyFlag(TaxiPathNodeFlags.Teleport) || node_i.MapID != path[i + 1].MapID)) + if (i != path.Length - 1 && (node_i.Flags.HasAnyFlag(TaxiPathNodeFlags.Teleport) || node_i.ContinentID != path[i + 1].ContinentID)) { keyFrames.Last().Teleport = true; mapChange = true; @@ -138,8 +138,8 @@ namespace Game.Maps keyFrames.Add(k); splinePath.Add(new Vector3(node_i.Loc.X, node_i.Loc.Y, node_i.Loc.Z)); - if (!transport.mapsUsed.Contains(k.Node.MapID)) - transport.mapsUsed.Add(k.Node.MapID); + if (!transport.mapsUsed.Contains(k.Node.ContinentID)) + transport.mapsUsed.Add(k.Node.ContinentID); } } else @@ -377,7 +377,7 @@ namespace Game.Maps // ...at first waypoint TaxiPathNodeRecord startNode = tInfo.keyFrames.First().Node; - uint mapId = startNode.MapID; + uint mapId = startNode.ContinentID; float x = startNode.Loc.X; float y = startNode.Loc.Y; float z = startNode.Loc.Z; @@ -578,22 +578,9 @@ namespace Game.Maps return Path.First().Value; } - Quaternion GetAnimRotation(uint time) + TransportRotationRecord GetAnimRotation(uint time) { - if (Rotations.Empty()) - return new Quaternion(0.0f, 0.0f, 0.0f, 1.0f); - - TransportRotationRecord rot = Rotations.First().Value; - foreach (var pair in Rotations) - { - if (time >= pair.Key) - { - rot = pair.Value; - break; - } - } - - return new Quaternion(rot.X, rot.Y, rot.Z, rot.W); + return Rotations.LookupByKey(time); } public Dictionary Path = new Dictionary(); diff --git a/Source/Game/Movement/Generators/WaypointMovement.cs b/Source/Game/Movement/Generators/WaypointMovement.cs index bb2badeab..3a0922b32 100644 --- a/Source/Game/Movement/Generators/WaypointMovement.cs +++ b/Source/Game/Movement/Generators/WaypointMovement.cs @@ -503,10 +503,10 @@ namespace Game.Movement if (i_path.Empty() || i_currentNode >= i_path.Count) return; - uint map0 = i_path[i_currentNode].MapID; + uint map0 = i_path[i_currentNode].ContinentID; for (int i = i_currentNode + 1; i < i_path.Count; ++i) { - if (i_path[i].MapID != map0) + if (i_path[i].ContinentID != map0) { i_currentNode = i; return; @@ -537,7 +537,7 @@ namespace Game.Movement void InitEndGridInfo() { int nodeCount = i_path.Count; //! Number of nodes in path. - _endMapId = i_path[nodeCount - 1].MapID; //! MapId of last node + _endMapId = i_path[nodeCount - 1].ContinentID; //! MapId of last node _preloadTargetNode = (uint)nodeCount - 3; _endGridX = i_path[nodeCount - 1].Loc.X; _endGridY = i_path[nodeCount - 1].Loc.Y; @@ -563,10 +563,10 @@ namespace Game.Movement if (i_currentNode >= i_path.Count) return (uint)i_path.Count; - uint curMapId = i_path[i_currentNode].MapID; + uint curMapId = i_path[i_currentNode].ContinentID; for (int i = i_currentNode; i < i_path.Count; ++i) { - if (i_path[i].MapID != curMapId) + if (i_path[i].ContinentID != curMapId) return (uint)i; } @@ -575,7 +575,7 @@ namespace Game.Movement bool IsNodeIncludedInShortenedPath(TaxiPathNodeRecord p1, TaxiPathNodeRecord p2) { - return p1.MapID != p2.MapID || Math.Pow(p1.Loc.X - p2.Loc.X, 2) + Math.Pow(p1.Loc.Y - p2.Loc.Y, 2) > (40.0f * 40.0f); + return p1.ContinentID != p2.ContinentID || Math.Pow(p1.Loc.X - p2.Loc.X, 2) + Math.Pow(p1.Loc.Y - p2.Loc.Y, 2) > (40.0f * 40.0f); } public override MovementGeneratorType GetMovementGeneratorType() { return MovementGeneratorType.Flight; } diff --git a/Source/Game/OutdoorPVP/OutdoorPvP.cs b/Source/Game/OutdoorPVP/OutdoorPvP.cs index 686b15a32..dff5674fa 100644 --- a/Source/Game/OutdoorPVP/OutdoorPvP.cs +++ b/Source/Game/OutdoorPVP/OutdoorPvP.cs @@ -298,7 +298,7 @@ namespace Game.PvP { AreaTableRecord areaTable = CliDB.AreaTableStorage.LookupByKey(zone); Contract.Assert(areaTable != null); - Map map = Global.MapMgr.CreateBaseMap(areaTable.MapId); + Map map = Global.MapMgr.CreateBaseMap(areaTable.ContinentID); Contract.Assert(!map.Instanceable()); m_map = map; } diff --git a/Source/Game/Quest/Quest.cs b/Source/Game/Quest/Quest.cs index 1f0384f32..9161af8c8 100644 --- a/Source/Game/Quest/Quest.cs +++ b/Source/Game/Quest/Quest.cs @@ -266,7 +266,7 @@ namespace Game else if (diffFactor > 10) diffFactor = 10; - uint xp = (uint)(diffFactor * questXp.Exp[RewardXPDifficulty] * RewardXPMultiplier / 10 * multiplier); + uint xp = (uint)(diffFactor * questXp.Difficulty[RewardXPDifficulty] * RewardXPMultiplier / 10 * multiplier); if (xp <= 100) xp = 5 * ((xp + 2) / 5); else if (xp <= 500) @@ -288,7 +288,7 @@ namespace Game QuestMoneyRewardRecord money = CliDB.QuestMoneyRewardStorage.LookupByKey(level); if (money != null) - return (uint)(money.Money[RewardMoneyDifficulty] * RewardMoneyMultiplier); + return (uint)(money.Difficulty[RewardMoneyDifficulty] * RewardMoneyMultiplier); else return 0; } diff --git a/Source/Game/Reputation/ReputationManager.cs b/Source/Game/Reputation/ReputationManager.cs index 0ee623025..9bf7e8158 100644 --- a/Source/Game/Reputation/ReputationManager.cs +++ b/Source/Game/Reputation/ReputationManager.cs @@ -91,7 +91,7 @@ namespace Game if (factionEntry == null) return 0; - ulong raceMask = _player.getRaceMask(); + long raceMask = _player.getRaceMask(); uint classMask = _player.getClassMask(); for (var i = 0; i < 4; i++) { @@ -149,7 +149,7 @@ namespace Game if (factionEntry == null) return 0; - ulong raceMask = _player.getRaceMask(); + long raceMask = _player.getRaceMask(); uint classMask = _player.getClassMask(); for (int i = 0; i < 4; i++) { @@ -297,9 +297,9 @@ namespace Game // check for sub-factions that receive spillover var flist = Global.DB2Mgr.GetFactionTeamList(factionEntry.Id); // if has no sub-factions, check for factions with same parent - if (flist == null && factionEntry.ParentFactionID != 0 && factionEntry.ParentFactionModOut != 0.0f) + if (flist == null && factionEntry.ParentFactionID != 0 && factionEntry.ParentFactionMod[1] != 0.0f) { - spillOverRepOut *= factionEntry.ParentFactionModOut; + spillOverRepOut *= factionEntry.ParentFactionMod[1]; FactionRecord parent = CliDB.FactionStorage.LookupByKey(factionEntry.ParentFactionID); if (parent != null) { @@ -323,9 +323,9 @@ namespace Game FactionRecord factionEntryCalc = CliDB.FactionStorage.LookupByKey(id); if (factionEntryCalc != null) { - if (factionEntryCalc == factionEntry || GetRank(factionEntryCalc) > (ReputationRank)factionEntryCalc.ParentFactionCapIn) + if (factionEntryCalc == factionEntry || GetRank(factionEntryCalc) > (ReputationRank)factionEntryCalc.ParentFactionMod[0]) continue; - int spilloverRep = (int)(spillOverRepOut * factionEntryCalc.ParentFactionModIn); + int spilloverRep = (int)(spillOverRepOut * factionEntryCalc.ParentFactionMod[0]); if (spilloverRep != 0 || !incremental) res = SetOneFactionReputation(factionEntryCalc, spilloverRep, incremental); } diff --git a/Source/Game/Scenarios/Scenario.cs b/Source/Game/Scenarios/Scenario.cs index 8991fd188..59612b024 100644 --- a/Source/Game/Scenarios/Scenario.cs +++ b/Source/Game/Scenarios/Scenario.cs @@ -64,7 +64,7 @@ namespace Game.Scenarios public virtual void CompleteStep(ScenarioStepRecord step) { - Quest quest = Global.ObjectMgr.GetQuestTemplate(step.QuestRewardID); + Quest quest = Global.ObjectMgr.GetQuestTemplate(step.RewardQuestID); if (quest != null) { foreach (ObjectGuid guid in _players) @@ -87,7 +87,7 @@ namespace Game.Scenarios if (GetStepState(_step) == ScenarioStepState.Done) continue; - if (newStep == null || _step.Step < newStep.Step) + if (newStep == null || _step.OrderIndex < newStep.OrderIndex) newStep = _step; } @@ -265,7 +265,7 @@ namespace Game.Scenarios if (scenarioStep.IsBonusObjective()) continue; - if (firstStep == null || scenarioStep.Step < firstStep.Step) + if (firstStep == null || scenarioStep.OrderIndex < firstStep.OrderIndex) firstStep = scenarioStep; } @@ -287,7 +287,7 @@ namespace Game.Scenarios if (!step.IsBonusObjective()) continue; - if (Global.CriteriaMgr.GetCriteriaTree(step.CriteriaTreeID) != null) + if (Global.CriteriaMgr.GetCriteriaTree(step.CriteriaTreeId) != null) { BonusObjectiveData bonusObjectiveData; bonusObjectiveData.BonusObjectiveID = (int)step.Id; diff --git a/Source/Game/Scenarios/ScenarioManager.cs b/Source/Game/Scenarios/ScenarioManager.cs index a8776c071..92493b805 100644 --- a/Source/Game/Scenarios/ScenarioManager.cs +++ b/Source/Game/Scenarios/ScenarioManager.cs @@ -119,8 +119,8 @@ namespace Game.Scenarios if (!scenarioSteps.ContainsKey(step.ScenarioID)) scenarioSteps[step.ScenarioID] = new Dictionary(); - scenarioSteps[step.ScenarioID][step.Step] = step; - CriteriaTree tree = Global.CriteriaMgr.GetCriteriaTree(step.CriteriaTreeID); + scenarioSteps[step.ScenarioID][step.OrderIndex] = step; + CriteriaTree tree = Global.CriteriaMgr.GetCriteriaTree(step.CriteriaTreeId); if (tree != null) { uint criteriaTreeSize = 0; diff --git a/Source/Game/Spells/Auras/Aura.cs b/Source/Game/Spells/Auras/Aura.cs index 3d0f89da8..ad1828cb0 100644 --- a/Source/Game/Spells/Auras/Aura.cs +++ b/Source/Game/Spells/Auras/Aura.cs @@ -305,7 +305,7 @@ namespace Game.Spells var powers = Global.DB2Mgr.GetSpellPowers(GetId(), caster ? caster.GetMap().GetDifficultyID() : Difficulty.None); foreach (var power in powers) - if (power.ManaCostPerSecond != 0 || power.ManaCostPercentagePerSecond > 0.0f) + if (power.ManaPerSecond != 0 || power.PowerPctPerSecond > 0.0f) m_periodicCosts.Add(power); if (!m_periodicCosts.Empty()) @@ -653,14 +653,14 @@ namespace Game.Spells foreach (SpellPowerRecord power in m_periodicCosts) { - if (power.RequiredAura != 0 && !caster.HasAura(power.RequiredAura)) + if (power.RequiredAuraSpellID != 0 && !caster.HasAura(power.RequiredAuraSpellID)) continue; - int manaPerSecond = (int)power.ManaCostPerSecond; + int manaPerSecond = (int)power.ManaPerSecond; if (power.PowerType != PowerType.Health) - manaPerSecond += MathFunctions.CalculatePct(caster.GetMaxPower(power.PowerType), power.ManaCostPercentagePerSecond); + manaPerSecond += MathFunctions.CalculatePct(caster.GetMaxPower(power.PowerType), power.PowerPctPerSecond); else - manaPerSecond += (int)MathFunctions.CalculatePct(caster.GetMaxHealth(), power.ManaCostPercentagePerSecond); + manaPerSecond += (int)MathFunctions.CalculatePct(caster.GetMaxHealth(), power.PowerPctPerSecond); if (manaPerSecond != 0) { diff --git a/Source/Game/Spells/Auras/AuraEffect.cs b/Source/Game/Spells/Auras/AuraEffect.cs index 0c69f166e..7560076f9 100644 --- a/Source/Game/Spells/Auras/AuraEffect.cs +++ b/Source/Game/Spells/Auras/AuraEffect.cs @@ -105,7 +105,7 @@ namespace Game.Spells { for (int t = 0; t < ItemConst.MaxItemEnchantmentEffects; t++) { - if (pEnchant.EffectSpellID[t] == m_spellInfo.Id) + if (pEnchant.EffectArg[t] == m_spellInfo.Id) { amount = (int)((item_rand_suffix.AllocationPct[k] * castItem.GetItemSuffixFactor()) / 10000); break; @@ -146,7 +146,7 @@ namespace Game.Spells uint mountType = (uint)GetMiscValueB(); MountRecord mountEntry = Global.DB2Mgr.GetMount(GetId()); if (mountEntry != null) - mountType = mountEntry.MountTypeId; + mountType = mountEntry.MountTypeID; var mountCapability = GetBase().GetUnitOwner().GetMountCapability(mountType); if (mountCapability != null) @@ -2197,7 +2197,7 @@ namespace Game.Spells }).ToList(); if (!usableDisplays.Empty()) - displayId = usableDisplays.SelectRandom().DisplayID; + displayId = usableDisplays.SelectRandom().CreatureDisplayInfoID; } } // TODO: CREATE TABLE mount_vehicle (mountId, vehicleCreatureId) for future mounts that are vehicles (new mounts no longer have proper data in MiscValue) @@ -2229,7 +2229,7 @@ namespace Game.Spells { var mountCapability = CliDB.MountCapabilityStorage.LookupByKey(GetAmount()); if (mountCapability != null) - target.CastSpell(target, mountCapability.SpeedModSpell, true); + target.CastSpell(target, mountCapability.ModSpellAuraID, true); } } else @@ -2245,7 +2245,7 @@ namespace Game.Spells // remove speed aura var mountCapability = CliDB.MountCapabilityStorage.LookupByKey(GetAmount()); if (mountCapability != null) - target.RemoveAurasDueToSpell(mountCapability.SpeedModSpell, target.GetGUID()); + target.RemoveAurasDueToSpell(mountCapability.ModSpellAuraID, target.GetGUID()); } } } @@ -3512,7 +3512,7 @@ namespace Game.Spells return; Unit target = aurApp.GetTarget(); - if (target.GetPowerIndex((PowerType)powerDisplay.PowerType) == (int)PowerType.Max) + if (target.GetPowerIndex((PowerType)powerDisplay.ActualType) == (int)PowerType.Max) return; if (apply) @@ -4693,7 +4693,7 @@ namespace Game.Spells { for (byte i = 0; i < SharedConst.MaxOverrideSpell; ++i) { - uint spellId = overrideSpells.SpellID[i]; + uint spellId = overrideSpells.Spells[i]; if (spellId != 0) target.AddTemporarySpell(spellId); } @@ -4707,7 +4707,7 @@ namespace Game.Spells { for (byte i = 0; i < SharedConst.MaxOverrideSpell; ++i) { - uint spellId = overrideSpells.SpellID[i]; + uint spellId = overrideSpells.Spells[i]; if (spellId != 0) target.RemoveTemporarySpell(spellId); } diff --git a/Source/Game/Spells/Spell.cs b/Source/Game/Spells/Spell.cs index 66db5541f..b9ba790ed 100644 --- a/Source/Game/Spells/Spell.cs +++ b/Source/Game/Spells/Spell.cs @@ -3850,9 +3850,9 @@ namespace Game.Spells ItemRecord itemEntry = CliDB.ItemStorage.LookupByKey(itemId); if (itemEntry != null) { - if (itemEntry.Class == ItemClass.Weapon) + if (itemEntry.ClassID == ItemClass.Weapon) { - switch ((ItemSubClassWeapon)itemEntry.SubClass) + switch ((ItemSubClassWeapon)itemEntry.SubclassID) { case ItemSubClassWeapon.Thrown: ammoDisplayID = Global.DB2Mgr.GetItemDisplayId(itemId, m_caster.GetVirtualItemAppearanceMod(i)); @@ -5065,7 +5065,7 @@ namespace Game.Spells if (SummonProperties == null) break; - switch (SummonProperties.Category) + switch (SummonProperties.Control) { case SummonCategory.Pet: if (!m_spellInfo.HasAttribute(SpellAttr1.DismissPet) && !m_caster.GetPetGUID().IsEmpty()) @@ -6034,7 +6034,7 @@ namespace Game.Spells ItemTemplate proto = targetItem.GetTemplate(); for (byte e = 0; e < proto.Effects.Count; ++e) { - if (proto.Effects[e].SpellID != 0 && proto.Effects[e].Trigger == ItemSpelltriggerType.OnUse) + if (proto.Effects[e].SpellID != 0 && proto.Effects[e].TriggerType == ItemSpelltriggerType.OnUse) { isItemUsable = true; break; @@ -6115,7 +6115,7 @@ namespace Game.Spells ItemDisenchantLootRecord itemDisenchantLoot = item.GetDisenchantLoot(m_caster.ToPlayer()); if (itemDisenchantLoot == null) return SpellCastResult.CantBeDisenchanted; - if (itemDisenchantLoot.RequiredDisenchantSkill > player.GetSkillValue(SkillType.Enchanting)) + if (itemDisenchantLoot.SkillRequired > player.GetSkillValue(SkillType.Enchanting)) return SpellCastResult.LowCastlevel; break; } @@ -6716,19 +6716,6 @@ namespace Game.Spells { m_loadedScripts = Global.ScriptMgr.CreateSpellScripts(m_spellInfo.Id, this); - var holder = Global.SmartAIMgr.GetScript((int)GetSpellInfo().Id, SmartScriptType.Spell); - if (!holder.Empty()) - { - var script = new SmartSpell(); - script._Init("", GetSpellInfo().Id); - if (script._Load(this)) - { - script._Register(); - if (script._Validate(GetSpellInfo())) - m_loadedScripts.Add(script); - } - } - foreach (var script in m_loadedScripts) { Log.outDebug(LogFilter.Spells, "Spell.LoadScripts: Script `{0}` for spell `{1}` is loaded now", script._GetScriptName(), m_spellInfo.Id); diff --git a/Source/Game/Spells/SpellEffects.cs b/Source/Game/Spells/SpellEffects.cs index 0a7cb9129..1cc62e389 100644 --- a/Source/Game/Spells/SpellEffects.cs +++ b/Source/Game/Spells/SpellEffects.cs @@ -1746,7 +1746,7 @@ namespace Game.Spells break; } - switch (properties.Category) + switch (properties.Control) { case SummonCategory.Wild: case SummonCategory.Ally: @@ -1756,7 +1756,7 @@ namespace Game.Spells SummonGuardian(effIndex, entry, properties, numSummons); break; } - switch (properties.Type) + switch (properties.Title) { case SummonType.Pet: case SummonType.Guardian: @@ -1816,7 +1816,7 @@ namespace Game.Spells if (summon == null) continue; - if (properties.Category == SummonCategory.Ally) + if (properties.Control == SummonCategory.Ally) { summon.SetOwnerGUID(m_originalCaster.GetGUID()); summon.SetFaction(m_originalCaster.getFaction()); @@ -5073,7 +5073,7 @@ namespace Game.Spells if (summon.HasUnitTypeMask(UnitTypeMask.Guardian)) ((Guardian)summon).InitStatsForLevel(level); - if (properties != null && properties.Category == SummonCategory.Ally) + if (properties != null && properties.Control == SummonCategory.Ally) summon.SetFaction(caster.getFaction()); if (summon.HasUnitTypeMask(UnitTypeMask.Minion) && m_targets.HasDst()) diff --git a/Source/Game/Spells/SpellHistory.cs b/Source/Game/Spells/SpellHistory.cs index 536d71535..4a7842941 100644 --- a/Source/Game/Spells/SpellHistory.cs +++ b/Source/Game/Spells/SpellHistory.cs @@ -869,9 +869,9 @@ namespace Game.Spells { if (itemEffect.SpellID == spellInfo.Id) { - tmpCooldown = itemEffect.Cooldown; - tmpCategoryId = itemEffect.Category; - tmpCategoryCooldown = itemEffect.CategoryCooldown; + tmpCooldown = itemEffect.CoolDownMSec; + tmpCategoryId = itemEffect.SpellCategoryID; + tmpCategoryCooldown = itemEffect.CategoryCoolDownMSec; break; } } diff --git a/Source/Game/Spells/SpellInfo.cs b/Source/Game/Spells/SpellInfo.cs index 1c8b1574c..5a5b2ef92 100644 --- a/Source/Game/Spells/SpellInfo.cs +++ b/Source/Game/Spells/SpellInfo.cs @@ -59,20 +59,20 @@ namespace Game.Spells SpellMiscRecord _misc = data.Misc; if (_misc != null) { - Attributes = (SpellAttr0)_misc.Attributes; - AttributesEx = (SpellAttr1)_misc.AttributesEx; - AttributesEx2 = (SpellAttr2)_misc.AttributesExB; - AttributesEx3 = (SpellAttr3)_misc.AttributesExC; - AttributesEx4 = (SpellAttr4)_misc.AttributesExD; - AttributesEx5 = (SpellAttr5)_misc.AttributesExE; - AttributesEx6 = (SpellAttr6)_misc.AttributesExF; - AttributesEx7 = (SpellAttr7)_misc.AttributesExG; - AttributesEx8 = (SpellAttr8)_misc.AttributesExH; - AttributesEx9 = (SpellAttr9)_misc.AttributesExI; - AttributesEx10 = (SpellAttr10)_misc.AttributesExJ; - AttributesEx11 = (SpellAttr11)_misc.AttributesExK; - AttributesEx12 = (SpellAttr12)_misc.AttributesExL; - AttributesEx13 = (SpellAttr13)_misc.AttributesExM; + Attributes = (SpellAttr0)_misc.Attributes[0]; + AttributesEx = (SpellAttr1)_misc.Attributes[1]; + AttributesEx2 = (SpellAttr2)_misc.Attributes[2]; + AttributesEx3 = (SpellAttr3)_misc.Attributes[3]; + AttributesEx4 = (SpellAttr4)_misc.Attributes[4]; + AttributesEx5 = (SpellAttr5)_misc.Attributes[5]; + AttributesEx6 = (SpellAttr6)_misc.Attributes[6]; + AttributesEx7 = (SpellAttr7)_misc.Attributes[7]; + AttributesEx8 = (SpellAttr8)_misc.Attributes[8]; + AttributesEx9 = (SpellAttr9)_misc.Attributes[9]; + AttributesEx10 = (SpellAttr10)_misc.Attributes[10]; + AttributesEx11 = (SpellAttr11)_misc.Attributes[11]; + AttributesEx12 = (SpellAttr12)_misc.Attributes[12]; + AttributesEx13 = (SpellAttr13)_misc.Attributes[13]; CastTimeEntry = CliDB.SpellCastTimesStorage.LookupByKey(_misc.CastingTimeIndex); DurationEntry = CliDB.SpellDurationStorage.LookupByKey(_misc.DurationIndex); RangeIndex = _misc.RangeIndex; @@ -81,7 +81,7 @@ namespace Game.Spells SchoolMask = (SpellSchoolMask)_misc.SchoolMask; AttributesCu = 0; - IconFileDataId = _misc.IconFileDataID; + IconFileDataId = _misc.SpellIconFileDataID; ActiveIconFileDataId = _misc.ActiveIconFileDataID; } @@ -90,13 +90,13 @@ namespace Game.Spells // sort all visuals so that the ones without a condition requirement are last on the list foreach (var key in _visuals.Keys.ToList()) - _visuals[key] = _visuals[key].OrderByDescending(x => x.PlayerConditionID).ToList(); + _visuals[key] = _visuals[key].OrderByDescending(x => x.CasterPlayerConditionID).ToList(); // SpellScalingEntry SpellScalingRecord _scaling = data.Scaling; if (_scaling != null) { - Scaling._Class = _scaling.ScalingClass; + Scaling._Class = _scaling.Class; Scaling.MinScalingLevel = _scaling.MinScalingLevel; Scaling.MaxScalingLevel = _scaling.MaxScalingLevel; Scaling.ScalesFromItemLevel = _scaling.ScalesFromItemLevel; @@ -179,8 +179,8 @@ namespace Game.Spells if (_equipped != null) { EquippedItemClass = (ItemClass)_equipped.EquippedItemClass; - EquippedItemSubClassMask = _equipped.EquippedItemSubClassMask; - EquippedItemInventoryTypeMask = _equipped.EquippedItemInventoryTypeMask; + EquippedItemSubClassMask = _equipped.EquippedItemSubclass; + EquippedItemInventoryTypeMask = _equipped.EquippedItemInvTypes; } // SpellInterruptsEntry @@ -226,10 +226,10 @@ namespace Game.Spells if (_target != null) { targets = (SpellCastTargetFlags)_target.Targets; - ConeAngle = _target.ConeAngle; + ConeAngle = _target.ConeDegrees; Width = _target.Width; TargetCreatureType = _target.TargetCreatureType; - MaxAffectedTargets = _target.MaxAffectedTargets; + MaxAffectedTargets = _target.MaxTargets; MaxTargetLevel = _target.MaxTargetLevel; } @@ -964,7 +964,7 @@ namespace Game.Spells uint mountType = (uint)effect.MiscValueB; MountRecord mountEntry = Global.DB2Mgr.GetMount(Id); if (mountEntry != null) - mountType = mountEntry.MountTypeId; + mountType = mountEntry.MountTypeID; if (mountType != 0 && player.GetMountCapability(mountType) == null) return SpellCastResult.NotHere; break; @@ -1210,11 +1210,11 @@ namespace Game.Spells var vehicleSeat = vehicle.GetSeatForPassenger(caster); if (!HasAttribute(SpellAttr6.CastableWhileOnVehicle) && !HasAttribute(SpellAttr0.CastableWhileMounted) - && (vehicleSeat.Flags[0] & (uint)checkMask) != (uint)checkMask) + && (vehicleSeat.Flags & checkMask) != checkMask) return SpellCastResult.CantDoThatRightNow; // Can only summon uncontrolled minions/guardians when on controlled vehicle - if (vehicleSeat.Flags[0].HasAnyFlag((uint)(VehicleSeatFlags.CanControl | VehicleSeatFlags.Unk2))) + if (vehicleSeat.Flags.HasAnyFlag((VehicleSeatFlags.CanControl | VehicleSeatFlags.Unk2))) { foreach (SpellEffectInfo effect in GetEffectsForDifficulty(caster.GetMap().GetDifficultyID())) { @@ -1222,7 +1222,7 @@ namespace Game.Spells continue; var props = CliDB.SummonPropertiesStorage.LookupByKey(effect.MiscValueB); - if (props != null && props.Category != SummonCategory.Wild) + if (props != null && props.Control != SummonCategory.Wild) return SpellCastResult.CantDoThatRightNow; } } @@ -2529,20 +2529,16 @@ namespace Game.Spells { if (RangeEntry == null) return 0.0f; - if (positive) - return RangeEntry.MinRangeFriend; - return RangeEntry.MinRangeHostile; + + return RangeEntry.RangeMin[positive ? 1 : 0]; } public float GetMaxRange(bool positive = false, Unit caster = null, Spell spell = null) { if (RangeEntry == null) return 0.0f; - float range; - if (positive) - range = RangeEntry.MaxRangeFriend; - else - range = RangeEntry.MaxRangeHostile; + + float range = RangeEntry.RangeMax[positive ? 1 : 0]; if (caster != null) { Player modOwner = caster.GetSpellModOwner(); @@ -2601,9 +2597,9 @@ namespace Game.Spells if (calcLevel < 0) calcLevel = 0; - castTime = (int)(CastTimeEntry.CastTime + CastTimeEntry.CastTimePerLevel * level); - if (castTime < CastTimeEntry.MinCastTime) - castTime = CastTimeEntry.MinCastTime; + castTime = (int)(CastTimeEntry.Base + CastTimeEntry.PerLevel * level); + if (castTime < CastTimeEntry.Minimum) + castTime = CastTimeEntry.Minimum; } if (castTime <= 0) @@ -2669,7 +2665,7 @@ namespace Game.Spells foreach (SpellPowerRecord power in powers) { - if (power.RequiredAura != 0 && !caster.HasAura(power.RequiredAura)) + if (power.RequiredAuraSpellID != 0 && !caster.HasAura(power.RequiredAuraSpellID)) continue; // Spell drain all exist power on cast (Only paladin lay of Hands) @@ -2696,23 +2692,23 @@ namespace Game.Spells } // Base powerCost - int powerCost = (int)power.ManaCost; + int powerCost = power.ManaCost; // PCT cost from total amount - if (power.ManaCostPercentage != 0) + if (power.PowerCostPct != 0) { switch (power.PowerType) { // health as power used case PowerType.Health: - powerCost += (int)MathFunctions.CalculatePct(caster.GetMaxHealth(), power.ManaCostPercentage); + powerCost += (int)MathFunctions.CalculatePct(caster.GetMaxHealth(), power.PowerCostPct); break; case PowerType.Mana: - powerCost += (int)MathFunctions.CalculatePct(caster.GetCreateMana(), power.ManaCostPercentage); + powerCost += (int)MathFunctions.CalculatePct(caster.GetCreateMana(), power.PowerCostPct); break; case PowerType.Rage: case PowerType.Focus: case PowerType.Energy: - powerCost += MathFunctions.CalculatePct(caster.GetMaxPower(power.PowerType), power.ManaCostPercentage); + powerCost += MathFunctions.CalculatePct(caster.GetMaxPower(power.PowerType), power.PowerCostPct); break; case PowerType.Runes: case PowerType.RunicPower: @@ -2724,8 +2720,8 @@ namespace Game.Spells } } - if (power.HealthCostPercentage != 0) - healthCost += (int)MathFunctions.CalculatePct(caster.GetMaxHealth(), power.HealthCostPercentage); + if (power.PowerCostMaxPct != 0) + healthCost += (int)MathFunctions.CalculatePct(caster.GetMaxHealth(), power.PowerCostMaxPct); if (power.PowerType != PowerType.Health) { @@ -2766,13 +2762,13 @@ namespace Game.Spells Player modOwner = caster.GetSpellModOwner(); if (modOwner) { - if (power.PowerIndex == 0) + if (power.OrderIndex == 0) modOwner.ApplySpellMod(Id, SpellModOp.Cost, ref powerCost); - else if (power.PowerIndex == 1) + else if (power.OrderIndex == 1) modOwner.ApplySpellMod(Id, SpellModOp.SpellCost2, ref powerCost); } - if (!caster.IsControlledByPlayer() && MathFunctions.fuzzyEq(power.ManaCostPercentage, 0.0f) && SpellLevel != 0) + if (!caster.IsControlledByPlayer() && MathFunctions.fuzzyEq(power.PowerCostPct, 0.0f) && SpellLevel != 0) { if (HasAttribute(SpellAttr0.LevelDamageCalculation)) { @@ -3077,7 +3073,7 @@ namespace Game.Spells { foreach (SpellXSpellVisualRecord visual in visualList) { - PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(visual.PlayerConditionID); + PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(visual.CasterPlayerConditionID); if (playerCondition == null || (caster.IsTypeId(TypeId.Player) && ConditionManager.IsPlayerMeetingCondition(caster.ToPlayer(), playerCondition))) return visual.Id; } @@ -3092,7 +3088,7 @@ namespace Game.Spells { foreach (var visual in defaultList) { - PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(visual.PlayerConditionID); + PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(visual.CasterPlayerConditionID); if (playerCondition == null || (caster && caster.IsTypeId(TypeId.Player) && ConditionManager.IsPlayerMeetingCondition(caster.ToPlayer(), playerCondition))) return visual.Id; } @@ -3705,14 +3701,14 @@ namespace Game.Spells Amplitude = _effect.EffectAmplitude; ChainAmplitude = _effect.EffectChainAmplitude; BonusCoefficient = _effect.EffectBonusCoefficient; - MiscValue = _effect.EffectMiscValue; - MiscValueB = _effect.EffectMiscValueB; + MiscValue = _effect.EffectMiscValue[0]; + MiscValueB = _effect.EffectMiscValue[1]; Mechanic = (Mechanics)_effect.EffectMechanic; PositionFacing = _effect.EffectPosFacing; TargetA = new SpellImplicitTargetInfo((Targets)_effect.ImplicitTarget[0]); TargetB = new SpellImplicitTargetInfo((Targets)_effect.ImplicitTarget[1]); - RadiusEntry = CliDB.SpellRadiusStorage.LookupByKey(_effect.EffectRadiusIndex); - MaxRadiusEntry = CliDB.SpellRadiusStorage.LookupByKey(_effect.EffectRadiusMaxIndex); + RadiusEntry = CliDB.SpellRadiusStorage.LookupByKey(_effect.EffectRadiusIndex[0]); + MaxRadiusEntry = CliDB.SpellRadiusStorage.LookupByKey(_effect.EffectRadiusIndex[1]); ChainTargets = _effect.EffectChainTargets; ItemType = _effect.EffectItemType; TriggerSpell = _effect.EffectTriggerSpell; diff --git a/Source/Game/Spells/SpellManager.cs b/Source/Game/Spells/SpellManager.cs index 4083fca12..19d4f4c84 100644 --- a/Source/Game/Spells/SpellManager.cs +++ b/Source/Game/Spells/SpellManager.cs @@ -642,11 +642,11 @@ namespace Game.Entities if (skillAbility.SupercedesSpell == 0) continue; - if (!HasSpellInfo(skillAbility.SupercedesSpell) || !HasSpellInfo(skillAbility.SpellID)) + if (!HasSpellInfo(skillAbility.SupercedesSpell) || !HasSpellInfo(skillAbility.Spell)) continue; - chains[skillAbility.SupercedesSpell] = skillAbility.SpellID; - hasPrev.Add(skillAbility.SpellID); + chains[skillAbility.SupercedesSpell] = skillAbility.Spell; + hasPrev.Add(skillAbility.Spell); } // each key in chains that isn't present in hasPrev is a first rank @@ -1418,7 +1418,7 @@ namespace Game.Entities mSkillLineAbilityMap.Clear(); foreach (var skill in CliDB.SkillLineAbilityStorage.Values) - mSkillLineAbilityMap.Add(skill.SpellID, skill); + mSkillLineAbilityMap.Add(skill.Spell, skill); Log.outInfo(LogFilter.ServerLoading, "Loaded {0} SkillLineAbility MultiMap Data in {1} ms", mSkillLineAbilityMap.Count, Time.GetMSTimeDiffToNow(oldMSTime)); } @@ -1627,7 +1627,7 @@ namespace Game.Entities if (skillLine.AcquireMethod != AbilytyLearnType.OnSkillLearn) continue; - SpellInfo spell = GetSpellInfo(skillLine.SpellID); + SpellInfo spell = GetSpellInfo(skillLine.Spell); if (spell == null) // not exist or triggered or talent continue; @@ -2189,7 +2189,7 @@ namespace Game.Entities if (enchant.Effect[s] != ItemEnchantmentType.CombatSpell) continue; - SpellInfo procInfo = GetSpellInfo(enchant.EffectSpellID[s]); + SpellInfo procInfo = GetSpellInfo(enchant.EffectArg[s]); if (procInfo == null) continue; @@ -2810,13 +2810,13 @@ namespace Game.Entities SummonPropertiesRecord properties = CliDB.SummonPropertiesStorage.LookupByKey(121); if (properties != null) - properties.Type = SummonType.Totem; + properties.Title = SummonType.Totem; properties = CliDB.SummonPropertiesStorage.LookupByKey(647); // 52893 if (properties != null) - properties.Type = SummonType.Totem; + properties.Title = SummonType.Totem; properties = CliDB.SummonPropertiesStorage.LookupByKey(628); if (properties != null) // Hungry Plaguehound - properties.Category = SummonCategory.Pet; + properties.Control = SummonCategory.Pet; Log.outInfo(LogFilter.ServerLoading, "Loaded SpellInfo corrections in {0} ms", Time.GetMSTimeDiffToNow(oldMSTime)); } @@ -2874,11 +2874,11 @@ namespace Game.Entities foreach (var skillLine in CliDB.SkillLineAbilityStorage.Values) { - SpellInfo spellInfo = GetSpellInfo(skillLine.SpellID); + SpellInfo spellInfo = GetSpellInfo(skillLine.Spell); if (spellInfo == null) continue; - var levels = levelsBySpell.LookupByKey(skillLine.SpellID); + var levels = levelsBySpell.LookupByKey(skillLine.Spell); if (levels != null && levels.SpellLevel != 0) continue; diff --git a/Source/Game/Text/ChatTextBuilder.cs b/Source/Game/Text/ChatTextBuilder.cs index 3bbc63d63..cd4be0729 100644 --- a/Source/Game/Text/ChatTextBuilder.cs +++ b/Source/Game/Text/ChatTextBuilder.cs @@ -46,7 +46,7 @@ namespace Game.Chat { BroadcastTextRecord bct = CliDB.BroadcastTextStorage.LookupByKey(_textId); var packet = new ChatPkt(); - packet.Initialize(_msgType, bct != null ? (Language)bct.Language : Language.Universal, _source, _target, bct != null ? Global.DB2Mgr.GetBroadcastTextValue(bct, locale, _gender) : "", _achievementId, "", locale); + packet.Initialize(_msgType, bct != null ? (Language)bct.LanguageID : Language.Universal, _source, _target, bct != null ? Global.DB2Mgr.GetBroadcastTextValue(bct, locale, _gender) : "", _achievementId, "", locale); return packet; } diff --git a/Source/Game/Text/CreatureTextManager.cs b/Source/Game/Text/CreatureTextManager.cs index bac2ae2b5..6df209399 100644 --- a/Source/Game/Text/CreatureTextManager.cs +++ b/Source/Game/Text/CreatureTextManager.cs @@ -203,7 +203,7 @@ namespace Game BroadcastTextRecord bct = CliDB.BroadcastTextStorage.LookupByKey(textEntry.BroadcastTextId); if (bct != null) { - uint broadcastTextSoundId = bct.SoundID[source.GetGender() == Gender.Female ? 1 : 0]; + uint broadcastTextSoundId = bct.SoundEntriesID[source.GetGender() == Gender.Female ? 1 : 0]; if (broadcastTextSoundId != 0) finalSound = broadcastTextSoundId; } diff --git a/Source/Scripts/Spells/Generic.cs b/Source/Scripts/Spells/Generic.cs index 3885544ab..0db95d8f2 100644 --- a/Source/Scripts/Spells/Generic.cs +++ b/Source/Scripts/Spells/Generic.cs @@ -2285,7 +2285,7 @@ namespace Scripts.Spells.Generic // cast speed aura MountCapabilityRecord mountCapability = CliDB.MountCapabilityStorage.LookupByKey(aurEff.GetAmount()); if (mountCapability != null) - target.CastSpell(target, mountCapability.SpeedModSpell, TriggerCastFlags.FullMask); + target.CastSpell(target, mountCapability.ModSpellAuraID, TriggerCastFlags.FullMask); } public override void Register() diff --git a/sql/updates/hotfixes/master/2018_03_12_00_hotfixes.sql b/sql/updates/hotfixes/master/2018_03_12_00_hotfixes.sql new file mode 100644 index 000000000..4f59e58a4 --- /dev/null +++ b/sql/updates/hotfixes/master/2018_03_12_00_hotfixes.sql @@ -0,0 +1,1464 @@ +ALTER TABLE `achievement` + MODIFY `Flags` int(11) NOT NULL DEFAULT 0 AFTER `Reward`, + CHANGE `MapID` `InstanceID` smallint(6) NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `Supercedes` smallint(6) NOT NULL DEFAULT 0 AFTER `InstanceID`, + MODIFY `Category` smallint(6) NOT NULL DEFAULT 0 AFTER `Supercedes`, + CHANGE `UIOrder` `UiOrder` smallint(6) NOT NULL DEFAULT 0 AFTER `Category`, + MODIFY `SharesCriteria` smallint(6) NOT NULL DEFAULT 0 AFTER `UiOrder`, + MODIFY `Points` tinyint(4) NOT NULL DEFAULT 0 AFTER `Faction`, + MODIFY `MinimumCriteria` tinyint(4) NOT NULL DEFAULT 0 AFTER `Points`, + CHANGE `IconFileDataID` `IconFileID` int(11) NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `area_table` + MODIFY `Flags1` int(11) NOT NULL DEFAULT 0 AFTER `AreaName`, + MODIFY `Flags2` int(11) NOT NULL DEFAULT 0 AFTER `Flags1`, + CHANGE `MapID` `ContinentID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `AmbientMultiplier`, + CHANGE `UWZoneMusic` `UwZoneMusic` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `LiquidTypeID4`, + CHANGE `UWAmbience` `UwAmbience` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `UwZoneMusic`, + CHANGE `PvPCombatWorldStateID` `PvpCombatWorldStateID` smallint(6) NOT NULL DEFAULT 0 AFTER `UwAmbience`, + MODIFY `ExplorationLevel` tinyint(4) NOT NULL DEFAULT 0 AFTER `SoundProviderPrefUnderwater`, + CHANGE `UWIntroSound` `UwIntroSound` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `WindSettingsID`; + +ALTER TABLE `area_trigger` + CHANGE `MapID` `ContinentID` smallint(6) NOT NULL DEFAULT 0 AFTER `BoxYaw`, + MODIFY `PhaseID` smallint(6) NOT NULL DEFAULT 0 AFTER `ContinentID`, + MODIFY `PhaseGroupID` smallint(6) NOT NULL DEFAULT 0 AFTER `PhaseID`, + MODIFY `ShapeID` smallint(6) NOT NULL DEFAULT 0 AFTER `PhaseGroupID`, + MODIFY `AreaTriggerActionSetID` smallint(6) NOT NULL DEFAULT 0 AFTER `ShapeID`, + MODIFY `PhaseUseFlags` tinyint(4) NOT NULL DEFAULT 0 AFTER `AreaTriggerActionSetID`, + MODIFY `ShapeType` tinyint(4) NOT NULL DEFAULT 0 AFTER `PhaseUseFlags`, + CHANGE `Flag` `Flags` tinyint(4) NOT NULL DEFAULT 0 AFTER `ShapeType`; + +ALTER TABLE `armor_location` + CHANGE `Modifier1` `Clothmodifier` float NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `Modifier2` `Leathermodifier` float NOT NULL DEFAULT 0 AFTER `Clothmodifier`, + CHANGE `Modifier3` `Chainmodifier` float NOT NULL DEFAULT 0 AFTER `Leathermodifier`, + CHANGE `Modifier4` `Platemodifier` float NOT NULL DEFAULT 0 AFTER `Chainmodifier`, + CHANGE `Modifier5` `Modifier` float NOT NULL DEFAULT 0 AFTER `Platemodifier`; + +ALTER TABLE `artifact` + CHANGE `BarConnectedColor` `UiBarOverlayColor` int(11) NOT NULL DEFAULT 0 AFTER `Name`, + CHANGE `BarDisconnectedColor` `UiBarBackgroundColor` int(11) NOT NULL DEFAULT 0 AFTER `UiBarOverlayColor`, + CHANGE `TitleColor` `UiNameColor` int(11) NOT NULL DEFAULT 0 AFTER `UiBarBackgroundColor`, + CHANGE `ClassUiTextureKitID` `UiTextureKitID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `UiNameColor`, + CHANGE `SpecID` `ChrSpecializationID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `UiTextureKitID`; + +ALTER TABLE `artifact_appearance` + CHANGE `SwatchColor` `UiSwatchColor` int(11) NOT NULL DEFAULT 0 AFTER `Name`, + CHANGE `ModelDesaturation` `UiModelSaturation` float NOT NULL DEFAULT 0 AFTER `UiSwatchColor`, + CHANGE `ModelAlpha` `UiModelOpacity` float NOT NULL DEFAULT 0 AFTER `UiModelSaturation`, + CHANGE `ShapeshiftDisplayID` `OverrideShapeshiftDisplayID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `UiModelOpacity`, + CHANGE `Unknown` `UiCameraID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ArtifactAppearanceSetID`, + CHANGE `AppearanceModID` `ItemAppearanceModifierID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `DisplayIndex`, + CHANGE `ModifiesShapeshiftFormDisplay` `OverrideShapeshiftFormID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `Flags`, + CHANGE `PlayerConditionID` `UnlockPlayerConditionID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `ItemAppearanceID` `UiItemAppearanceID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `UnlockPlayerConditionID`, + CHANGE `AltItemAppearanceID` `UiAltItemAppearanceID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `UiItemAppearanceID`; + +ALTER TABLE `artifact_appearance_set` + CHANGE `Name2` `Description` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Name`, + CHANGE `AttachmentPoint` `ForgeAttachmentOverride` tinyint(4) NOT NULL DEFAULT 0 AFTER `DisplayIndex`; + +ALTER TABLE `artifact_appearance_set_locale` CHANGE `Name2_lang` `Description_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Name_lang`; + +ALTER TABLE `artifact_category` + CHANGE `ArtifactKnowledgeCurrencyID` `XpMultCurrencyID` smallint(6) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `ArtifactKnowledgeMultiplierCurveID` `XpMultCurveID` smallint(6) NOT NULL DEFAULT 0 AFTER `XpMultCurrencyID`; + +ALTER TABLE `artifact_power` + CHANGE `MaxRank` `MaxPurchasableRank` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `Flags`, + CHANGE `ArtifactTier` `Tier` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `MaxPurchasableRank`, + CHANGE `RelicType` `Label` int(11) NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `artifact_power_link` + CHANGE `FromArtifactPowerID` `PowerA` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `ToArtifactPowerID` `PowerB` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `PowerA`; + +ALTER TABLE `artifact_power_rank` + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `Value` `AuraPointsOverride` float NOT NULL DEFAULT 0 AFTER `SpellID`, + CHANGE `Unknown` `ItemBonusListID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `AuraPointsOverride`, + CHANGE `Rank` `RankIndex` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemBonusListID`; + +ALTER TABLE `artifact_quest_xp` + CHANGE `Exp1` `Difficulty1` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `Exp2` `Difficulty2` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty1`, + CHANGE `Exp3` `Difficulty3` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty2`, + CHANGE `Exp4` `Difficulty4` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty3`, + CHANGE `Exp5` `Difficulty5` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty4`, + CHANGE `Exp6` `Difficulty6` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty5`, + CHANGE `Exp7` `Difficulty7` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty6`, + CHANGE `Exp8` `Difficulty8` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty7`, + CHANGE `Exp9` `Difficulty9` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty8`, + CHANGE `Exp10` `Difficulty10` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty9`; + +ALTER TABLE `battlemaster_list` + MODIFY `IconFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `LongDescription`, + MODIFY `HolidayWorldState` smallint(6) NOT NULL DEFAULT 0 AFTER `MapID16`, + CHANGE `PlayerConditionID` `RequiredPlayerConditionID` smallint(6) NOT NULL DEFAULT 0 AFTER `HolidayWorldState`, + MODIFY `InstanceType` tinyint(4) NOT NULL DEFAULT 0 AFTER `RequiredPlayerConditionID`, + MODIFY `GroupsAllowed` tinyint(4) NOT NULL DEFAULT 0 AFTER `InstanceType`, + MODIFY `MaxGroupSize` tinyint(4) NOT NULL DEFAULT 0 AFTER `GroupsAllowed`, + MODIFY `MinLevel` tinyint(4) NOT NULL DEFAULT 0 AFTER `MaxGroupSize`, + MODIFY `MaxLevel` tinyint(4) NOT NULL DEFAULT 0 AFTER `MinLevel`, + MODIFY `RatedPlayers` tinyint(4) NOT NULL DEFAULT 0 AFTER `MaxLevel`, + MODIFY `MinPlayers` tinyint(4) NOT NULL DEFAULT 0 AFTER `RatedPlayers`, + MODIFY `MaxPlayers` tinyint(4) NOT NULL DEFAULT 0 AFTER `MinPlayers`, + MODIFY `Flags` tinyint(4) NOT NULL DEFAULT 0 AFTER `MaxPlayers`; + +ALTER TABLE `battle_pet_breed_quality` + CHANGE `Modifier` `StateMultiplier` float NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `Quality` `QualityEnum` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `StateMultiplier`; + +ALTER TABLE `battle_pet_breed_state` + MODIFY `Value` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `State` `BattlePetStateID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `Value`, + CHANGE `BreedID` `BattlePetBreedID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `BattlePetStateID`; + +ALTER TABLE `battle_pet_species` + MODIFY `CreatureID` int(11) NOT NULL DEFAULT 0 AFTER `Description`, + CHANGE `IconFileID` `IconFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `CreatureID`, + MODIFY `SummonSpellID` int(11) NOT NULL DEFAULT 0 AFTER `IconFileDataID`, + CHANGE `PetType` `PetTypeEnum` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `Flags`, + CHANGE `Source` `SourceTypeEnum` tinyint(4) NOT NULL DEFAULT 0 AFTER `PetTypeEnum`, + CHANGE `CardModelSceneID` `CardUIModelSceneID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `LoadoutModelSceneID` `LoadoutUIModelSceneID` int(11) NOT NULL DEFAULT 0 AFTER `CardUIModelSceneID`; + +ALTER TABLE `battle_pet_species_state` + CHANGE `State` `BattlePetStateID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `Value`, + CHANGE `SpeciesID` `BattlePetSpeciesID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `BattlePetStateID`; + +ALTER TABLE `broadcast_text` + CHANGE `MaleText` `Text` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `ID`, + CHANGE `FemaleText` `Text1` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Text`, + CHANGE `UnkEmoteID` `EmotesID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `EmoteDelay3`, + CHANGE `Language` `LanguageID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `EmotesID`, + CHANGE `Type` `Flags` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `LanguageID`, + CHANGE `PlayerConditionID` `ConditionID` int(11) NOT NULL DEFAULT 0 AFTER `Flags`, + CHANGE `SoundID1` `SoundEntriesID1` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ConditionID`, + CHANGE `SoundID2` `SoundEntriesID2` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `SoundEntriesID1`; + +ALTER TABLE `broadcast_text_locale` + CHANGE `MaleText_lang` `Text_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `locale`, + CHANGE `FemaleText_lang` `Text1_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Text_lang`; + +ALTER TABLE `character_facial_hair_styles` + MODIFY `Geoset1` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `Geoset2` int(11) NOT NULL DEFAULT 0 AFTER `Geoset1`, + MODIFY `Geoset3` int(11) NOT NULL DEFAULT 0 AFTER `Geoset2`, + MODIFY `Geoset4` int(11) NOT NULL DEFAULT 0 AFTER `Geoset3`, + MODIFY `Geoset5` int(11) NOT NULL DEFAULT 0 AFTER `Geoset4`; + +ALTER TABLE `char_base_section` + CHANGE `Variation` `VariationEnum` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `ResolutionVariation` `ResolutionVariationEnum` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `VariationEnum`, + CHANGE `Resolution` `LayoutResType` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ResolutionVariationEnum`; + +ALTER TABLE `char_sections` + CHANGE `TextureFileDataID1` `MaterialResourcesID1` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `TextureFileDataID2` `MaterialResourcesID2` int(11) NOT NULL DEFAULT 0 AFTER `MaterialResourcesID1`, + CHANGE `TextureFileDataID3` `MaterialResourcesID3` int(11) NOT NULL DEFAULT 0 AFTER `MaterialResourcesID2`, + MODIFY `Flags` smallint(6) NOT NULL DEFAULT 0 AFTER `MaterialResourcesID3`, + MODIFY `RaceID` tinyint(4) NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `SexID` tinyint(4) NOT NULL DEFAULT 0 AFTER `RaceID`, + MODIFY `BaseSection` tinyint(4) NOT NULL DEFAULT 0 AFTER `SexID`, + MODIFY `VariationIndex` tinyint(4) NOT NULL DEFAULT 0 AFTER `BaseSection`, + MODIFY `ColorIndex` tinyint(4) NOT NULL DEFAULT 0 AFTER `VariationIndex`; + +ALTER TABLE `char_start_outfit` CHANGE `GenderID` `SexID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ClassID`; + +ALTER TABLE `char_titles` + CHANGE `NameMale` `Name` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `ID`, + CHANGE `NameFemale` `Name1` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Name`, + MODIFY `MaskID` smallint(6) NOT NULL DEFAULT 0 AFTER `Name1`, + MODIFY `Flags` tinyint(4) NOT NULL DEFAULT 0 AFTER `MaskID`; + +ALTER TABLE `char_titles_locale` + CHANGE `NameMale_lang` `Name_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `locale`, + CHANGE `NameFemale_lang` `Name1_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Name_lang`; + +ALTER TABLE `chat_channels` + MODIFY `Flags` int(11) NOT NULL DEFAULT 0 AFTER `Shortcut`, + MODIFY `FactionGroup` tinyint(4) NOT NULL DEFAULT 0 AFTER `Flags`; + +ALTER TABLE `chr_classes` + MODIFY `LowResScreenFileDataID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `SelectScreenFileDataID`, + MODIFY `StartingLevel` int(11) NOT NULL DEFAULT 0 AFTER `IconFileDataID`, + CHANGE `PowerType` `DisplayPower` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `DefaultSpec`, + CHANGE `Unk1` `PrimaryStatPriority` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `RangedAttackPowerPerAgility`; + +ALTER TABLE `chr_races` + CHANGE `LowercaseName` `NameLowercase` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `NameFemale`, + CHANGE `LowercaseNameFemale` `NameFemaleLowercase` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `NameLowercase`, + MODIFY `Flags` int(11) NOT NULL DEFAULT 0 AFTER `NameFemaleLowercase`, + CHANGE `MaleDisplayID` `MaleDisplayId` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Flags`, + CHANGE `FemaleDisplayID` `FemaleDisplayId` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `MaleDisplayId`, + MODIFY `CreateScreenFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `FemaleDisplayId`, + MODIFY `SelectScreenFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `CreateScreenFileDataID`, + MODIFY `LowResScreenFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `FemaleCustomizeOffset3`, + MODIFY `StartingLevel` int(11) NOT NULL DEFAULT 0 AFTER `LowResScreenFileDataID`, + CHANGE `UIDisplayOrder` `UiDisplayOrder` int(11) NOT NULL DEFAULT 0 AFTER `StartingLevel`, + MODIFY `FactionID` smallint(6) NOT NULL DEFAULT 0 AFTER `UiDisplayOrder`, + MODIFY `ResSicknessSpellID` smallint(6) NOT NULL DEFAULT 0 AFTER `FactionID`, + MODIFY `SplashSoundID` smallint(6) NOT NULL DEFAULT 0 AFTER `ResSicknessSpellID`, + MODIFY `CinematicSequenceID` smallint(6) NOT NULL DEFAULT 0 AFTER `SplashSoundID`, + MODIFY `BaseLanguage` tinyint(4) NOT NULL DEFAULT 0 AFTER `CinematicSequenceID`, + MODIFY `CreatureType` tinyint(4) NOT NULL DEFAULT 0 AFTER `BaseLanguage`, + CHANGE `TeamID` `Alliance` tinyint(4) NOT NULL DEFAULT 0 AFTER `CreatureType`, + MODIFY `RaceRelated` tinyint(4) NOT NULL DEFAULT 0 AFTER `Alliance`, + MODIFY `UnalteredVisualRaceID` tinyint(4) NOT NULL DEFAULT 0 AFTER `RaceRelated`, + MODIFY `CharComponentTextureLayoutID` tinyint(4) NOT NULL DEFAULT 0 AFTER `UnalteredVisualRaceID`, + MODIFY `DefaultClassID` tinyint(4) NOT NULL DEFAULT 0 AFTER `CharComponentTextureLayoutID`, + MODIFY `NeutralRaceID` tinyint(4) NOT NULL DEFAULT 0 AFTER `DefaultClassID`, + CHANGE `ItemAppearanceFrameRaceID` `DisplayRaceID` tinyint(4) NOT NULL DEFAULT 0 AFTER `NeutralRaceID`, + MODIFY `CharComponentTexLayoutHiResID` tinyint(4) NOT NULL DEFAULT 0 AFTER `DisplayRaceID`, + CHANGE `HighResMaleDisplayID` `HighResMaleDisplayId` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `HighResFemaleDisplayID` `HighResFemaleDisplayId` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `HighResMaleDisplayId`, + MODIFY `HeritageArmorAchievementID` int(11) NOT NULL DEFAULT 0 AFTER `HighResFemaleDisplayId`, + CHANGE `MaleCorpseBonesModelFileDataID` `MaleSkeletonFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `HeritageArmorAchievementID`, + CHANGE `FemaleCorpseBonesModelFileDataID` `FemaleSkeletonFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `MaleSkeletonFileDataID`, + CHANGE `AlteredFormTransitionSpellVisualID1` `AlteredFormStartVisualKitID1` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `FemaleSkeletonFileDataID`, + CHANGE `AlteredFormTransitionSpellVisualID2` `AlteredFormStartVisualKitID2` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `AlteredFormStartVisualKitID1`, + CHANGE `AlteredFormTransitionSpellVisualID3` `AlteredFormStartVisualKitID3` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `AlteredFormStartVisualKitID2`, + CHANGE `AlteredFormTransitionSpellVisualKitID1` `AlteredFormFinishVisualKitID1` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `AlteredFormStartVisualKitID3`, + CHANGE `AlteredFormTransitionSpellVisualKitID2` `AlteredFormFinishVisualKitID2` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `AlteredFormFinishVisualKitID1`, + CHANGE `AlteredFormTransitionSpellVisualKitID3` `AlteredFormFinishVisualKitID3` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `AlteredFormFinishVisualKitID2`; + +ALTER TABLE `chr_races_locale` + CHANGE `LowercaseName_lang` `NameLowercase_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `NameFemale_lang`, + CHANGE `LowercaseNameFemale_lang` `NameFemaleLowercase_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `NameLowercase_lang`; + +ALTER TABLE `chr_specialization` + CHANGE `Name2` `FemaleName` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Name`, + MODIFY `MasterySpellID1` int(11) NOT NULL DEFAULT 0 AFTER `Description`, + MODIFY `MasterySpellID2` int(11) NOT NULL DEFAULT 0 AFTER `MasterySpellID1`, + MODIFY `ClassID` tinyint(4) NOT NULL DEFAULT 0 AFTER `MasterySpellID2`, + MODIFY `OrderIndex` tinyint(4) NOT NULL DEFAULT 0 AFTER `ClassID`, + MODIFY `PetTalentType` tinyint(4) NOT NULL DEFAULT 0 AFTER `OrderIndex`, + MODIFY `Role` tinyint(4) NOT NULL DEFAULT 0 AFTER `PetTalentType`, + CHANGE `PrimaryStatOrder` `PrimaryStatPriority` tinyint(4) NOT NULL DEFAULT 0 AFTER `Role`, + CHANGE `IconFileDataID` `SpellIconFileID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `AnimReplacementSetID` `AnimReplacements` int(11) NOT NULL DEFAULT 0 AFTER `Flags`; + +ALTER TABLE `chr_specialization_locale` CHANGE `Name2_lang` `FemaleName_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Name_lang`; + +ALTER TABLE `cinematic_camera` CHANGE `ModelFileDataID` `FileDataID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `OriginFacing`; + +ALTER TABLE `conversation_line` + CHANGE `Duration` `AdditionalDuration` int(11) NOT NULL DEFAULT 0 AFTER `SpellVisualKitID`, + CHANGE `NextLineID` `NextConversationLineID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `AdditionalDuration`, + CHANGE `Unk1` `AnimKitID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `NextConversationLineID`, + CHANGE `Yell` `SpeechType` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `AnimKitID`, + CHANGE `Unk2` `StartAnimation` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `SpeechType`, + CHANGE `Unk3` `EndAnimation` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `StartAnimation`; + +ALTER TABLE `creature_display_info` + MODIFY `SizeClass` tinyint(4) NOT NULL DEFAULT 0 AFTER `NPCSoundID`, + MODIFY `ExtendedDisplayInfoID` int(11) NOT NULL DEFAULT 0 AFTER `Gender`, + MODIFY `PortraitTextureFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `ExtendedDisplayInfoID`, + CHANGE `PlayerModelScale` `PlayerOverrideScale` float NOT NULL DEFAULT 0 AFTER `SoundID`, + MODIFY `PortraitCreatureDisplayInfoID` int(11) NOT NULL DEFAULT 0 AFTER `PlayerOverrideScale`, + CHANGE `UnarmedWeaponSubclass` `UnarmedWeaponType` tinyint(4) NOT NULL DEFAULT 0 AFTER `AnimReplacementSetID`, + MODIFY `StateSpellVisualKitID` int(11) NOT NULL DEFAULT 0 AFTER `UnarmedWeaponType`, + CHANGE `InstanceOtherPlayerPetScale` `PetInstanceScale` float NOT NULL DEFAULT 0 AFTER `StateSpellVisualKitID`, + CHANGE `MountSpellVisualKitID` `MountPoofSpellVisualKitID` int(11) NOT NULL DEFAULT 0 AFTER `PetInstanceScale`, + CHANGE `TextureVariation1` `TextureVariationFileDataID1` int(11) NOT NULL DEFAULT 0 AFTER `MountPoofSpellVisualKitID`, + CHANGE `TextureVariation2` `TextureVariationFileDataID2` int(11) NOT NULL DEFAULT 0 AFTER `TextureVariationFileDataID1`, + CHANGE `TextureVariation3` `TextureVariationFileDataID3` int(11) NOT NULL DEFAULT 0 AFTER `TextureVariationFileDataID2`; + +ALTER TABLE `creature_display_info_extra` + CHANGE `FileDataID` `BakeMaterialResourcesID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `HDFileDataID` `HDBakeMaterialResourcesID` int(11) NOT NULL DEFAULT 0 AFTER `BakeMaterialResourcesID`, + MODIFY `DisplayRaceID` tinyint(4) NOT NULL DEFAULT 0 AFTER `HDBakeMaterialResourcesID`, + MODIFY `DisplaySexID` tinyint(4) NOT NULL DEFAULT 0 AFTER `DisplayRaceID`, + MODIFY `DisplayClassID` tinyint(4) NOT NULL DEFAULT 0 AFTER `DisplaySexID`, + MODIFY `SkinID` tinyint(4) NOT NULL DEFAULT 0 AFTER `DisplayClassID`, + MODIFY `FaceID` tinyint(4) NOT NULL DEFAULT 0 AFTER `SkinID`, + MODIFY `HairStyleID` tinyint(4) NOT NULL DEFAULT 0 AFTER `FaceID`, + MODIFY `HairColorID` tinyint(4) NOT NULL DEFAULT 0 AFTER `HairStyleID`, + MODIFY `FacialHairID` tinyint(4) NOT NULL DEFAULT 0 AFTER `HairColorID`, + MODIFY `Flags` tinyint(4) NOT NULL DEFAULT 0 AFTER `CustomDisplayOption3`; + +ALTER TABLE `creature_family` + CHANGE `IconFileDataID` `IconFileID` int(11) NOT NULL DEFAULT 0 AFTER `MaxScale`, + MODIFY `SkillLine1` smallint(6) NOT NULL DEFAULT 0 AFTER `IconFileID`, + MODIFY `SkillLine2` smallint(6) NOT NULL DEFAULT 0 AFTER `SkillLine1`, + MODIFY `PetFoodMask` smallint(6) NOT NULL DEFAULT 0 AFTER `SkillLine2`, + MODIFY `MinScaleLevel` tinyint(4) NOT NULL DEFAULT 0 AFTER `PetFoodMask`, + MODIFY `MaxScaleLevel` tinyint(4) NOT NULL DEFAULT 0 AFTER `MinScaleLevel`, + MODIFY `PetTalentType` tinyint(4) NOT NULL DEFAULT 0 AFTER `MaxScaleLevel`; + +ALTER TABLE `creature_model_data` + CHANGE `GeoBoxMin1` `GeoBox1` float NOT NULL DEFAULT 0 AFTER `MountHeight`, + CHANGE `GeoBoxMin2` `GeoBox2` float NOT NULL DEFAULT 0 AFTER `GeoBox1`, + CHANGE `GeoBoxMin3` `GeoBox3` float NOT NULL DEFAULT 0 AFTER `GeoBox2`, + CHANGE `GeoBoxMax1` `GeoBox4` float NOT NULL DEFAULT 0 AFTER `GeoBox3`, + CHANGE `GeoBoxMax2` `GeoBox5` float NOT NULL DEFAULT 0 AFTER `GeoBox4`, + CHANGE `GeoBoxMax3` `GeoBox6` float NOT NULL DEFAULT 0 AFTER `GeoBox5`, + CHANGE `FootstepEffectID` `FootstepCameraEffectID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `FoleyMaterialID`, + CHANGE `DeathThudEffectID` `DeathThudCameraEffectID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `FootstepCameraEffectID`; + +ALTER TABLE `criteria` + MODIFY `StartAsset` int(11) NOT NULL DEFAULT 0 AFTER `Asset`, + MODIFY `FailAsset` int(11) NOT NULL DEFAULT 0 AFTER `StartAsset`, + MODIFY `EligibilityWorldStateID` smallint(6) NOT NULL DEFAULT 0 AFTER `StartTimer`, + MODIFY `EligibilityWorldStateValue` tinyint(4) NOT NULL DEFAULT 0 AFTER `Flags`; + +ALTER TABLE `criteria_tree` + MODIFY `Amount` int(11) NOT NULL DEFAULT 0 AFTER `Description`, + MODIFY `Flags` smallint(6) NOT NULL DEFAULT 0 AFTER `Amount`, + MODIFY `Operator` tinyint(4) NOT NULL DEFAULT 0 AFTER `Flags`; + +ALTER TABLE `currency_types` CHANGE `InventoryIconFileDataID` `InventoryIconFileID` int(11) NOT NULL DEFAULT 0 AFTER `Quality`; + +ALTER TABLE `curve` CHANGE `Unused` `Flags` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `Type`; + +ALTER TABLE `curve_point` + CHANGE `X` `PosX` float NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `Y` `PosY` float NOT NULL DEFAULT 0 AFTER `PosX`, + CHANGE `Index` `OrderIndex` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `CurveID`; + +ALTER TABLE `destructible_model_data` + CHANGE `StateDamagedDisplayID` `State0Wmo` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `StateDestroyedDisplayID` `State1Wmo` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `State0Wmo`, + CHANGE `StateRebuildingDisplayID` `State2Wmo` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `State1Wmo`, + CHANGE `StateSmokeDisplayID` `State3Wmo` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `State2Wmo`, + CHANGE `StateDamagedImpactEffectDoodadSet` `State0ImpactEffectDoodadSet` tinyint(4) NOT NULL DEFAULT 0 AFTER `HealEffectSpeed`, + CHANGE `StateDamagedAmbientDoodadSet` `State0AmbientDoodadSet` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `State0ImpactEffectDoodadSet`, + CHANGE `StateDamagedNameSet` `State0NameSet` tinyint(4) NOT NULL DEFAULT 0 AFTER `State0AmbientDoodadSet`, + CHANGE `StateDestroyedDestructionDoodadSet` `State1DestructionDoodadSet` tinyint(4) NOT NULL DEFAULT 0 AFTER `State0NameSet`, + CHANGE `StateDestroyedImpactEffectDoodadSet` `State1ImpactEffectDoodadSet` tinyint(4) NOT NULL DEFAULT 0 AFTER `State1DestructionDoodadSet`, + CHANGE `StateDestroyedAmbientDoodadSet` `State1AmbientDoodadSet` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `State1ImpactEffectDoodadSet`, + CHANGE `StateDestroyedNameSet` `State1NameSet` tinyint(4) NOT NULL DEFAULT 0 AFTER `State1AmbientDoodadSet`, + CHANGE `StateRebuildingDestructionDoodadSet` `State2DestructionDoodadSet` tinyint(4) NOT NULL DEFAULT 0 AFTER `State1NameSet`, + CHANGE `StateRebuildingImpactEffectDoodadSet` `State2ImpactEffectDoodadSet` tinyint(4) NOT NULL DEFAULT 0 AFTER `State2DestructionDoodadSet`, + CHANGE `StateRebuildingAmbientDoodadSet` `State2AmbientDoodadSet` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `State2ImpactEffectDoodadSet`, + CHANGE `StateRebuildingNameSet` `State2NameSet` tinyint(4) NOT NULL DEFAULT 0 AFTER `State2AmbientDoodadSet`, + CHANGE `StateSmokeInitDoodadSet` `State3InitDoodadSet` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `State2NameSet`, + CHANGE `StateSmokeAmbientDoodadSet` `State3AmbientDoodadSet` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `State3InitDoodadSet`, + CHANGE `StateSmokeNameSet` `State3NameSet` tinyint(4) NOT NULL DEFAULT 0 AFTER `State3AmbientDoodadSet`; + +ALTER TABLE `difficulty` CHANGE `ItemBonusTreeModID` `ItemContext` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ToggleDifficultyID`; + +ALTER TABLE `dungeon_encounter` + MODIFY `CreatureDisplayID` int(11) NOT NULL DEFAULT 0 AFTER `Name`, + MODIFY `MapID` smallint(6) NOT NULL DEFAULT 0 AFTER `CreatureDisplayID`, + MODIFY `DifficultyID` tinyint(4) NOT NULL DEFAULT 0 AFTER `MapID`, + MODIFY `Bit` tinyint(4) NOT NULL DEFAULT 0 AFTER `DifficultyID`, + CHANGE `TextureFileDataID` `SpellIconFileID` int(11) NOT NULL DEFAULT 0 AFTER `OrderIndex`; + +ALTER TABLE `durability_quality` CHANGE `QualityMod` `Data` float NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `emotes` + MODIFY `EmoteFlags` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `EmoteSlashCommand`, + MODIFY `AnimID` smallint(6) NOT NULL DEFAULT 0 AFTER `SpellVisualKitID`, + MODIFY `ClassMask` int(11) NOT NULL DEFAULT 0 AFTER `EmoteSpecProc`, + CHANGE `EmoteSoundID` `EventSoundID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `EmoteSpecProcParam`; + +DROP TABLE IF EXISTS `emotes_text_locale`; + +ALTER TABLE `emotes_text_sound` + CHANGE `RaceId` `RaceID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `SexId` `SexID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `RaceID`, + CHANGE `ClassId` `ClassID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `SexID`, + CHANGE `SoundId` `SoundID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ClassID`, + CHANGE `EmotesTextId` `EmotesTextID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `SoundID`; + +ALTER TABLE `faction` + MODIFY `ReputationRaceMask1` bigint(20) NOT NULL DEFAULT 0 FIRST , + MODIFY `ReputationRaceMask2` bigint(20) NOT NULL DEFAULT 0 AFTER `ReputationRaceMask1`, + MODIFY `ReputationRaceMask3` bigint(20) NOT NULL DEFAULT 0 AFTER `ReputationRaceMask2`, + MODIFY `ReputationRaceMask4` bigint(20) NOT NULL DEFAULT 0 AFTER `ReputationRaceMask3`, + CHANGE `ParentFactionModIn` `ParentFactionMod1` float NOT NULL DEFAULT 0 AFTER `ReputationBase4`, + CHANGE `ParentFactionModOut` `ParentFactionMod2` float NOT NULL DEFAULT 0 AFTER `ParentFactionMod1`, + MODIFY `ReputationMax1` int(11) NOT NULL DEFAULT 0 AFTER `ParentFactionMod2`, + MODIFY `ReputationMax2` int(11) NOT NULL DEFAULT 0 AFTER `ReputationMax1`, + MODIFY `ReputationMax3` int(11) NOT NULL DEFAULT 0 AFTER `ReputationMax2`, + MODIFY `ReputationMax4` int(11) NOT NULL DEFAULT 0 AFTER `ReputationMax3`, + MODIFY `ReputationClassMask1` smallint(6) NOT NULL DEFAULT 0 AFTER `ReputationIndex`, + MODIFY `ReputationClassMask2` smallint(6) NOT NULL DEFAULT 0 AFTER `ReputationClassMask1`, + MODIFY `ReputationClassMask3` smallint(6) NOT NULL DEFAULT 0 AFTER `ReputationClassMask2`, + MODIFY `ReputationClassMask4` smallint(6) NOT NULL DEFAULT 0 AFTER `ReputationClassMask3`, + CHANGE `ParentFactionCapIn` `ParentFactionCap1` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ParagonFactionID`, + CHANGE `ParentFactionCapOut` `ParentFactionCap2` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ParentFactionCap1`; + +ALTER TABLE `faction_template` + CHANGE `Friends1` `Friend1` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Enemies4`, + CHANGE `Friends2` `Friend2` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Friend1`, + CHANGE `Friends3` `Friend3` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Friend2`, + CHANGE `Friends4` `Friend4` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Friend3`, + CHANGE `Mask` `FactionGroup` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `Friend4`, + CHANGE `FriendMask` `FriendGroup` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `FactionGroup`, + CHANGE `EnemyMask` `EnemyGroup` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `FriendGroup`; + +ALTER TABLE `gameobjects` + CHANGE `PositionX` `PosX` float NOT NULL DEFAULT 0 AFTER `Name`, + CHANGE `PositionY` `PosY` float NOT NULL DEFAULT 0 AFTER `PosX`, + CHANGE `PositionZ` `PosZ` float NOT NULL DEFAULT 0 AFTER `PosY`, + CHANGE `RotationX` `Rot1` float NOT NULL DEFAULT 0 AFTER `PosZ`, + CHANGE `RotationY` `Rot2` float NOT NULL DEFAULT 0 AFTER `Rot1`, + CHANGE `RotationZ` `Rot3` float NOT NULL DEFAULT 0 AFTER `Rot2`, + CHANGE `RotationW` `Rot4` float NOT NULL DEFAULT 0 AFTER `Rot3`, + CHANGE `Size` `Scale` float NOT NULL DEFAULT 0 AFTER `Rot4`, + CHANGE `Data1` `PropValue1` int(11) NOT NULL DEFAULT 0 AFTER `Scale`, + CHANGE `Data2` `PropValue2` int(11) NOT NULL DEFAULT 0 AFTER `PropValue1`, + CHANGE `Data3` `PropValue3` int(11) NOT NULL DEFAULT 0 AFTER `PropValue2`, + CHANGE `Data4` `PropValue4` int(11) NOT NULL DEFAULT 0 AFTER `PropValue3`, + CHANGE `Data5` `PropValue5` int(11) NOT NULL DEFAULT 0 AFTER `PropValue4`, + CHANGE `Data6` `PropValue6` int(11) NOT NULL DEFAULT 0 AFTER `PropValue5`, + CHANGE `Data7` `PropValue7` int(11) NOT NULL DEFAULT 0 AFTER `PropValue6`, + CHANGE `Data8` `PropValue8` int(11) NOT NULL DEFAULT 0 AFTER `PropValue7`, + CHANGE `MapID` `OwnerID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `PropValue8`, + CHANGE `Type` `TypeID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `PhaseUseFlags`; + +ALTER TABLE `gameobject_display_info` + MODIFY `FileDataID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `ObjectEffectPackageID` smallint(6) NOT NULL DEFAULT 0 AFTER `OverrideNameScale`; + +ALTER TABLE `garr_ability` + MODIFY `IconFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `Description`, + CHANGE `OtherFactionGarrAbilityID` `FactionChangeGarrAbilityID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Flags`, + CHANGE `FollowerTypeID` `GarrFollowerTypeID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `GarrAbilityCategoryID`; + +ALTER TABLE `garr_building` + CHANGE `NameAlliance` `AllianceName` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `ID`, + CHANGE `NameHorde` `HordeName` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `AllianceName`, + MODIFY `HordeGameObjectID` int(11) NOT NULL DEFAULT 0 AFTER `Tooltip`, + MODIFY `AllianceGameObjectID` int(11) NOT NULL DEFAULT 0 AFTER `HordeGameObjectID`, + MODIFY `IconFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `AllianceGameObjectID`, + CHANGE `CostCurrencyID` `CurrencyTypeID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `IconFileDataID`, + CHANGE `HordeTexPrefixKitID` `HordeUiTextureKitID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `CurrencyTypeID`, + CHANGE `AllianceTexPrefixKitID` `AllianceUiTextureKitID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `HordeUiTextureKitID`, + CHANGE `AllianceActivationScenePackageID` `AllianceSceneScriptPackageID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `AllianceUiTextureKitID`, + CHANGE `HordeActivationScenePackageID` `HordeSceneScriptPackageID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `AllianceSceneScriptPackageID`, + CHANGE `FollowerRequiredGarrAbilityID` `GarrAbilityID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `HordeSceneScriptPackageID`, + CHANGE `FollowerGarrAbilityEffectID` `BonusGarrAbilityID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `GarrAbilityID`, + CHANGE `CostMoney` `GoldCost` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `BonusGarrAbilityID`, + CHANGE `Unknown` `GarrSiteID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `GoldCost`, + CHANGE `Type` `BuildingType` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `GarrSiteID`, + CHANGE `Level` `UpgradeLevel` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `BuildingType`, + CHANGE `MaxShipments` `ShipmentCapacity` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `Flags`, + CHANGE `BuildDuration` `BuildSeconds` int(11) NOT NULL DEFAULT 0 AFTER `GarrTypeID`, + CHANGE `CostCurrencyAmount` `CurrencyQty` int(11) NOT NULL DEFAULT 0 AFTER `BuildSeconds`, + CHANGE `BonusAmount` `MaxAssignments` int(11) NOT NULL DEFAULT 0 AFTER `CurrencyQty`; + +ALTER TABLE `garr_building_locale` + CHANGE `NameAlliance_lang` `AllianceName_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `locale`, + CHANGE `NameHorde_lang` `HordeName_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `AllianceName_lang`; + +ALTER TABLE `garr_building_plot_inst` + CHANGE `LandmarkOffsetX` `MapOffsetX` float NOT NULL DEFAULT 0 FIRST, + CHANGE `LandmarkOffsetY` `MapOffsetY` float NOT NULL DEFAULT 0 AFTER `MapOffsetX`; + +ALTER TABLE `garr_class_spec` + CHANGE `NameMale` `ClassSpec` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL FIRST, + CHANGE `NameFemale` `ClassSpecMale` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `ClassSpec`, + CHANGE `NameGenderless` `ClassSpecFemale` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `ClassSpecMale`, + CHANGE `ClassAtlasID` `UiTextureAtlasMemberID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ClassSpecFemale`, + CHANGE `Limit` `FollowerClassLimit` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `GarrFollItemSetID`; + +ALTER TABLE `garr_class_spec_locale` + CHANGE `NameMale_lang` `ClassSpec_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `locale`, + CHANGE `NameFemale_lang` `ClassSpecMale_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `ClassSpec_lang`, + CHANGE `NameGenderless_lang` `ClassSpecFemale_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `ClassSpecMale_lang`; + +ALTER TABLE `garr_follower` + CHANGE `Name` `TitleName` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `AllianceSourceText`, + MODIFY `HordeCreatureID` int(11) NOT NULL DEFAULT 0 AFTER `TitleName`, + MODIFY `AllianceCreatureID` int(11) NOT NULL DEFAULT 0 AFTER `HordeCreatureID`, + CHANGE `HordePortraitIconID` `HordeIconFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `AllianceCreatureID`, + CHANGE `AlliancePortraitIconID` `AllianceIconFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `HordeIconFileDataID`, + CHANGE `HordeAddedBroadcastTextID` `HordeSlottingBroadcastTextID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `AllianceIconFileDataID`, + CHANGE `AllianceAddedBroadcastTextID` `AllySlottingBroadcastTextID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `HordeSlottingBroadcastTextID`, + CHANGE `HordeListPortraitTextureKitID` `HordeUITextureKitID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemLevelArmor`, + CHANGE `AllianceListPortraitTextureKitID` `AllianceUITextureKitID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `HordeUITextureKitID`, + CHANGE `FollowerTypeID` `GarrFollowerTypeID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `AllianceUITextureKitID`, + CHANGE `HordeUiAnimRaceInfoID` `HordeGarrFollRaceID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `GarrFollowerTypeID`, + CHANGE `AllianceUiAnimRaceInfoID` `AllianceGarrFollRaceID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `HordeGarrFollRaceID`, + CHANGE `Level` `FollowerLevel` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `AllianceGarrClassSpecID`, + CHANGE `Unknown1` `Gender` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `FollowerLevel`, + CHANGE `Unknown2` `HordeSourceTypeEnum` tinyint(4) NOT NULL DEFAULT 0 AFTER `Flags`, + CHANGE `Unknown3` `AllianceSourceTypeEnum` tinyint(4) NOT NULL DEFAULT 0 AFTER `HordeSourceTypeEnum`, + CHANGE `MaxDurability` `Vitality` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `GarrTypeID`, + CHANGE `Class` `ChrClassID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `Vitality`, + CHANGE `HordeFlavorTextGarrStringID` `HordeFlavorGarrStringID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ChrClassID`, + CHANGE `AllianceFlavorTextGarrStringID` `AllianceFlavorGarrStringID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `HordeFlavorGarrStringID`; + +ALTER TABLE `garr_follower_locale` CHANGE `Name_lang` `TitleName_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `AllianceSourceText_lang`; + +ALTER TABLE `garr_plot` + CHANGE `AllianceConstructionGameObjectID` `AllianceConstructObjID` int(11) NOT NULL DEFAULT 0 AFTER `Name`, + CHANGE `HordeConstructionGameObjectID` `HordeConstructObjID` int(11) NOT NULL DEFAULT 0 AFTER `AllianceConstructObjID`, + CHANGE `GarrPlotUICategoryID` `UiCategoryID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `HordeConstructObjID`, + CHANGE `MinCount` `UpgradeRequirement1` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Flags`, + CHANGE `MaxCount` `UpgradeRequirement2` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `UpgradeRequirement1`; + +DROP TABLE IF EXISTS `garr_plot_instance_locale`; + +ALTER TABLE `garr_site_level` + CHANGE `TownHallX` `TownHallUiPosX` float NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `TownHallY` `TownHallUiPosY` float NOT NULL DEFAULT 0 AFTER `TownHallUiPosX`, + CHANGE `SiteID` `UiTextureKitID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `MapID`, + CHANGE `MovieID` `UpgradeMovieID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `UiTextureKitID`, + CHANGE `UpgradeResourceCost` `UpgradeCost` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `UpgradeMovieID`, + CHANGE `UpgradeMoneyCost` `UpgradeGoldCost` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `UpgradeCost`, + CHANGE `Level` `GarrLevel` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `UpgradeGoldCost`, + CHANGE `UITextureKitID` `GarrSiteID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `GarrLevel`, + CHANGE `Level2` `MaxBuildingLevel` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `GarrSiteID`; + +ALTER TABLE `garr_site_level_plot_inst` + CHANGE `LandmarkX` `UiMarkerPosX` float NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `LandmarkY` `UiMarkerPosY` float NOT NULL DEFAULT 0 AFTER `UiMarkerPosX`, + CHANGE `Unknown` `UiMarkerSize` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `GarrPlotInstanceID`; + +ALTER TABLE `gem_properties` CHANGE `EnchantID` `EnchantId` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Type`; + +ALTER TABLE `glyph_bindable_spell` + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `GlyphPropertiesID` smallint(6) NOT NULL DEFAULT 0 AFTER `SpellID`; + +ALTER TABLE `glyph_properties` CHANGE `Type` `GlyphType` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `SpellIconID`; + +ALTER TABLE `guild_perk_spells` MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `heirloom` + MODIFY `ItemID` int(11) NOT NULL DEFAULT 0 AFTER `SourceText`, + CHANGE `OldItem1` `LegacyItemID` int(11) NOT NULL DEFAULT 0 AFTER `ItemID`, + CHANGE `OldItem2` `LegacyUpgradedItemID` int(11) NOT NULL DEFAULT 0 AFTER `LegacyItemID`, + CHANGE `NextDifficultyItemID` `StaticUpgradedItemID` int(11) NOT NULL DEFAULT 0 AFTER `LegacyUpgradedItemID`, + MODIFY `UpgradeItemID1` int(11) NOT NULL DEFAULT 0 AFTER `StaticUpgradedItemID`, + MODIFY `UpgradeItemID2` int(11) NOT NULL DEFAULT 0 AFTER `UpgradeItemID1`, + MODIFY `UpgradeItemID3` int(11) NOT NULL DEFAULT 0 AFTER `UpgradeItemID2`, + CHANGE `ItemBonusListID1` `UpgradeItemBonusListID1` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `UpgradeItemID3`, + CHANGE `ItemBonusListID2` `UpgradeItemBonusListID2` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `UpgradeItemBonusListID1`, + CHANGE `ItemBonusListID3` `UpgradeItemBonusListID3` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `UpgradeItemBonusListID2`, + CHANGE `Source` `SourceTypeEnum` tinyint(4) NOT NULL DEFAULT 0 AFTER `Flags`; + +ALTER TABLE `import_price_armor` + CHANGE `ClothFactor` `ClothModifier` float NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `LeatherFactor` `LeatherModifier` float NOT NULL DEFAULT 0 AFTER `ClothModifier`, + CHANGE `MailFactor` `ChainModifier` float NOT NULL DEFAULT 0 AFTER `LeatherModifier`, + CHANGE `PlateFactor` `PlateModifier` float NOT NULL DEFAULT 0 AFTER `ChainModifier`; + +ALTER TABLE `import_price_quality` CHANGE `Factor` `Data` float NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `import_price_shield` CHANGE `Factor` `Data` float NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `import_price_weapon` CHANGE `Factor` `Data` float NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `item` + CHANGE `FileDataID` `IconFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `Class` `ClassID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `IconFileDataID`, + CHANGE `SubClass` `SubclassID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ClassID`, + CHANGE `SoundOverrideSubclass` `SoundOverrideSubclassID` tinyint(4) NOT NULL DEFAULT 0 AFTER `SubclassID`, + MODIFY `Material` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `SoundOverrideSubclassID`, + CHANGE `Sheath` `SheatheType` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `InventoryType`, + CHANGE `GroupSoundsID` `ItemGroupSoundsID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `SheatheType`; + +ALTER TABLE `item_appearance` + CHANGE `DisplayID` `ItemDisplayInfoID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `IconFileDataID` `DefaultIconFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `ItemDisplayInfoID`, + CHANGE `UIOrder` `UiOrder` int(11) NOT NULL DEFAULT 0 AFTER `DefaultIconFileDataID`, + CHANGE `ObjectComponentSlot` `DisplayType` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `UiOrder`; + +ALTER TABLE `item_armor_quality` + CHANGE `QualityMod1` `Qualitymod1` float NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `QualityMod2` `Qualitymod2` float NOT NULL DEFAULT 0 AFTER `Qualitymod1`, + CHANGE `QualityMod3` `Qualitymod3` float NOT NULL DEFAULT 0 AFTER `Qualitymod2`, + CHANGE `QualityMod4` `Qualitymod4` float NOT NULL DEFAULT 0 AFTER `Qualitymod3`, + CHANGE `QualityMod5` `Qualitymod5` float NOT NULL DEFAULT 0 AFTER `Qualitymod4`, + CHANGE `QualityMod6` `Qualitymod6` float NOT NULL DEFAULT 0 AFTER `Qualitymod5`, + CHANGE `QualityMod7` `Qualitymod7` float NOT NULL DEFAULT 0 AFTER `Qualitymod6`, + MODIFY `ItemLevel` smallint(6) NOT NULL DEFAULT 0 AFTER `Qualitymod7`; + +ALTER TABLE `item_armor_total` + CHANGE `Value1` `Cloth` float NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `Value2` `Leather` float NOT NULL DEFAULT 0 AFTER `Cloth`, + CHANGE `Value3` `Mail` float NOT NULL DEFAULT 0 AFTER `Leather`, + CHANGE `Value4` `Plate` float NOT NULL DEFAULT 0 AFTER `Mail`, + MODIFY `ItemLevel` smallint(6) NOT NULL DEFAULT 0 AFTER `Plate`; + +ALTER TABLE `item_bonus` + CHANGE `BonusListID` `ParentItemBonusListID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Value3`, + CHANGE `Index` `OrderIndex` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `Type`; + +ALTER TABLE `item_bonus_list_level_delta` CHANGE `Delta` `ItemLevelDelta` smallint(6) NOT NULL DEFAULT 0 FIRST; + +ALTER TABLE `item_bonus_tree_node` + CHANGE `SubTreeID` `ChildItemBonusTreeID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `BonusListID` `ChildItemBonusListID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ChildItemBonusTreeID`, + CHANGE `ItemLevelSelectorID` `ChildItemLevelSelectorID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ChildItemBonusListID`, + CHANGE `BonusTreeModID` `ItemContext` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ChildItemLevelSelectorID`, + CHANGE `BonusTreeID` `ParentItemBonusTreeID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemContext`; + +ALTER TABLE `item_child_equipment` + CHANGE `AltItemID` `ChildItemID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `AltEquipmentSlot` `ChildItemEquipSlot` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ChildItemID`, + CHANGE `ItemID` `ParentItemID` int(11) NOT NULL DEFAULT 0 AFTER `ChildItemEquipSlot`; + +ALTER TABLE `item_class` + CHANGE `Name` `ClassName` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `ID`, + CHANGE `PriceMod` `PriceModifier` float NOT NULL DEFAULT 0 AFTER `ClassName`, + CHANGE `OldEnumValue` `ClassID` tinyint(4) NOT NULL DEFAULT 0 AFTER `PriceModifier`; + +ALTER TABLE `item_class_locale` CHANGE `Name_lang` `ClassName_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `locale`; + +ALTER TABLE `item_currency_cost` CHANGE `ItemId` `ItemID` int(11) NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `item_damage_ammo` + CHANGE `DPS1` `Quality1` float NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `DPS2` `Quality2` float NOT NULL DEFAULT 0 AFTER `Quality1`, + CHANGE `DPS3` `Quality3` float NOT NULL DEFAULT 0 AFTER `Quality2`, + CHANGE `DPS4` `Quality4` float NOT NULL DEFAULT 0 AFTER `Quality3`, + CHANGE `DPS5` `Quality5` float NOT NULL DEFAULT 0 AFTER `Quality4`, + CHANGE `DPS6` `Quality6` float NOT NULL DEFAULT 0 AFTER `Quality5`, + CHANGE `DPS7` `Quality7` float NOT NULL DEFAULT 0 AFTER `Quality6`; + +ALTER TABLE `item_damage_one_hand` + CHANGE `DPS1` `Quality1` float NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `DPS2` `Quality2` float NOT NULL DEFAULT 0 AFTER `Quality1`, + CHANGE `DPS3` `Quality3` float NOT NULL DEFAULT 0 AFTER `Quality2`, + CHANGE `DPS4` `Quality4` float NOT NULL DEFAULT 0 AFTER `Quality3`, + CHANGE `DPS5` `Quality5` float NOT NULL DEFAULT 0 AFTER `Quality4`, + CHANGE `DPS6` `Quality6` float NOT NULL DEFAULT 0 AFTER `Quality5`, + CHANGE `DPS7` `Quality7` float NOT NULL DEFAULT 0 AFTER `Quality6`; + +ALTER TABLE `item_damage_one_hand_caster` + CHANGE `DPS1` `Quality1` float NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `DPS2` `Quality2` float NOT NULL DEFAULT 0 AFTER `Quality1`, + CHANGE `DPS3` `Quality3` float NOT NULL DEFAULT 0 AFTER `Quality2`, + CHANGE `DPS4` `Quality4` float NOT NULL DEFAULT 0 AFTER `Quality3`, + CHANGE `DPS5` `Quality5` float NOT NULL DEFAULT 0 AFTER `Quality4`, + CHANGE `DPS6` `Quality6` float NOT NULL DEFAULT 0 AFTER `Quality5`, + CHANGE `DPS7` `Quality7` float NOT NULL DEFAULT 0 AFTER `Quality6`; + +ALTER TABLE `item_damage_two_hand` + CHANGE `DPS1` `Quality1` float NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `DPS2` `Quality2` float NOT NULL DEFAULT 0 AFTER `Quality1`, + CHANGE `DPS3` `Quality3` float NOT NULL DEFAULT 0 AFTER `Quality2`, + CHANGE `DPS4` `Quality4` float NOT NULL DEFAULT 0 AFTER `Quality3`, + CHANGE `DPS5` `Quality5` float NOT NULL DEFAULT 0 AFTER `Quality4`, + CHANGE `DPS6` `Quality6` float NOT NULL DEFAULT 0 AFTER `Quality5`, + CHANGE `DPS7` `Quality7` float NOT NULL DEFAULT 0 AFTER `Quality6`; + +ALTER TABLE `item_damage_two_hand_caster` + CHANGE `DPS1` `Quality1` float NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `DPS2` `Quality2` float NOT NULL DEFAULT 0 AFTER `Quality1`, + CHANGE `DPS3` `Quality3` float NOT NULL DEFAULT 0 AFTER `Quality2`, + CHANGE `DPS4` `Quality4` float NOT NULL DEFAULT 0 AFTER `Quality3`, + CHANGE `DPS5` `Quality5` float NOT NULL DEFAULT 0 AFTER `Quality4`, + CHANGE `DPS6` `Quality6` float NOT NULL DEFAULT 0 AFTER `Quality5`, + CHANGE `DPS7` `Quality7` float NOT NULL DEFAULT 0 AFTER `Quality6`; + +ALTER TABLE `item_disenchant_loot` + CHANGE `MinItemLevel` `MinLevel` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `MaxItemLevel` `MaxLevel` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `MinLevel`, + CHANGE `RequiredDisenchantSkill` `SkillRequired` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `MaxLevel`, + CHANGE `ItemSubClass` `Subclass` tinyint(4) NOT NULL DEFAULT 0 AFTER `SkillRequired`, + CHANGE `ItemQuality` `Quality` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `Subclass`, + CHANGE `Expansion` `ExpansionID` tinyint(4) NOT NULL DEFAULT 0 AFTER `Quality`, + CHANGE `ItemClass` `Class` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ExpansionID`; + +ALTER TABLE `item_effect` + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `Cooldown` `CoolDownMSec` int(11) NOT NULL DEFAULT 0 AFTER `SpellID`, + CHANGE `CategoryCooldown` `CategoryCoolDownMSec` int(11) NOT NULL DEFAULT 0 AFTER `CoolDownMSec`, + CHANGE `Category` `SpellCategoryID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Charges`, + CHANGE `OrderIndex` `LegacySlotIndex` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ChrSpecializationID`, + CHANGE `Trigger` `TriggerType` tinyint(4) NOT NULL DEFAULT 0 AFTER `LegacySlotIndex`, + CHANGE `ItemID` `ParentItemID` int(11) NOT NULL DEFAULT 0 AFTER `TriggerType`; + +ALTER TABLE `item_extended_cost` + CHANGE `RequiredItem1` `ItemID1` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `RequiredItem2` `ItemID2` int(11) NOT NULL DEFAULT 0 AFTER `ItemID1`, + CHANGE `RequiredItem3` `ItemID3` int(11) NOT NULL DEFAULT 0 AFTER `ItemID2`, + CHANGE `RequiredItem4` `ItemID4` int(11) NOT NULL DEFAULT 0 AFTER `ItemID3`, + CHANGE `RequiredItem5` `ItemID5` int(11) NOT NULL DEFAULT 0 AFTER `ItemID4`, + CHANGE `RequiredCurrencyCount1` `CurrencyCount1` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemID5`, + CHANGE `RequiredCurrencyCount2` `CurrencyCount2` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `CurrencyCount1`, + CHANGE `RequiredCurrencyCount3` `CurrencyCount3` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `CurrencyCount2`, + CHANGE `RequiredCurrencyCount4` `CurrencyCount4` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `CurrencyCount3`, + CHANGE `RequiredCurrencyCount5` `CurrencyCount5` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `CurrencyCount4`, + CHANGE `RequiredItemCount1` `ItemCount1` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `CurrencyCount5`, + CHANGE `RequiredItemCount2` `ItemCount2` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemCount1`, + CHANGE `RequiredItemCount3` `ItemCount3` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemCount2`, + CHANGE `RequiredItemCount4` `ItemCount4` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemCount3`, + CHANGE `RequiredItemCount5` `ItemCount5` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemCount4`, + CHANGE `RequiredPersonalArenaRating` `RequiredArenaRating` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemCount5`, + CHANGE `RequiredCurrency1` `CurrencyID1` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `RequiredArenaRating`, + CHANGE `RequiredCurrency2` `CurrencyID2` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `CurrencyID1`, + CHANGE `RequiredCurrency3` `CurrencyID3` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `CurrencyID2`, + CHANGE `RequiredCurrency4` `CurrencyID4` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `CurrencyID3`, + CHANGE `RequiredCurrency5` `CurrencyID5` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `CurrencyID4`, + CHANGE `RequiredArenaSlot` `ArenaBracket` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `CurrencyID5`, + CHANGE `RequiredFactionId` `MinFactionID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ArenaBracket`, + CHANGE `RequiredFactionStanding` `MinReputation` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `MinFactionID`, + CHANGE `RequirementFlags` `Flags` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `MinReputation`; + +ALTER TABLE `item_level_selector` CHANGE `ItemLevel` `MinItemLevel` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `item_level_selector_quality` + CHANGE `ItemBonusListID` `QualityItemBonusListID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `Quality` tinyint(4) NOT NULL DEFAULT 0 AFTER `QualityItemBonusListID`, + CHANGE `ItemLevelSelectorQualitySetID` `ParentILSQualitySetID` smallint(6) NOT NULL DEFAULT 0 AFTER `Quality`; + +ALTER TABLE `item_level_selector_quality_set` + CHANGE `ItemLevelMin` `IlvlRare` smallint(6) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `ItemLevelMax` `IlvlEpic` smallint(6) NOT NULL DEFAULT 0 AFTER `IlvlRare`; + +ALTER TABLE `item_modified_appearance` + MODIFY `ItemID` int(11) NOT NULL DEFAULT 0 FIRST, + CHANGE `AppearanceModID` `ItemAppearanceModifierID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `AppearanceID` `ItemAppearanceID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemAppearanceModifierID`, + CHANGE `Index` `OrderIndex` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemAppearanceID`, + CHANGE `SourceType` `TransmogSourceTypeEnum` tinyint(4) NOT NULL DEFAULT 0 AFTER `OrderIndex`; + +ALTER TABLE `item_price_base` + CHANGE `ArmorFactor` `Armor` float NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `WeaponFactor` `Weapon` float NOT NULL DEFAULT 0 AFTER `Armor`; + +ALTER TABLE `item_search_name` + MODIFY `AllowableRace` bigint(20) NOT NULL DEFAULT 0 FIRST, + CHANGE `Name` `Display` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `AllowableRace`, + MODIFY `Flags1` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `Flags2` int(11) NOT NULL DEFAULT 0 AFTER `Flags1`, + MODIFY `Flags3` int(11) NOT NULL DEFAULT 0 AFTER `Flags2`, + CHANGE `Quality` `OverallQualityID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemLevel`, + CHANGE `RequiredExpansion` `ExpansionID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `OverallQualityID`, + MODIFY `RequiredLevel` tinyint(4) NOT NULL DEFAULT 0 AFTER `ExpansionID`, + CHANGE `RequiredReputationFaction` `MinFactionID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `RequiredLevel`, + CHANGE `RequiredReputationRank` `MinReputation` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `MinFactionID`, + CHANGE `RequiredSpell` `RequiredAbility` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `RequiredSkillRank`; + +ALTER TABLE `item_search_name_locale` CHANGE `Name_lang` `Display_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `locale`; + +ALTER TABLE `item_set` CHANGE `Flags` `SetFlags` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `RequiredSkill`; + +ALTER TABLE `item_sparse` + CHANGE `Name` `Display` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `AllowableRace`, + CHANGE `Name2` `Display1` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Display`, + CHANGE `Name3` `Display2` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Display1`, + CHANGE `Name4` `Display3` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Display2`, + MODIFY `Flags1` int(11) NOT NULL DEFAULT 0 AFTER `Description`, + MODIFY `Flags2` int(11) NOT NULL DEFAULT 0 AFTER `Flags1`, + MODIFY `Flags3` int(11) NOT NULL DEFAULT 0 AFTER `Flags2`, + MODIFY `Flags4` int(11) NOT NULL DEFAULT 0 AFTER `Flags3`, + CHANGE `Unk1` `PriceRandomValue` float NOT NULL DEFAULT 0 AFTER `Flags4`, + CHANGE `Unk2` `PriceVariance` float NOT NULL DEFAULT 0 AFTER `PriceRandomValue`, + CHANGE `BuyCount` `VendorStackCount` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `PriceVariance`, + CHANGE `RequiredSpell` `RequiredAbility` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `SellPrice`, + MODIFY `MaxCount` int(11) NOT NULL DEFAULT 0 AFTER `RequiredAbility`, + MODIFY `Stackable` int(11) NOT NULL DEFAULT 0 AFTER `MaxCount`, + CHANGE `ItemStatAllocation1` `StatPercentEditor1` int(11) NOT NULL DEFAULT 0 AFTER `Stackable`, + CHANGE `ItemStatAllocation2` `StatPercentEditor2` int(11) NOT NULL DEFAULT 0 AFTER `StatPercentEditor1`, + CHANGE `ItemStatAllocation3` `StatPercentEditor3` int(11) NOT NULL DEFAULT 0 AFTER `StatPercentEditor2`, + CHANGE `ItemStatAllocation4` `StatPercentEditor4` int(11) NOT NULL DEFAULT 0 AFTER `StatPercentEditor3`, + CHANGE `ItemStatAllocation5` `StatPercentEditor5` int(11) NOT NULL DEFAULT 0 AFTER `StatPercentEditor4`, + CHANGE `ItemStatAllocation6` `StatPercentEditor6` int(11) NOT NULL DEFAULT 0 AFTER `StatPercentEditor5`, + CHANGE `ItemStatAllocation7` `StatPercentEditor7` int(11) NOT NULL DEFAULT 0 AFTER `StatPercentEditor6`, + CHANGE `ItemStatAllocation8` `StatPercentEditor8` int(11) NOT NULL DEFAULT 0 AFTER `StatPercentEditor7`, + CHANGE `ItemStatAllocation9` `StatPercentEditor9` int(11) NOT NULL DEFAULT 0 AFTER `StatPercentEditor8`, + CHANGE `ItemStatAllocation10` `StatPercentEditor10` int(11) NOT NULL DEFAULT 0 AFTER `StatPercentEditor9`, + CHANGE `ItemStatSocketCostMultiplier1` `StatPercentageOfSocket1` float NOT NULL DEFAULT 0 AFTER `StatPercentEditor10`, + CHANGE `ItemStatSocketCostMultiplier2` `StatPercentageOfSocket2` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket1`, + CHANGE `ItemStatSocketCostMultiplier3` `StatPercentageOfSocket3` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket2`, + CHANGE `ItemStatSocketCostMultiplier4` `StatPercentageOfSocket4` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket3`, + CHANGE `ItemStatSocketCostMultiplier5` `StatPercentageOfSocket5` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket4`, + CHANGE `ItemStatSocketCostMultiplier6` `StatPercentageOfSocket6` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket5`, + CHANGE `ItemStatSocketCostMultiplier7` `StatPercentageOfSocket7` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket6`, + CHANGE `ItemStatSocketCostMultiplier8` `StatPercentageOfSocket8` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket7`, + CHANGE `ItemStatSocketCostMultiplier9` `StatPercentageOfSocket9` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket8`, + CHANGE `ItemStatSocketCostMultiplier10` `StatPercentageOfSocket10` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket9`, + CHANGE `RangedModRange` `ItemRange` float NOT NULL DEFAULT 0 AFTER `StatPercentageOfSocket10`, + CHANGE `ArmorDamageModifier` `QualityModifier` float NOT NULL DEFAULT 0 AFTER `BagFamily`, + CHANGE `Duration` `DurationInInventory` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `QualityModifier`, + CHANGE `StatScalingFactor` `DmgVariance` float NOT NULL DEFAULT 0 AFTER `DurationInInventory`, + CHANGE `RequiredReputationFaction` `MinFactionID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `RequiredSkillRank`, + CHANGE `ScalingStatDistribution` `ScalingStatDistributionID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemStatValue10`, + CHANGE `Delay` `ItemDelay` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ScalingStatDistributionID`, + CHANGE `PageText` `PageID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemDelay`, + CHANGE `StartQuest` `StartQuestID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `PageID`, + CHANGE `RandomProperty` `RandomSelect` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `LockID`, + CHANGE `RandomSuffix` `ItemRandomSuffixGroupID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `RandomSelect`, + CHANGE `Area` `ZoneBound` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemSet`, + CHANGE `Map` `InstanceBound` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ZoneBound`, + CHANGE `TotemCategory` `TotemCategoryID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `InstanceBound`, + CHANGE `SocketBonus` `SocketMatchEnchantmentId` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `TotemCategoryID`, + CHANGE `ItemLimitCategory` `LimitCategory` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `GemProperties`, + CHANGE `HolidayID` `RequiredHoliday` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `LimitCategory`, + CHANGE `RequiredTransmogHolidayID` `RequiredTransmogHoliday` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `RequiredHoliday`, + CHANGE `Quality` `OverallQualityID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemNameDescriptionID`, + CHANGE `RequiredHonorRank` `RequiredPVPRank` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `RequiredLevel`, + CHANGE `RequiredCityRank` `RequiredPVPMedal` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `RequiredPVPRank`, + CHANGE `RequiredReputationRank` `MinReputation` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `RequiredPVPMedal`, + CHANGE `ItemStatType1` `StatModifierBonusStat1` tinyint(4) NOT NULL DEFAULT 0 AFTER `ContainerSlots`, + CHANGE `ItemStatType2` `StatModifierBonusStat2` tinyint(4) NOT NULL DEFAULT 0 AFTER `StatModifierBonusStat1`, + CHANGE `ItemStatType3` `StatModifierBonusStat3` tinyint(4) NOT NULL DEFAULT 0 AFTER `StatModifierBonusStat2`, + CHANGE `ItemStatType4` `StatModifierBonusStat4` tinyint(4) NOT NULL DEFAULT 0 AFTER `StatModifierBonusStat3`, + CHANGE `ItemStatType5` `StatModifierBonusStat5` tinyint(4) NOT NULL DEFAULT 0 AFTER `StatModifierBonusStat4`, + CHANGE `ItemStatType6` `StatModifierBonusStat6` tinyint(4) NOT NULL DEFAULT 0 AFTER `StatModifierBonusStat5`, + CHANGE `ItemStatType7` `StatModifierBonusStat7` tinyint(4) NOT NULL DEFAULT 0 AFTER `StatModifierBonusStat6`, + CHANGE `ItemStatType8` `StatModifierBonusStat8` tinyint(4) NOT NULL DEFAULT 0 AFTER `StatModifierBonusStat7`, + CHANGE `ItemStatType9` `StatModifierBonusStat9` tinyint(4) NOT NULL DEFAULT 0 AFTER `StatModifierBonusStat8`, + CHANGE `ItemStatType10` `StatModifierBonusStat10` tinyint(4) NOT NULL DEFAULT 0 AFTER `StatModifierBonusStat9`, + CHANGE `DamageType` `DamageDamageType` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `StatModifierBonusStat10`, + CHANGE `PageMaterial` `PageMaterialID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `LanguageID`, + MODIFY `Material` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `PageMaterialID`, + CHANGE `Sheath` `SheatheType` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `Material`, + CHANGE `SocketColor1` `SocketType1` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `SheatheType`, + CHANGE `SocketColor2` `SocketType2` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `SocketType1`, + CHANGE `SocketColor3` `SocketType3` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `SocketType2`, + CHANGE `CurrencySubstitutionID` `SpellWeightCategory` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `SocketType3`, + CHANGE `CurrencySubstitutionCount` `SpellWeight` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `SpellWeightCategory`, + CHANGE `RequiredExpansion` `ExpansionID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ArtifactID`; + +ALTER TABLE `item_sparse_locale` + CHANGE `Name_lang` `Display_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `locale`, + CHANGE `Name2_lang` `Display1_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Display_lang`, + CHANGE `Name3_lang` `Display2_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Display1_lang`, + CHANGE `Name4_lang` `Display3_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Display2_lang`; + +ALTER TABLE `item_spec` CHANGE `SpecID` `SpecializationID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `item_spec_override` MODIFY `ItemID` int(11) NOT NULL DEFAULT 0 AFTER `SpecID`; + +ALTER TABLE `item_upgrade` + CHANGE `CurrencyCost` `CurrencyAmount` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `PrevItemUpgradeID` `PrerequisiteID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `CurrencyAmount`, + CHANGE `CurrencyID` `CurrencyType` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `PrerequisiteID`, + CHANGE `ItemLevelBonus` `ItemLevelIncrement` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemUpgradePathID`; + +ALTER TABLE `item_x_bonus_tree` + CHANGE `BonusTreeID` `ItemBonusTreeID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `ItemID` int(11) NOT NULL DEFAULT 0 AFTER `ItemBonusTreeID`; + +ALTER TABLE `lfg_dungeons` + MODIFY `Flags` int(11) NOT NULL DEFAULT 0 AFTER `Description`, + CHANGE `MinItemLevel` `MinGear` float NOT NULL DEFAULT 0 AFTER `Flags`, + CHANGE `LastBossJournalEncounterID` `FinalEncounterID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ScenarioID`, + CHANGE `PlayerConditionID` `RequiredPlayerConditionId` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `MentorItemLevel`, + CHANGE `Type` `TypeID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `DifficultyID`, + MODIFY `Faction` tinyint(4) NOT NULL DEFAULT 0 AFTER `TypeID`, + CHANGE `Expansion` `ExpansionLevel` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `Faction`, + CHANGE `SubType` `Subtype` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `MinCountDamage`, + CHANGE `TextureFileDataID` `IconTextureFileID` int(11) NOT NULL DEFAULT 0 AFTER `MentorCharLevel`, + CHANGE `RewardIconFileDataID` `RewardsBgTextureFileID` int(11) NOT NULL DEFAULT 0 AFTER `IconTextureFileID`, + CHANGE `ProposalTextureFileDataID` `PopupBgTextureFileID` int(11) NOT NULL DEFAULT 0 AFTER `RewardsBgTextureFileID`; + +ALTER TABLE `light` + CHANGE `PosX` `GameCoordsX` float NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `PosY` `GameCoordsY` float NOT NULL DEFAULT 0 AFTER `GameCoordsX`, + CHANGE `PosZ` `GameCoordsZ` float NOT NULL DEFAULT 0 AFTER `GameCoordsY`, + CHANGE `FalloffStart` `GameFalloffStart` float NOT NULL DEFAULT 0 AFTER `GameCoordsZ`, + CHANGE `FalloffEnd` `GameFalloffEnd` float NOT NULL DEFAULT 0 AFTER `GameFalloffStart`, + CHANGE `MapID` `ContinentID` smallint(6) NOT NULL DEFAULT 0 AFTER `GameFalloffEnd`; + +ALTER TABLE `liquid_type` + MODIFY `Color1` int(11) NOT NULL DEFAULT 0 AFTER `ParticleScale`, + MODIFY `Color2` int(11) NOT NULL DEFAULT 0 AFTER `Color1`, + CHANGE `Type` `SoundBank` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `LightID`, + CHANGE `DepthTexCount1` `FrameCountTexture1` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `MaterialID`, + CHANGE `DepthTexCount2` `FrameCountTexture2` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `FrameCountTexture1`, + CHANGE `DepthTexCount3` `FrameCountTexture3` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `FrameCountTexture2`, + CHANGE `DepthTexCount4` `FrameCountTexture4` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `FrameCountTexture3`, + CHANGE `DepthTexCount5` `FrameCountTexture5` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `FrameCountTexture4`, + CHANGE `DepthTexCount6` `FrameCountTexture6` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `FrameCountTexture5`; + +DROP TABLE IF EXISTS `liquid_type_locale`; + +ALTER TABLE `lock` + MODIFY `Index1` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `Index2` int(11) NOT NULL DEFAULT 0 AFTER `Index1`, + MODIFY `Index3` int(11) NOT NULL DEFAULT 0 AFTER `Index2`, + MODIFY `Index4` int(11) NOT NULL DEFAULT 0 AFTER `Index3`, + MODIFY `Index5` int(11) NOT NULL DEFAULT 0 AFTER `Index4`, + MODIFY `Index6` int(11) NOT NULL DEFAULT 0 AFTER `Index5`, + MODIFY `Index7` int(11) NOT NULL DEFAULT 0 AFTER `Index6`, + MODIFY `Index8` int(11) NOT NULL DEFAULT 0 AFTER `Index7`; + +ALTER TABLE `map` + CHANGE `ShortDescription` `PvpShortDescription` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `MapDescription1`, + CHANGE `LongDescription` `PvpLongDescription` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `PvpShortDescription`, + MODIFY `Flags1` int(11) NOT NULL DEFAULT 0 AFTER `PvpLongDescription`, + MODIFY `Flags2` int(11) NOT NULL DEFAULT 0 AFTER `Flags1`, + CHANGE `CorpsePosX` `CorpseX` float NOT NULL DEFAULT 0 AFTER `MinimapIconScale`, + CHANGE `CorpsePosY` `CorpseY` float NOT NULL DEFAULT 0 AFTER `CorpseX`, + MODIFY `LoadingScreenID` smallint(6) NOT NULL DEFAULT 0 AFTER `AreaTableID`, + MODIFY `TimeOfDayOverride` smallint(6) NOT NULL DEFAULT 0 AFTER `CorpseMapID`, + MODIFY `WindSettingsID` smallint(6) NOT NULL DEFAULT 0 AFTER `CosmeticParentMapID`, + CHANGE `unk5` `MapType` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `InstanceType`; + +ALTER TABLE `map_locale` + CHANGE `ShortDescription_lang` `PvpShortDescription_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `MapDescription1_lang`, + CHANGE `LongDescription_lang` `PvpLongDescription_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `PvpShortDescription_lang`; + +ALTER TABLE `map_difficulty` + CHANGE `RaidDurationType` `ResetInterval` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `DifficultyID`, + CHANGE `ItemBonusTreeModID` `ItemContext` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `Flags`, + CHANGE `Context` `ItemContextPickerID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemContext`; + +ALTER TABLE `modifier_tree` + CHANGE `Asset1` `Asset` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `Asset2` `SecondaryAsset` int(11) NOT NULL DEFAULT 0 AFTER `Asset`, + CHANGE `Unk700` `TertiaryAsset` tinyint(4) NOT NULL DEFAULT 0 AFTER `Type`, + MODIFY `Operator` tinyint(4) NOT NULL DEFAULT 0 AFTER `TertiaryAsset`, + MODIFY `Amount` tinyint(4) NOT NULL DEFAULT 0 AFTER `Operator`; + +ALTER TABLE `mount` + CHANGE `SourceDescription` `SourceText` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Description`, + CHANGE `SpellId` `SourceSpellID` int(11) NOT NULL DEFAULT 0 AFTER `SourceText`, + CHANGE `CameraPivotMultiplier` `MountFlyRideHeight` float NOT NULL DEFAULT 0 AFTER `SourceSpellID`, + CHANGE `MountTypeId` `MountTypeID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `MountFlyRideHeight`, + CHANGE `Source` `SourceTypeEnum` tinyint(4) NOT NULL DEFAULT 0 AFTER `Flags`, + CHANGE `PlayerConditionId` `PlayerConditionID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `mount_locale` CHANGE `SourceDescription_lang` `SourceText_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Description_lang`; + +ALTER TABLE `mount_capability` + CHANGE `RequiredSpell` `ReqSpellKnownID` int(11) NOT NULL DEFAULT 0 FIRST, + CHANGE `SpeedModSpell` `ModSpellAuraID` int(11) NOT NULL DEFAULT 0 AFTER `ReqSpellKnownID`, + CHANGE `RequiredRidingSkill` `ReqRidingSkill` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ModSpellAuraID`, + CHANGE `RequiredArea` `ReqAreaID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ReqRidingSkill`, + CHANGE `RequiredMap` `ReqMapID` smallint(6) NOT NULL DEFAULT 0 AFTER `ReqAreaID`, + CHANGE `RequiredAura` `ReqSpellAuraID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `mount_x_display` + CHANGE `DisplayID` `CreatureDisplayInfoID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `PlayerConditionID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `CreatureDisplayInfoID`, + MODIFY `MountID` int(11) NOT NULL DEFAULT 0 AFTER `PlayerConditionID`; + +ALTER TABLE `name_gen` CHANGE `Race` `RaceID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `Name`; + +DROP TABLE IF EXISTS `name_gen_locale`; + +ALTER TABLE `override_spell_data` + CHANGE `SpellID1` `Spells1` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `SpellID2` `Spells2` int(11) NOT NULL DEFAULT 0 AFTER `Spells1`, + CHANGE `SpellID3` `Spells3` int(11) NOT NULL DEFAULT 0 AFTER `Spells2`, + CHANGE `SpellID4` `Spells4` int(11) NOT NULL DEFAULT 0 AFTER `Spells3`, + CHANGE `SpellID5` `Spells5` int(11) NOT NULL DEFAULT 0 AFTER `Spells4`, + CHANGE `SpellID6` `Spells6` int(11) NOT NULL DEFAULT 0 AFTER `Spells5`, + CHANGE `SpellID7` `Spells7` int(11) NOT NULL DEFAULT 0 AFTER `Spells6`, + CHANGE `SpellID8` `Spells8` int(11) NOT NULL DEFAULT 0 AFTER `Spells7`, + CHANGE `SpellID9` `Spells9` int(11) NOT NULL DEFAULT 0 AFTER `Spells8`, + CHANGE `SpellID10` `Spells10` int(11) NOT NULL DEFAULT 0 AFTER `Spells9`, + CHANGE `PlayerActionbarFileDataID` `PlayerActionBarFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `Spells10`; + +ALTER TABLE `player_condition` + CHANGE `Unknown1` `CurrentPvpFaction` tinyint(4) NOT NULL DEFAULT 0 AFTER `ReputationLogic`, + CHANGE `MainHandItemSubclassMask` `WeaponSubclassMask` int(11) NOT NULL DEFAULT 0 AFTER `ModifierTreeID`, + MODIFY `AuraSpellID1` int(11) NOT NULL DEFAULT 0 AFTER `Time2`, + MODIFY `AuraSpellID2` int(11) NOT NULL DEFAULT 0 AFTER `AuraSpellID1`, + MODIFY `AuraSpellID3` int(11) NOT NULL DEFAULT 0 AFTER `AuraSpellID2`, + MODIFY `AuraSpellID4` int(11) NOT NULL DEFAULT 0 AFTER `AuraSpellID3`, + CHANGE `AuraCount1` `AuraStacks1` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `AuraSpellID4`, + CHANGE `AuraCount2` `AuraStacks2` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `AuraStacks1`, + CHANGE `AuraCount3` `AuraStacks3` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `AuraStacks2`, + CHANGE `AuraCount4` `AuraStacks4` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `AuraStacks3`; + +ALTER TABLE `power_display` CHANGE `PowerType` `ActualType` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `GlobalStringBaseTag`; + +ALTER TABLE `power_type` + CHANGE `PowerTypeToken` `NameGlobalStringTag` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `ID`, + CHANGE `PowerCostToken` `CostGlobalStringTag` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `NameGlobalStringTag`, + CHANGE `RegenerationPeace` `RegenPeace` float NOT NULL DEFAULT 0 AFTER `CostGlobalStringTag`, + CHANGE `RegenerationCombat` `RegenCombat` float NOT NULL DEFAULT 0 AFTER `RegenPeace`, + CHANGE `MaxPower` `MaxBasePower` smallint(6) NOT NULL DEFAULT 0 AFTER `RegenCombat`, + CHANGE `RegenerationDelay` `RegenInterruptTimeMS` smallint(6) NOT NULL DEFAULT 0 AFTER `MaxBasePower`, + MODIFY `Flags` smallint(6) NOT NULL DEFAULT 0 AFTER `RegenInterruptTimeMS`, + MODIFY `PowerTypeEnum` tinyint(4) NOT NULL DEFAULT 0 AFTER `Flags`, + CHANGE `RegenerationMin` `MinPower` tinyint(4) NOT NULL DEFAULT 0 AFTER `PowerTypeEnum`, + CHANGE `RegenerationCenter` `CenterPower` tinyint(4) NOT NULL DEFAULT 0 AFTER `MinPower`, + CHANGE `RegenerationMax` `DefaultPower` tinyint(4) NOT NULL DEFAULT 0 AFTER `CenterPower`, + CHANGE `UIModifier` `DisplayModifier` tinyint(4) NOT NULL DEFAULT 0 AFTER `DefaultPower`; + +ALTER TABLE `prestige_level_info` + CHANGE `PrestigeText` `Name` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `ID`, + CHANGE `IconID` `BadgeTextureFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `Name`; + +ALTER TABLE `prestige_level_info_locale` CHANGE `PrestigeText_lang` `Name_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `locale`; + +ALTER TABLE `pvp_difficulty` CHANGE `BracketID` `RangeIndex` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `pvp_item` + MODIFY `ItemID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `ItemLevelBonus` `ItemLevelDelta` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemID`; + +ALTER TABLE `pvp_reward` + MODIFY `HonorLevel` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `Prestige` `PrestigeLevel` int(11) NOT NULL DEFAULT 0 AFTER `HonorLevel`, + MODIFY `RewardPackID` int(11) NOT NULL DEFAULT 0 AFTER `PrestigeLevel`; + +ALTER TABLE `pvp_talent` + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `Description`, + MODIFY `OverridesSpellID` int(11) NOT NULL DEFAULT 0 AFTER `SpellID`, + CHANGE `ExtraSpellID` `ActionBarSpellID` int(11) NOT NULL DEFAULT 0 AFTER `OverridesSpellID`, + MODIFY `TierID` int(11) NOT NULL DEFAULT 0 AFTER `ActionBarSpellID`, + MODIFY `ColumnIndex` int(11) NOT NULL DEFAULT 0 AFTER `TierID`, + MODIFY `Flags` int(11) NOT NULL DEFAULT 0 AFTER `ColumnIndex`, + MODIFY `ClassID` int(11) NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `SpecID` int(11) NOT NULL DEFAULT 0 AFTER `ClassID`, + MODIFY `Role` int(11) NOT NULL DEFAULT 0 AFTER `SpecID`; + +ALTER TABLE `pvp_talent_unlock` + MODIFY `TierID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `ColumnIndex` int(11) NOT NULL DEFAULT 0 AFTER `TierID`, + MODIFY `HonorLevel` int(11) NOT NULL DEFAULT 0 AFTER `ColumnIndex`; + +ALTER TABLE `quest_faction_reward` + CHANGE `QuestRewFactionValue1` `Difficulty1` smallint(6) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `QuestRewFactionValue2` `Difficulty2` smallint(6) NOT NULL DEFAULT 0 AFTER `Difficulty1`, + CHANGE `QuestRewFactionValue3` `Difficulty3` smallint(6) NOT NULL DEFAULT 0 AFTER `Difficulty2`, + CHANGE `QuestRewFactionValue4` `Difficulty4` smallint(6) NOT NULL DEFAULT 0 AFTER `Difficulty3`, + CHANGE `QuestRewFactionValue5` `Difficulty5` smallint(6) NOT NULL DEFAULT 0 AFTER `Difficulty4`, + CHANGE `QuestRewFactionValue6` `Difficulty6` smallint(6) NOT NULL DEFAULT 0 AFTER `Difficulty5`, + CHANGE `QuestRewFactionValue7` `Difficulty7` smallint(6) NOT NULL DEFAULT 0 AFTER `Difficulty6`, + CHANGE `QuestRewFactionValue8` `Difficulty8` smallint(6) NOT NULL DEFAULT 0 AFTER `Difficulty7`, + CHANGE `QuestRewFactionValue9` `Difficulty9` smallint(6) NOT NULL DEFAULT 0 AFTER `Difficulty8`, + CHANGE `QuestRewFactionValue10` `Difficulty10` smallint(6) NOT NULL DEFAULT 0 AFTER `Difficulty9`; + +ALTER TABLE `quest_money_reward` + CHANGE `Money1` `Difficulty1` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `Money2` `Difficulty2` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty1`, + CHANGE `Money3` `Difficulty3` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty2`, + CHANGE `Money4` `Difficulty4` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty3`, + CHANGE `Money5` `Difficulty5` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty4`, + CHANGE `Money6` `Difficulty6` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty5`, + CHANGE `Money7` `Difficulty7` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty6`, + CHANGE `Money8` `Difficulty8` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty7`, + CHANGE `Money9` `Difficulty9` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty8`, + CHANGE `Money10` `Difficulty10` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty9`; + +ALTER TABLE `quest_package_item` + MODIFY `ItemID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `QuestPackageID` `PackageID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemID`, + CHANGE `FilterType` `DisplayType` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `PackageID`, + CHANGE `ItemCount` `ItemQuantity` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `DisplayType`; + +ALTER TABLE `quest_sort` CHANGE `SortOrder` `UiOrderIndex` tinyint(4) NOT NULL DEFAULT 0 AFTER `SortName`; + +ALTER TABLE `quest_xp` + CHANGE `Exp1` `Difficulty1` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `Exp2` `Difficulty2` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty1`, + CHANGE `Exp3` `Difficulty3` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty2`, + CHANGE `Exp4` `Difficulty4` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty3`, + CHANGE `Exp5` `Difficulty5` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty4`, + CHANGE `Exp6` `Difficulty6` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty5`, + CHANGE `Exp7` `Difficulty7` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty6`, + CHANGE `Exp8` `Difficulty8` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty7`, + CHANGE `Exp9` `Difficulty9` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty8`, + CHANGE `Exp10` `Difficulty10` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Difficulty9`; + +ALTER TABLE `rand_prop_points` + CHANGE `EpicPropertiesPoints1` `Epic1` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `EpicPropertiesPoints2` `Epic2` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Epic1`, + CHANGE `EpicPropertiesPoints3` `Epic3` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Epic2`, + CHANGE `EpicPropertiesPoints4` `Epic4` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Epic3`, + CHANGE `EpicPropertiesPoints5` `Epic5` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Epic4`, + CHANGE `RarePropertiesPoints1` `Superior1` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Epic5`, + CHANGE `RarePropertiesPoints2` `Superior2` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Superior1`, + CHANGE `RarePropertiesPoints3` `Superior3` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Superior2`, + CHANGE `RarePropertiesPoints4` `Superior4` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Superior3`, + CHANGE `RarePropertiesPoints5` `Superior5` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Superior4`, + CHANGE `UncommonPropertiesPoints1` `Good1` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Superior5`, + CHANGE `UncommonPropertiesPoints2` `Good2` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Good1`, + CHANGE `UncommonPropertiesPoints3` `Good3` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Good2`, + CHANGE `UncommonPropertiesPoints4` `Good4` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Good3`, + CHANGE `UncommonPropertiesPoints5` `Good5` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Good4`; + +ALTER TABLE `reward_pack` + MODIFY `ArtifactXPDifficulty` tinyint(4) NOT NULL DEFAULT 0 AFTER `ArtifactXPMultiplier`, + CHANGE `ArtifactCategoryID` `ArtifactXPCategoryID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ArtifactXPDifficulty`, + CHANGE `TitleID` `CharTitleID` int(11) NOT NULL DEFAULT 0 AFTER `ArtifactXPCategoryID`, + CHANGE `Unused` `TreasurePickerID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `CharTitleID`; + +ALTER TABLE `reward_pack_x_item` + MODIFY `ItemID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `Amount` `ItemQuantity` int(11) NOT NULL DEFAULT 0 AFTER `ItemID`, + MODIFY `RewardPackID` int(11) NOT NULL DEFAULT 0 AFTER `ItemQuantity`; + +ALTER TABLE `ruleset_item_upgrade` MODIFY `ItemID` int(11) NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `sandbox_scaling` + MODIFY `MinLevel` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `MaxLevel` int(11) NOT NULL DEFAULT 0 AFTER `MinLevel`, + MODIFY `Flags` int(11) NOT NULL DEFAULT 0 AFTER `MaxLevel`; + +ALTER TABLE `scaling_stat_distribution` + CHANGE `ItemLevelCurveID` `PlayerLevelToItemLevelCurveID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `MinLevel` int(11) NOT NULL DEFAULT 0 AFTER `PlayerLevelToItemLevelCurveID`, + MODIFY `MaxLevel` int(11) NOT NULL DEFAULT 0 AFTER `MinLevel`; + +ALTER TABLE `scenario` ADD `AreaTableID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Name`; +ALTER TABLE `scenario` DROP `Data`; + +ALTER TABLE `scenario_step` + CHANGE `Name` `Title` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Description`, + CHANGE `PreviousStepID` `Supersedes` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ScenarioID`, + CHANGE `QuestRewardID` `RewardQuestID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Supersedes`, + CHANGE `Step` `OrderIndex` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `RewardQuestID`, + CHANGE `CriteriaTreeID` `Criteriatreeid` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Flags`, + CHANGE `BonusRequiredStepID` `RelatedStep` int(11) NOT NULL DEFAULT 0 AFTER `Criteriatreeid`; + +ALTER TABLE `scenario_step_locale` CHANGE `Name_lang` `Title_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `Description_lang`; + +ALTER TABLE `scene_script` + CHANGE `PrevScriptId` `FirstSceneScriptID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `NextScriptId` `NextSceneScriptID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `FirstSceneScriptID`; + +ALTER TABLE `skill_line` + MODIFY `CategoryID` tinyint(4) NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `CanLink` tinyint(4) NOT NULL DEFAULT 0 AFTER `CategoryID`, + CHANGE `IconFileDataID` `SpellIconFileID` int(11) NOT NULL DEFAULT 0 AFTER `CanLink`; + +ALTER TABLE `skill_line_ability` + MODIFY `RaceMask` bigint(20) NOT NULL DEFAULT 0 FIRST, + CHANGE `SpellID` `Spell` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `SupercedesSpell` int(11) NOT NULL DEFAULT 0 AFTER `Spell`, + MODIFY `SkillLine` smallint(6) NOT NULL DEFAULT 0 AFTER `SupercedesSpell`, + MODIFY `TrivialSkillLineRankHigh` smallint(6) NOT NULL DEFAULT 0 AFTER `SkillLine`, + MODIFY `TrivialSkillLineRankLow` smallint(6) NOT NULL DEFAULT 0 AFTER `TrivialSkillLineRankHigh`, + MODIFY `UniqueBit` smallint(6) NOT NULL DEFAULT 0 AFTER `TrivialSkillLineRankLow`, + MODIFY `TradeSkillCategoryID` smallint(6) NOT NULL DEFAULT 0 AFTER `UniqueBit`, + MODIFY `NumSkillUps` tinyint(4) NOT NULL DEFAULT 0 AFTER `TradeSkillCategoryID`, + MODIFY `MinSkillLineRank` smallint(6) NOT NULL DEFAULT 0 AFTER `ClassMask`, + MODIFY `AcquireMethod` tinyint(4) NOT NULL DEFAULT 0 AFTER `MinSkillLineRank`, + MODIFY `Flags` tinyint(4) NOT NULL DEFAULT 0 AFTER `AcquireMethod`; + +ALTER TABLE `skill_race_class_info` + MODIFY `SkillID` smallint(6) NOT NULL DEFAULT 0 AFTER `RaceMask`, + MODIFY `SkillTierID` smallint(6) NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `Availability` tinyint(4) NOT NULL DEFAULT 0 AFTER `SkillTierID`, + MODIFY `MinLevel` tinyint(4) NOT NULL DEFAULT 0 AFTER `Availability`; + +ALTER TABLE `sound_kit` CHANGE `Unk700` `MaxInstances` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `BusOverwriteID`; + +ALTER TABLE `specialization_spells` + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `Description`, + MODIFY `OverridesSpellID` int(11) NOT NULL DEFAULT 0 AFTER `SpellID`, + CHANGE `OrderIndex` `DisplayOrder` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `SpecID`; + +ALTER TABLE `spell_aura_options` + MODIFY `ProcCharges` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `ProcTypeMask` int(11) NOT NULL DEFAULT 0 AFTER `ProcCharges`, + MODIFY `ProcCategoryRecovery` int(11) NOT NULL DEFAULT 0 AFTER `ProcTypeMask`, + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `ProcChance`; + +ALTER TABLE `spell_aura_restrictions` + MODIFY `CasterAuraSpell` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `TargetAuraSpell` int(11) NOT NULL DEFAULT 0 AFTER `CasterAuraSpell`, + MODIFY `ExcludeCasterAuraSpell` int(11) NOT NULL DEFAULT 0 AFTER `TargetAuraSpell`, + MODIFY `ExcludeTargetAuraSpell` int(11) NOT NULL DEFAULT 0 AFTER `ExcludeCasterAuraSpell`, + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `ExcludeTargetAuraState`; + +ALTER TABLE `spell_casting_requirements` + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `MinReputation` tinyint(4) NOT NULL DEFAULT 0 AFTER `FacingCasterFlags`; + +ALTER TABLE `spell_cast_times` + CHANGE `CastTime` `Base` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `MinCastTime` `Minimum` int(11) NOT NULL DEFAULT 0 AFTER `Base`, + CHANGE `CastTimePerLevel` `PerLevel` smallint(6) NOT NULL DEFAULT 0 AFTER `Minimum`; + +ALTER TABLE `spell_categories` + MODIFY `Category` smallint(6) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `StartRecoveryCategory` smallint(6) NOT NULL DEFAULT 0 AFTER `Category`, + MODIFY `ChargeCategory` smallint(6) NOT NULL DEFAULT 0 AFTER `StartRecoveryCategory`, + MODIFY `DefenseType` tinyint(4) NOT NULL DEFAULT 0 AFTER `DifficultyID`, + MODIFY `DispelType` tinyint(4) NOT NULL DEFAULT 0 AFTER `DefenseType`, + MODIFY `Mechanic` tinyint(4) NOT NULL DEFAULT 0 AFTER `DispelType`, + MODIFY `PreventionType` tinyint(4) NOT NULL DEFAULT 0 AFTER `Mechanic`, + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `PreventionType`; + +ALTER TABLE `spell_category` + MODIFY `Flags` tinyint(4) NOT NULL DEFAULT 0 AFTER `ChargeRecoveryTime`, + MODIFY `MaxCharges` tinyint(4) NOT NULL DEFAULT 0 AFTER `UsesPerWeek`, + CHANGE `ChargeCategoryType` `TypeMask` int(11) NOT NULL DEFAULT 0 AFTER `MaxCharges`; + +ALTER TABLE `spell_class_options` MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `spell_cooldowns` + MODIFY `CategoryRecoveryTime` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `RecoveryTime` int(11) NOT NULL DEFAULT 0 AFTER `CategoryRecoveryTime`, + MODIFY `StartRecoveryTime` int(11) NOT NULL DEFAULT 0 AFTER `RecoveryTime`, + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `DifficultyID`; + +ALTER TABLE `spell_duration` MODIFY `DurationPerLevel` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `MaxDuration`; + +ALTER TABLE `spell_effect` + MODIFY `EffectIndex` int(11) NOT NULL DEFAULT 0 AFTER `EffectBasePoints`, + MODIFY `EffectAura` int(11) NOT NULL DEFAULT 0 AFTER `EffectIndex`, + MODIFY `DifficultyID` int(11) NOT NULL DEFAULT 0 AFTER `EffectAura`, + MODIFY `EffectAuraPeriod` int(11) NOT NULL DEFAULT 0 AFTER `EffectAmplitude`, + MODIFY `EffectChainTargets` int(11) NOT NULL DEFAULT 0 AFTER `EffectChainAmplitude`, + MODIFY `EffectItemType` int(11) NOT NULL DEFAULT 0 AFTER `EffectDieSides`, + MODIFY `EffectMechanic` int(11) NOT NULL DEFAULT 0 AFTER `EffectItemType`, + MODIFY `EffectTriggerSpell` int(11) NOT NULL DEFAULT 0 AFTER `EffectRealPointsPerLevel`, + MODIFY `EffectAttributes` int(11) NOT NULL DEFAULT 0 AFTER `EffectPosFacing`, + CHANGE `PvPMultiplier` `PvpMultiplier` float NOT NULL DEFAULT 0 AFTER `BonusCoefficientFromAP`, + CHANGE `GroupSizeCoefficient` `GroupSizeBasePointsCoefficient` float NOT NULL DEFAULT 0 AFTER `ResourceCoefficient`, + CHANGE `EffectMiscValue` `EffectMiscValue1` int(11) NOT NULL DEFAULT 0 AFTER `EffectSpellClassMask4`, + CHANGE `EffectMiscValueB` `EffectMiscValue2` int(11) NOT NULL DEFAULT 0 AFTER `EffectMiscValue1`, + CHANGE `EffectRadiusIndex` `EffectRadiusIndex1` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `EffectMiscValue2`, + CHANGE `EffectRadiusMaxIndex` `EffectRadiusIndex2` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `EffectRadiusIndex1`, + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `ImplicitTarget2`; + +ALTER TABLE `spell_equipped_items` + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `EquippedItemInventoryTypeMask` `EquippedItemInvTypes` int(11) NOT NULL DEFAULT 0 AFTER `SpellID`, + CHANGE `EquippedItemSubClassMask` `EquippedItemSubclass` int(11) NOT NULL DEFAULT 0 AFTER `EquippedItemInvTypes`; + +ALTER TABLE `spell_interrupts` + MODIFY `InterruptFlags` smallint(6) NOT NULL DEFAULT 0 AFTER `DifficultyID`, + MODIFY `AuraInterruptFlags1` int(11) NOT NULL DEFAULT 0 AFTER `InterruptFlags`, + MODIFY `AuraInterruptFlags2` int(11) NOT NULL DEFAULT 0 AFTER `AuraInterruptFlags1`, + MODIFY `ChannelInterruptFlags1` int(11) NOT NULL DEFAULT 0 AFTER `AuraInterruptFlags2`, + MODIFY `ChannelInterruptFlags2` int(11) NOT NULL DEFAULT 0 AFTER `ChannelInterruptFlags1`, + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `ChannelInterruptFlags2`; + +ALTER TABLE `spell_item_enchantment` + CHANGE `EffectSpellID1` `EffectArg1` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Name`, + CHANGE `EffectSpellID2` `EffectArg2` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `EffectArg1`, + CHANGE `EffectSpellID3` `EffectArg3` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `EffectArg2`, + CHANGE `TextureFileDataID` `IconFileDataID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `TransmogCost`, + MODIFY `EffectPointsMin1` smallint(6) NOT NULL DEFAULT 0 AFTER `IconFileDataID`, + MODIFY `EffectPointsMin2` smallint(6) NOT NULL DEFAULT 0 AFTER `EffectPointsMin1`, + MODIFY `EffectPointsMin3` smallint(6) NOT NULL DEFAULT 0 AFTER `EffectPointsMin2`, + CHANGE `PlayerConditionID` `TransmogPlayerConditionID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ScalingClassRestricted`; + +ALTER TABLE `spell_item_enchantment_condition` + CHANGE `LTOperand1` `LtOperand1` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `LTOperand2` `LtOperand2` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `LtOperand1`, + CHANGE `LTOperand3` `LtOperand3` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `LtOperand2`, + CHANGE `LTOperand4` `LtOperand4` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `LtOperand3`, + CHANGE `LTOperand5` `LtOperand5` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `LtOperand4`, + CHANGE `LTOperandType1` `LtOperandType1` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `LtOperand5`, + CHANGE `LTOperandType2` `LtOperandType2` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `LtOperandType1`, + CHANGE `LTOperandType3` `LtOperandType3` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `LtOperandType2`, + CHANGE `LTOperandType4` `LtOperandType4` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `LtOperandType3`, + CHANGE `LTOperandType5` `LtOperandType5` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `LtOperandType4`, + CHANGE `RTOperandType1` `RtOperandType1` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `Operator5`, + CHANGE `RTOperandType2` `RtOperandType2` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `RtOperandType1`, + CHANGE `RTOperandType3` `RtOperandType3` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `RtOperandType2`, + CHANGE `RTOperandType4` `RtOperandType4` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `RtOperandType3`, + CHANGE `RTOperandType5` `RtOperandType5` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `RtOperandType4`, + CHANGE `RTOperand1` `RtOperand1` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `RtOperandType5`, + CHANGE `RTOperand2` `RtOperand2` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `RtOperand1`, + CHANGE `RTOperand3` `RtOperand3` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `RtOperand2`, + CHANGE `RTOperand4` `RtOperand4` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `RtOperand3`, + CHANGE `RTOperand5` `RtOperand5` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `RtOperand4`; + +ALTER TABLE `spell_learn_spell` + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `LearnSpellID` int(11) NOT NULL DEFAULT 0 AFTER `SpellID`, + MODIFY `OverridesSpellID` int(11) NOT NULL DEFAULT 0 AFTER `LearnSpellID`; + +ALTER TABLE `spell_levels` + MODIFY `BaseLevel` smallint(6) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `MaxLevel` smallint(6) NOT NULL DEFAULT 0 AFTER `BaseLevel`, + MODIFY `SpellLevel` smallint(6) NOT NULL DEFAULT 0 AFTER `MaxLevel`, + CHANGE `MaxUsableLevel` `MaxPassiveAuraLevel` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `DifficultyID`, + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `MaxPassiveAuraLevel`; + +ALTER TABLE `spell_misc` + CHANGE `IconFileDataID` `SpellIconFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `SchoolMask`, + MODIFY `ActiveIconFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `Speed`, + CHANGE `MultistrikeSpeedMod` `LaunchDelay` float NOT NULL DEFAULT 0 AFTER `ActiveIconFileDataID`, + CHANGE `Attributes` `Attributes1` int(11) NOT NULL DEFAULT 0 AFTER `DifficultyID`, + CHANGE `AttributesEx` `Attributes2` int(11) NOT NULL DEFAULT 0 AFTER `Attributes1`, + CHANGE `AttributesExB` `Attributes3` int(11) NOT NULL DEFAULT 0 AFTER `Attributes2`, + CHANGE `AttributesExC` `Attributes4` int(11) NOT NULL DEFAULT 0 AFTER `Attributes3`, + CHANGE `AttributesExD` `Attributes5` int(11) NOT NULL DEFAULT 0 AFTER `Attributes4`, + CHANGE `AttributesExE` `Attributes6` int(11) NOT NULL DEFAULT 0 AFTER `Attributes5`, + CHANGE `AttributesExF` `Attributes7` int(11) NOT NULL DEFAULT 0 AFTER `Attributes6`, + CHANGE `AttributesExG` `Attributes8` int(11) NOT NULL DEFAULT 0 AFTER `Attributes7`, + CHANGE `AttributesExH` `Attributes9` int(11) NOT NULL DEFAULT 0 AFTER `Attributes8`, + CHANGE `AttributesExI` `Attributes10` int(11) NOT NULL DEFAULT 0 AFTER `Attributes9`, + CHANGE `AttributesExJ` `Attributes11` int(11) NOT NULL DEFAULT 0 AFTER `Attributes10`, + CHANGE `AttributesExK` `Attributes12` int(11) NOT NULL DEFAULT 0 AFTER `Attributes11`, + CHANGE `AttributesExL` `Attributes13` int(11) NOT NULL DEFAULT 0 AFTER `Attributes12`, + CHANGE `AttributesExM` `Attributes14` int(11) NOT NULL DEFAULT 0 AFTER `Attributes13`, + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `Attributes14`; + +ALTER TABLE `spell_power` + CHANGE `ManaCostPercentage` `PowerCostPct` float NOT NULL DEFAULT 0 AFTER `ManaCost`, + CHANGE `ManaCostPercentagePerSecond` `PowerPctPerSecond` float NOT NULL DEFAULT 0 AFTER `PowerCostPct`, + CHANGE `RequiredAura` `RequiredAuraSpellID` int(11) NOT NULL DEFAULT 0 AFTER `PowerPctPerSecond`, + CHANGE `HealthCostPercentage` `PowerCostMaxPct` float NOT NULL DEFAULT 0 AFTER `RequiredAuraSpellID`, + CHANGE `PowerIndex` `OrderIndex` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `PowerCostMaxPct`, + MODIFY `PowerType` tinyint(4) NOT NULL DEFAULT 0 AFTER `OrderIndex`, + CHANGE `ManaCostPerSecond` `ManaPerSecond` int(11) NOT NULL DEFAULT 0 AFTER `ManaCostPerLevel`, + CHANGE `ManaCostAdditional` `OptionalCost` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ManaPerSecond`, + CHANGE `UnitPowerBarID` `AltPowerBarID` int(11) NOT NULL DEFAULT 0 AFTER `PowerDisplayID`, + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `AltPowerBarID`; + +ALTER TABLE `spell_power_difficulty` CHANGE `PowerIndex` `OrderIndex` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `DifficultyID`; + +ALTER TABLE `spell_procs_per_minute_mod` MODIFY `Param` smallint(6) NOT NULL DEFAULT 0 AFTER `Coeff`; + +ALTER TABLE `spell_range` + CHANGE `MinRangeHostile` `RangeMin1` float NOT NULL DEFAULT 0 AFTER `DisplayNameShort`, + CHANGE `MinRangeFriend` `RangeMin2` float NOT NULL DEFAULT 0 AFTER `RangeMin1`, + CHANGE `MaxRangeHostile` `RangeMax1` float NOT NULL DEFAULT 0 AFTER `RangeMin2`, + CHANGE `MaxRangeFriend` `RangeMax2` float NOT NULL DEFAULT 0 AFTER `RangeMax1`; + +ALTER TABLE `spell_reagents` + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `ReagentCount1` smallint(6) NOT NULL DEFAULT 0 AFTER `Reagent8`, + MODIFY `ReagentCount2` smallint(6) NOT NULL DEFAULT 0 AFTER `ReagentCount1`, + MODIFY `ReagentCount3` smallint(6) NOT NULL DEFAULT 0 AFTER `ReagentCount2`, + MODIFY `ReagentCount4` smallint(6) NOT NULL DEFAULT 0 AFTER `ReagentCount3`, + MODIFY `ReagentCount5` smallint(6) NOT NULL DEFAULT 0 AFTER `ReagentCount4`, + MODIFY `ReagentCount6` smallint(6) NOT NULL DEFAULT 0 AFTER `ReagentCount5`, + MODIFY `ReagentCount7` smallint(6) NOT NULL DEFAULT 0 AFTER `ReagentCount6`, + MODIFY `ReagentCount8` smallint(6) NOT NULL DEFAULT 0 AFTER `ReagentCount7`; + +ALTER TABLE `spell_scaling` + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `ScalesFromItemLevel` smallint(6) NOT NULL DEFAULT 0 AFTER `SpellID`, + CHANGE `ScalingClass` `Class` int(11) NOT NULL DEFAULT 0 AFTER `ScalesFromItemLevel`; + +ALTER TABLE `spell_shapeshift` + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `ShapeshiftExclude1` int(11) NOT NULL DEFAULT 0 AFTER `SpellID`, + MODIFY `ShapeshiftExclude2` int(11) NOT NULL DEFAULT 0 AFTER `ShapeshiftExclude1`, + MODIFY `ShapeshiftMask1` int(11) NOT NULL DEFAULT 0 AFTER `ShapeshiftExclude2`, + MODIFY `ShapeshiftMask2` int(11) NOT NULL DEFAULT 0 AFTER `ShapeshiftMask1`, + MODIFY `StanceBarOrder` tinyint(4) NOT NULL DEFAULT 0 AFTER `ShapeshiftMask2`; + +ALTER TABLE `spell_shapeshift_form` + CHANGE `WeaponDamageVariance` `DamageVariance` float NOT NULL DEFAULT 0 AFTER `Name`, + MODIFY `Flags` int(11) NOT NULL DEFAULT 0 AFTER `DamageVariance`, + MODIFY `CombatRoundTime` smallint(6) NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `BonusActionBar` tinyint(4) NOT NULL DEFAULT 0 AFTER `CreatureType`, + CHANGE `AttackIconFileDataID` `AttackIconFileID` int(11) NOT NULL DEFAULT 0 AFTER `BonusActionBar`; + +ALTER TABLE `spell_target_restrictions` + CHANGE `ConeAngle` `ConeDegrees` float NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `Targets` int(11) NOT NULL DEFAULT 0 AFTER `Width`, + MODIFY `TargetCreatureType` smallint(6) NOT NULL DEFAULT 0 AFTER `Targets`, + CHANGE `MaxAffectedTargets` `MaxTargets` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `DifficultyID`, + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `MaxTargetLevel`; + +ALTER TABLE `spell_totems` + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + MODIFY `Totem1` int(11) NOT NULL DEFAULT 0 AFTER `SpellID`, + MODIFY `Totem2` int(11) NOT NULL DEFAULT 0 AFTER `Totem1`; + +ALTER TABLE `spell_x_spell_visual` + CHANGE `Chance` `Probability` float NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `PlayerConditionID` `ViewerPlayerConditionID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `CasterUnitConditionID`, + CHANGE `UnitConditionID` `ViewerUnitConditionID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ViewerPlayerConditionID`, + CHANGE `IconFileDataID` `SpellIconFileID` int(11) NOT NULL DEFAULT 0 AFTER `ViewerUnitConditionID`, + CHANGE `ActiveIconFileDataID` `ActiveIconFileID` int(11) NOT NULL DEFAULT 0 AFTER `SpellIconFileID`, + MODIFY `SpellID` int(11) NOT NULL DEFAULT 0 AFTER `Priority`; + +ALTER TABLE `summon_properties` + MODIFY `Flags` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `Category` `Control` int(11) NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `Faction` int(11) NOT NULL DEFAULT 0 AFTER `Control`, + CHANGE `Type` `Title` int(11) NOT NULL DEFAULT 0 AFTER `Faction`; + +ALTER TABLE `taxi_nodes` + MODIFY `MountCreatureID1` int(11) NOT NULL DEFAULT 0 AFTER `PosZ`, + MODIFY `MountCreatureID2` int(11) NOT NULL DEFAULT 0 AFTER `MountCreatureID1`, + CHANGE `Unk730` `Facing` float NOT NULL DEFAULT 0 AFTER `MapOffsetY`, + CHANGE `MapID` `ContinentID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `FlightMapOffsetY`, + CHANGE `LearnableIndex` `CharacterBitNumber` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ConditionID`, + CHANGE `UiTextureKitPrefixID` `UiTextureKitID` int(11) NOT NULL DEFAULT 0 AFTER `Flags`, + CHANGE `SpecialAtlasIconPlayerConditionID` `SpecialIconConditionID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `UiTextureKitID`; + +ALTER TABLE `taxi_path` + CHANGE `From` `FromTaxiNode` smallint(5) UNSIGNED NOT NULL DEFAULT 0 FIRST, + CHANGE `To` `ToTaxiNode` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `FromTaxiNode`; + +ALTER TABLE `taxi_path_node` CHANGE `MapID` `ContinentID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `PathID`; + +ALTER TABLE `totem_category` + CHANGE `CategoryMask` `TotemCategoryMask` int(11) NOT NULL DEFAULT 0 AFTER `Name`, + CHANGE `CategoryType` `TotemCategoryType` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `TotemCategoryMask`; + +ALTER TABLE `toy` + CHANGE `Description` `SourceText` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL FIRST, + MODIFY `ItemID` int(11) NOT NULL DEFAULT 0 AFTER `SourceText`, + CHANGE `CategoryFilter` `SourceTypeEnum` tinyint(4) NOT NULL DEFAULT 0 AFTER `Flags`; + +ALTER TABLE `toy_locale` CHANGE `Description_lang` `SourceText_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `locale`; + +ALTER TABLE `transmog_holiday` CHANGE `HolidayID` `RequiredTransmogHoliday` int(11) NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `transmog_set` + CHANGE `BaseSetID` `ParentTransmogSetID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `Name`, + CHANGE `UIOrder` `UiOrder` smallint(6) NOT NULL DEFAULT 0 AFTER `ParentTransmogSetID`, + CHANGE `QuestID` `TrackingQuestID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Flags`; + +ALTER TABLE `transmog_set_group` CHANGE `Label` `Name` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL FIRST; + +ALTER TABLE `transmog_set_group_locale` CHANGE `Label_lang` `Name_lang` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `locale`; + +ALTER TABLE `transport_animation` MODIFY `TransportID` int(11) NOT NULL DEFAULT 0 AFTER `SequenceID`; + +ALTER TABLE `transport_rotation` + CHANGE `X` `Rot1` float NOT NULL DEFAULT 0 AFTER `TimeIndex`, + CHANGE `Y` `Rot2` float NOT NULL DEFAULT 0 AFTER `Rot1`, + CHANGE `Z` `Rot3` float NOT NULL DEFAULT 0 AFTER `Rot2`, + CHANGE `W` `Rot4` float NOT NULL DEFAULT 0 AFTER `Rot3`, + CHANGE `TransportID` `GameObjectsID` int(11) NOT NULL DEFAULT 0 AFTER `Rot4`; + +ALTER TABLE `unit_power_bar` + MODIFY `FileDataID1` int(11) NOT NULL DEFAULT 0 AFTER `RegenerationCombat`, + MODIFY `FileDataID2` int(11) NOT NULL DEFAULT 0 AFTER `FileDataID1`, + MODIFY `FileDataID3` int(11) NOT NULL DEFAULT 0 AFTER `FileDataID2`, + MODIFY `FileDataID4` int(11) NOT NULL DEFAULT 0 AFTER `FileDataID3`, + MODIFY `FileDataID5` int(11) NOT NULL DEFAULT 0 AFTER `FileDataID4`, + MODIFY `FileDataID6` int(11) NOT NULL DEFAULT 0 AFTER `FileDataID5`, + MODIFY `Color1` int(11) NOT NULL DEFAULT 0 AFTER `FileDataID6`, + MODIFY `Color2` int(11) NOT NULL DEFAULT 0 AFTER `Color1`, + MODIFY `Color3` int(11) NOT NULL DEFAULT 0 AFTER `Color2`, + MODIFY `Color4` int(11) NOT NULL DEFAULT 0 AFTER `Color3`, + MODIFY `Color5` int(11) NOT NULL DEFAULT 0 AFTER `Color4`, + MODIFY `Color6` int(11) NOT NULL DEFAULT 0 AFTER `Color5`; + +ALTER TABLE `vehicle` + MODIFY `Flags` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `UILocomotionType` `UiLocomotionType` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `FlagsB`; + +ALTER TABLE `vehicle_seat` + CHANGE `Flags1` `Flags` int(11) NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `Flags2` `FlagsB` int(11) NOT NULL DEFAULT 0 AFTER `Flags`, + CHANGE `Flags3` `FlagsC` int(11) NOT NULL DEFAULT 0 AFTER `FlagsB`, + CHANGE `UISkinFileDataID` `UiSkinFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `CameraSeatZoomMax`, + MODIFY `EnterAnimKitID` smallint(6) NOT NULL DEFAULT 0 AFTER `VehicleRideAnimLoop`, + MODIFY `RideAnimKitID` smallint(6) NOT NULL DEFAULT 0 AFTER `EnterAnimKitID`, + MODIFY `ExitAnimKitID` smallint(6) NOT NULL DEFAULT 0 AFTER `RideAnimKitID`, + MODIFY `VehicleEnterAnimKitID` smallint(6) NOT NULL DEFAULT 0 AFTER `ExitAnimKitID`, + MODIFY `VehicleRideAnimKitID` smallint(6) NOT NULL DEFAULT 0 AFTER `VehicleEnterAnimKitID`, + MODIFY `VehicleExitAnimKitID` smallint(6) NOT NULL DEFAULT 0 AFTER `VehicleRideAnimKitID`, + MODIFY `CameraModeID` smallint(6) NOT NULL DEFAULT 0 AFTER `VehicleExitAnimKitID`, + MODIFY `VehicleAbilityDisplay` tinyint(4) NOT NULL DEFAULT 0 AFTER `VehicleRideAnimLoopBone`; + +ALTER TABLE `wmo_area_table` + CHANGE `WMOGroupID` `WmoGroupID` int(11) NOT NULL DEFAULT 0 AFTER `AreaName`, + CHANGE `UWIntroSound` `UwIntroSound` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `AreaTableID`, + CHANGE `UWAmbience` `UwAmbience` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `UwIntroSound`, + CHANGE `NameSet` `NameSetID` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `UwAmbience`, + CHANGE `UWZoneMusic` `UwZoneMusic` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`, + CHANGE `WMOID` `WmoID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `UwZoneMusic`; + +ALTER TABLE `world_effect` MODIFY `TargetAsset` int(11) NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `world_map_area` + MODIFY `MapID` smallint(6) NOT NULL DEFAULT 0 AFTER `Flags`, + MODIFY `DefaultDungeonFloor` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `DisplayMapID`, + CHANGE `BountyBoardLocation` `BountyDisplayLocation` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `BountySetID`, + CHANGE `PlayerConditionID` `VisibilityPlayerConditionID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `world_map_overlay` + MODIFY `OffsetX` int(11) NOT NULL DEFAULT 0 AFTER `MapAreaID`, + MODIFY `OffsetY` int(11) NOT NULL DEFAULT 0 AFTER `OffsetX`, + MODIFY `HitRectTop` int(11) NOT NULL DEFAULT 0 AFTER `OffsetY`, + MODIFY `HitRectLeft` int(11) NOT NULL DEFAULT 0 AFTER `HitRectTop`, + MODIFY `HitRectBottom` int(11) NOT NULL DEFAULT 0 AFTER `HitRectLeft`, + MODIFY `HitRectRight` int(11) NOT NULL DEFAULT 0 AFTER `HitRectBottom`, + MODIFY `PlayerConditionID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `HitRectRight`, + MODIFY `Flags` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `PlayerConditionID`;