diff --git a/src/game/Server/DBCStores.cpp b/src/game/Server/DBCStores.cpp index 336dfb742..360a33042 100644 --- a/src/game/Server/DBCStores.cpp +++ b/src/game/Server/DBCStores.cpp @@ -891,13 +891,45 @@ void LoadDBCStores(const std::string& dataPath) } // Check loaded DBC files proper version - if (!sAreaStore.LookupEntry(5491) || // last area (areaflag) added in 5.4.8 (18414) - !sCharTitlesStore.LookupEntry(389) || // last char title added in 5.4.8 (18414) - !sGemPropertiesStore.LookupEntry(2467) || // last gem property added in 5.4.8 (18414) - !sMapStore.LookupEntry(1173) || // last map added in 5.4.8 (18414) - !sSpellStore.LookupEntry(163227) ) // last added spell in 5.4.8 (18414) + std::string failedModules = ""; + bool startupFailed=false; + + // last area (areaflag) added in 5.4.8 (18414) + //if (!sAreaStore.LookupEntry(5491)) + //{ + // startupFailed=true; + // failedModules += "AreaTable.dbc"; + //} + + // last char title added in 5.4.8 (18414) + //if (!sCharTitlesStore.LookupEntry(389)) + //{ + // startupFailed=true; + // failedModules += ",CharTitles.dbc"; + //} + //// last gem property added in 5.4.8 (18414) + //if (!sGemPropertiesStore.LookupEntry(2467)) + //{ + // startupFailed=true; + // failedModules += ",GemProperties.dbc"; + //} + // last map added in 5.4.8 (18414) + if (!sMapStore.LookupEntry(1173)) + { + startupFailed=true; + failedModules += ",Map.dbc"; + } + // last added spell in 5.4.8 (18414) + if (!sSpellStore.LookupEntry(163227)) + { + startupFailed=true; + failedModules += ",SpellStore.dbc"; + } + + if(startupFailed) { sLog.outError("\nYou have mixed version DBC files. Please re-extract DBC files for one from client build: %s", AcceptableClientBuildsListStr().c_str()); + sLog.outError("\nThe Following modules failed the checksum: %s", failedModules); Log::WaitBeforeContinueIfNeed(); exit(1); } diff --git a/src/game/Server/DBCStructure.h b/src/game/Server/DBCStructure.h index ffa50bc95..44b53a09b 100644 --- a/src/game/Server/DBCStructure.h +++ b/src/game/Server/DBCStructure.h @@ -2001,22 +2001,21 @@ struct SpellPowerEntry // 12 5.x }; - // SpellScaling.dbc struct SpellScalingEntry { //uint32 Id; // 0 m_ID - uint32 castTimeMin; // 1 - uint32 castTimeMax; // 2 - uint32 castScalingMaxLevel; // 3 - uint32 playerClass; // 4 (index * 100) + charLevel => gtSpellScaling.dbc - float coeff1[3]; // 5-7 - float coeff2[3]; // 8-10 - float coeff3[3]; // 11-13 - float coefBase; // 14 some coefficient, mostly 1.0f - uint32 coefLevelBase; // 15 some level + int32 castTimeMin; // 1 + int32 castTimeMax; // 2 + int32 castScalingMaxLevel; // 3 + int32 playerClass; // 4 (index * 100) + charLevel => gtSpellScaling.dbc + float coeff1; // 5-7 + float coeff2; // 8-10 + float coeff3; // 11-13 + //float coefBase; // 14 some coefficient, mostly 1.0f + int32 coefLevelBase; // 15 some level - bool IsScalableEffect(SpellEffectIndex i) const { return coeff1[i] != 0.0f; }; +// bool IsScalableEffect(SpellEffectIndex i) const { return coeff1[i] != 0.0f; }; }; // SpellShapeshift.dbc diff --git a/src/game/Server/DBCfmt.h b/src/game/Server/DBCfmt.h index 8ec93ff67..debf59d1d 100644 --- a/src/game/Server/DBCfmt.h +++ b/src/game/Server/DBCfmt.h @@ -27,35 +27,35 @@ const char Achievementfmt[]= "niiissiiiiisiix"; const char AchievementCriteriafmt[]="niiiiiiiixsiiiiixxxxxxx"; -const char AreaTableEntryfmt[] = "iiinixxxxxxxisiiiiixxxxxxxxx"; // TODO: NEED TO CONFIRM THIS +const char AreaTableEntryfmt[] = "iiinixxxxxxxisiiiiixxxxxxxxxxx"; // TODO: NEED TO CONFIRM THIS const char AreaGroupEntryfmt[] = "niiiiiii"; const char AreaTriggerEntryfmt[]="nifffxxxfffffxxx"; const char ArmorLocationfmt[]="nfffff"; const char AuctionHouseEntryfmt[]= "niiix"; const char BankBagSlotPricesEntryfmt[] = "ni"; const char BarberShopStyleEntryfmt[]= "nixxxiii"; -const char BattlemasterListEntryfmt[]="niiiiiiiiiiiiiiiiixsii"; // TODO: NEED TO CONFIRM THIS +const char BattlemasterListEntryfmt[]="niiiiiiiiiiiiiiiiixsiiiiiiiixx"; // TODO: NEED TO CONFIRM THIS const char CharStartOutfitEntryfmt[]= "diiiiiiiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; const char CharTitlesEntryfmt[]="nxsxix"; const char ChatChannelsEntryfmt[]="iixsx"; // ChatChannelsEntryfmt, index not used (more compact store) -const char ChrClassesEntryfmt[]="nixsxxxixiiiixxxx"; // TODO: NEED TO CONFIRM THIS +const char ChrClassesEntryfmt[]="nixsxxxixiiiixxxxx"; // TODO: NEED TO CONFIRM THIS const char ChrRacesEntryfmt[]="nxixiixixxxxixsxxxxxixxxxxxxxxxxxxxx"; const char ChrClassesXPowerTypesfmt[]="nii"; const char CinematicSequencesEntryfmt[] = "nxxxxxxxxx"; -const char CreatureDisplayInfofmt[]="nixifxxxxxxxxxxxxxx"; // TODO: NEED TO CONFIRM THIS +const char CreatureDisplayInfofmt[]="nixifxxxxxxxxxxxxxxx"; // TODO: NEED TO CONFIRM THIS const char CreatureDisplayInfoExtrafmt[] = "nixxxxxxxxxxxxxxxxxxx"; const char CreatureFamilyfmt[]="nfifiiiiixsx"; const char CreatureSpellDatafmt[] = "niiiixxxx"; -const char DestructibleModelDataFmt[] = "nixxxixxxxixxxxixxxxxxxx"; +const char DestructibleModelDataFmt[] = "nixxxixxxxixxxxixxxxixxx"; const char DungeonEncounterfmt[]="niiiisxx"; // TODO: NEED TO CONFIRM THIS const char CreatureTypefmt[]="nxx"; -const char CurrencyTypesfmt[]="nisxxxxiiix"; // TODO: NEED TO CONFIRM THIS +const char CurrencyTypesfmt[]="nisxxxxiiixx"; // TODO: NEED TO CONFIRM THIS const char DurabilityCostsfmt[] = "niiiiiiiiiiiiiiiiiiiiiiiiiiiii"; const char DurabilityQualityfmt[] = "nf"; const char EmotesEntryfmt[]="nxxiiixx"; const char EmotesTextEntryfmt[] = "nxixxxxxxxxxxxxxxxx"; -const char FactionEntryfmt[]="niiiiiiiiiiiiiiiiiiffixsxx"; // TODO: NEED TO CONFIRM THIS +const char FactionEntryfmt[]="niiiiiiiiiiiiiiiiiiffixsxxxx"; // TODO: NEED TO CONFIRM THIS const char FactionTemplateEntryfmt[] = "niiiiiiiiiiiii"; const char GameObjectDisplayInfofmt[]="nsxxxxxxxxxxffffffxxx"; const char GemPropertiesEntryfmt[]="nixxix"; @@ -77,7 +77,7 @@ const char GtSpellScalingfmt[]="df"; const char GtOCTBaseHPByClassfmt[]="df"; const char GtOCTBaseMPByClassfmt[]="df"; const char Holidaysfmt[] = "nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; -const char ItemClassfmt[]="nxfs"; +const char ItemClassfmt[]="nifs"; const char ItemArmorQualityfmt[]="nfffffffi"; const char ItemArmorShieldfmt[]="nifffffff"; const char ItemArmorTotalfmt[]="niffff"; @@ -94,7 +94,7 @@ const char LiquidTypefmt[] = "nxxixixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; const char LockEntryfmt[] = "niiiiiiiiiiiiiiiiiiiiiiiixxxxxxxx"; const char MailTemplateEntryfmt[]="nxs"; const char MapEntryfmt[]="nsiiisissififfiiiii"; // 5.4.8 -const char MapDifficultyEntryfmt[]="niisii"; // TODO: NEED TO CONFIRM THIS +const char MapDifficultyEntryfmt[]="niisiis"; // TODO: NEED TO CONFIRM THIS const char MountCapabilityfmt[]="niiiiiii"; const char MountTypefmt[]="niiiiiiiiiiiiiiiiiiiiiiii"; const char MovieEntryfmt[]="nxxxx"; @@ -107,16 +107,16 @@ const char Phasefmt[]="nii"; const char PvPDifficultyfmt[] = "diiiii"; const char RandomPropertiesPointsfmt[] = "niiiiiiiiiiiiiii"; const char ScalingStatDistributionfmt[]="niiiiiiiiiiiiiiiiiiiixi"; -const char ScalingStatValuesfmt[]="iniiiiiixiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxx"; // TODO: NEED TO CONFIRM THIS -const char SkillLinefmt[]="nisxixix"; // TODO: NEED TO CONFIRM THIS -const char SkillLineAbilityfmt[]="niiiiiiiiixxx"; +const char ScalingStatValuesfmt[]="iniiiiiixiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxx"; // TODO: NEED TO CONFIRM THIS +const char SkillLinefmt[]="nisxixixx"; // TODO: NEED TO CONFIRM THIS +const char SkillLineAbilityfmt[]="niiiixxiiiiii"; const char SkillRaceClassInfofmt[]="diiiiixx"; -const char SoundEntriesfmt[]="nisxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // TODO: NEED TO CONFIRM THIS +const char SoundEntriesfmt[]="nisxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // TODO: NEED TO CONFIRM THIS const char SpellCastTimefmt[]="niii"; const char SpellDurationfmt[] = "niii"; const char SpellDifficultyfmt[] = "niiii"; const char SpellEntryfmt[]="nssxxixxxiiiiiiiiiiiiiixi"; -const char SpellAuraOptionsEntryfmt[]="dxxiiii"; // TODO: NEED TO CONFIRM THIS +const char SpellAuraOptionsEntryfmt[]="dxxiiiixx"; // TODO: NEED TO CONFIRM THIS const char SpellAuraRestrictionsEntryfmt[]="dxxiiiiiiii"; const char SpellCastingRequirementsEntryfmt[]="dixxixi"; const char SpellCategoriesEntryfmt[]="dxxiiiiiix"; @@ -134,7 +134,7 @@ const char SpellTotemsEntryfmt[]="diiii"; const char SpellFocusObjectfmt[]="nx"; const char SpellItemEnchantmentfmt[]="nxiiiiiiiiisiiiixxixxxxxx"; // TODO: NEED TO CONFIRM THIS const char SpellItemEnchantmentConditionfmt[] = "nbbbbbxxxxxbbbbbbbbbbiiiiiXXXXX"; -const char SpellMiscfmt[]="dxxiiiiiiiiiiiiiiiiifiii"; // TODO: NEED TO CONFIRM THIS +const char SpellMiscfmt[]="dxxiiiiiiiiiiiiiiiiifiiiii"; // TODO: NEED TO CONFIRM THIS const char SpellRadiusfmt[]="nfxxx"; const char SpellRangefmt[]="nffffxxx"; const char SpellRuneCostfmt[]="niiixi"; @@ -144,7 +144,7 @@ const char SummonPropertiesfmt[] = "niiiii"; const char TalentEntryfmt[]="niiiiiiiiixxixxxxxx"; const char TalentTabEntryfmt[]="nxxiiixxiii"; const char TalentTreePrimarySpellsfmt[]="diix"; -const char TaxiNodesEntryfmt[]="nifffsiixxx"; // TODO: NEED TO CONFIRM THIS +const char TaxiNodesEntryfmt[]="nifffsiixxxx"; // TODO: NEED TO CONFIRM THIS const char TaxiPathEntryfmt[] = "niii"; const char TaxiPathNodeEntryfmt[] = "diiifffiiii"; const char TotemCategoryEntryfmt[]="nxii";