Index: trunk/src/ascent-shared/Database/DBCStores.cpp =================================================================== --- trunk/src/ascent-shared/Database/DBCStores.cpp (revision 3814) +++ trunk/src/ascent-shared/Database/DBCStores.cpp (working copy) @@ -21,69 +21,71 @@ #include "DataStore.h" #include "NGLog.h" -SERVER_DECL DBCStorage dbcGemProperty; -SERVER_DECL DBCStorage dbcItemSet; -SERVER_DECL DBCStorage dbcLock; -SERVER_DECL DBCStorage dbcSpell; -SERVER_DECL DBCStorage dbcSpellDuration; -SERVER_DECL DBCStorage dbcSpellRange; -SERVER_DECL DBCStorage dbcEmoteEntry; -SERVER_DECL DBCStorage dbcSpellRadius; -SERVER_DECL DBCStorage dbcSpellCastTime; -SERVER_DECL DBCStorage dbcArea; +SERVER_DECL DBCStorage dbcAreaTable; +SERVER_DECL DBCStorage dbcAuctionHouse; +SERVER_DECL DBCStorage dbcChatChannels; +SERVER_DECL DBCStorage dbcChrClasses; +SERVER_DECL DBCStorage dbcChrRaces; +SERVER_DECL DBCStorage dbcCreatureFamily; +SERVER_DECL DBCStorage dbcCreatureSpellData; +SERVER_DECL DBCStorage dbcEmotesText; +SERVER_DECL DBCStorage dbcFaction; SERVER_DECL DBCStorage dbcFactionTemplate; -SERVER_DECL DBCStorage dbcFaction; -SERVER_DECL DBCStorage dbcEnchant; -SERVER_DECL DBCStorage dbcRandomProps; -SERVER_DECL DBCStorage dbcSkillLineSpell; -SERVER_DECL DBCStorage dbcSkillLine; -SERVER_DECL DBCStorage dbcTaxiNode; -SERVER_DECL DBCStorage dbcTaxiPath; -SERVER_DECL DBCStorage dbcTaxiPathNode; -SERVER_DECL DBCStorage dbcAuctionHouse; -SERVER_DECL DBCStorage dbcTalent; -SERVER_DECL DBCStorage dbcTalentTab; -SERVER_DECL DBCStorage dbcCreatureSpellData; -SERVER_DECL DBCStorage dbcCreatureFamily; -SERVER_DECL DBCStorage dbcCharClass; -SERVER_DECL DBCStorage dbcCharRace; -SERVER_DECL DBCStorage dbcMap; -SERVER_DECL DBCStorage dbcItemExtendedCost; -SERVER_DECL DBCStorage dbcItemRandomSuffix; -SERVER_DECL DBCStorage dbcCombatRating; -SERVER_DECL DBCStorage dbcChatChannels; +SERVER_DECL DBCStorage dbcGemProperties; +SERVER_DECL DBCStorage dbcgtCombatRatings; +SERVER_DECL DBCStorage dbcItemExtendedCost; +SERVER_DECL DBCStorage dbcItemRandomProperties; +SERVER_DECL DBCStorage dbcItemRandomSuffix; +SERVER_DECL DBCStorage dbcItemSet; +// LFGDungeons.dbc? +SERVER_DECL DBCStorage dbcLock; +SERVER_DECL DBCStorage dbcMap; +// NameGen.dbc?? +SERVER_DECL DBCStorage dbcSkillLine; +SERVER_DECL DBCStorage dbcSkillLineAbility; +SERVER_DECL DBCStorage dbcSpell; +SERVER_DECL DBCStorage dbcSpellCastTimes; +SERVER_DECL DBCStorage dbcSpellDuration; +SERVER_DECL DBCStorage dbcSpellItemEnchantment; +SERVER_DECL DBCStorage dbcSpellRadius; +SERVER_DECL DBCStorage dbcSpellRange; +SERVER_DECL DBCStorage dbcTalent; +SERVER_DECL DBCStorage dbcTalentTab; +SERVER_DECL DBCStorage dbcTaxiNodes; +SERVER_DECL DBCStorage dbcTaxiPath; +SERVER_DECL DBCStorage dbcTaxiPathNode; -const char* ItemSetFormat = "usxxxxxxxxxxxxxxxuuuuuuuuuxxxxxxxxxuuuuuuuuuuuuuuuuuu"; +const char* AreaTableFormat = "uuuuuxxxuxusxxxxxxxxxxxxxxxxuxxxxxx"; +const char* AuctionHouseFormat = "uuuusxxxxxxxxxxxxxxxu"; +const char* ChatChannelsFormat = "uuxsxxxxxxxxxxxxxxxusxxxxxxxxxxxxxxxu"; +const char* ChrClassesFormat = "uxuxsxxxxxxxxxxxxxxxusxx"; +const char* ChrRacesFormat = "uxuxuusxuxxxsuxxxxxxxxxxxxxxxxxxxxu"; +const char* CreatureFamilyFormat = "ufufuuuusxxxxxxxxxxxxxxxus"; +const char* CreatureSpellDataFormat = "uuuuuuuuu"; +const char* EmotesTextFormat = "usuuuuxuxuxuuxxuxxx"; +const char* FactionFormat = "uiuuuuxxxxiiiixxxxusxxxxxxxxxxxxxxxusxxxxxxxxxxxxxxxu"; +const char* FactionTemplateFormat = "uuuuuuuuuuuuuu"; +const char* GemPropertiesFormat = "uuuuu"; +const char* gtCombatRatingsFormat = "f"; +const char* ItemExtendedCostFormat = "uuuuuuxxuuuxxx"; +const char* ItemRandomPropertiesFormat = "usuuuxxsxxxxxxxxxxxxxxxu"; +const char* ItemRandomSuffixFormat = "usxxxxxxxxxxxxxxxusuuuuuu"; +const char* ItemSetFormat = "usxxxxxxxxxxxxxxxuuuuuuuuuuuxxxxxxxuuuuuuuuuuuuuuuuuu"; const char* LockFormat = "uuuuuuxxxuuuuuxxxuuuuuxxxxxxxxxxx"; -const char* EmoteEntryFormat = "uxuuuuxuxuxxxxxxxxx"; -const char* skilllinespellFormat = "uuuxxxxxuuuuxxu"; -const char* EnchantEntrYFormat = "uuuuuuuuuuuuusxxxxxxxxxxxxxxxxuuuu"; -const char* GemPropertyEntryFormat = "uuuuu"; -const char* skilllineentrYFormat = "uuusxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; -const char* spellentrYFormat = "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuiuuuuuuuuuufuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuffffffiiiiiiuuuuuuuuuuuuuuufffuuuuuuuuuuuufffuuuuusxxxxxxxxxxxxxxxxsxxxxxxxxxxxxxxxxsxxxxxxxxxxxxxxxxsxxxxxxxxxxxxxxxxuuuuuuuuuuifffuuuuuu"; -const char* itemextendedcostFormat = "uuuuuuuuuuuuux"; -const char* talententryFormat = "uuuuuuuuuxxxxuxxuxxxx"; -const char* talenttabentryFormat = "uxxxxxxxxxxxxxxxxxxxuux"; -const char* spellcasttimeFormat = "uuxx"; -const char* spellradiusFormat = "ufxf"; -const char* spellrangeFormat = "uffxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; -const char* spelldurationFormat = "uuuu"; -const char* randompropsFormat = "uxuuuxxxxxxxxxxxxxxxxxxx"; -const char* areatableFormat = "uuuuuxxxuxusxxxxxxxxxxxxxxxxuxxxxxx"; -const char* factiontemplatedbcFormat = "uuuuuuuuuuuuuu"; -const char* auctionhousedbcFormat = "uuuuxxxxxxxxxxxxxxxxx"; -const char* factiondbcFormat = "uiuuuuxxxxiiiixxxxusxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; -const char* dbctaxinodeFormat = "uufffxxxxxxxxxxxxxxxxxuu"; -const char* dbctaxipathFormat = "uuuu"; -const char* dbctaxipathnodeFormat = "uuuufffuuxx"; -const char* creaturespelldataFormat = "uuuuuuuuu"; -const char* charraceFormat = "uxuxxxxxuxxxsuxxxxxxxxxxxxxxxxxxxxx"; -const char* charclassFormat = "uxuxsxxxxxxxxxxxxxxxxxxx"; -const char* creaturefamilyFormat = "ufufuuuusxxxxxxxxxxxxxxxxx"; -const char* mapentryFormat = "usuxsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; -const char* itemrandomsuffixformat = "uxxxxxxxxxxxxxxxxxxuuuuuu"; -const char* combatratingformat = "f"; -const char* chatchannelformat = "uuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; +const char* MapFormat = "usuxsxxxxxxxxxxxxxxxuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; +const char* SkillLineFormat = "uuusxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; +const char* SkillLineAbilityFormat = "uuuuuxxuuuuuxxu"; +const char* SpellFormat = "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuiuuuuuuuuuufuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuffffffiiiiiiuuuuuuuuuuuuuuufffuuuuuuuuuuuufffuuuuusxxxxxxxxxxxxxxxxsxxxxxxxxxxxxxxxxsxxxxxxxxxxxxxxxxsxxxxxxxxxxxxxxxxuuuuuuuuuuifffuuuuuu"; +const char* SpellCastTimesFormat = "uuxx"; +const char* SpellDurationFormat = "uuuu"; +const char* SpellItemEnchantmentFormat = "uuuuuuuuuuuuusxxxxxxxxxxxxxxxuuuuu"; +const char* SpellRadiusFormat = "ufxf"; +const char* SpellRangeFormat = "uffxsxxxxxxxxxxxxxxxusxxxxxxxxxxxxxxxu"; +const char* TalentFormat = "uuuuuuuuuxxxxuxxuxxxx"; +const char* TalentTabFormat = "usxxxxxxxxxxxxxxxuuxuus"; +const char* TaxiNodesFormat = "uufffsxxxxxxxxxxxxxxxuuu"; +const char* TaxiPathFormat = "uuuu"; +const char* TaxiPathNodeFormat = "uuuufffuuxx"; template bool loader_stub(const char * filename, const char * format, bool ind, T& l, bool loadstrs) @@ -96,37 +98,40 @@ bool LoadDBCs() { + LOAD_DBC("DBC/AreaTable.dbc", AreaTableFormat, true, dbcAreaTable, true); + LOAD_DBC("DBC/AuctionHouse.dbc", AuctionHouseFormat, true, dbcAuctionHouse, false); + LOAD_DBC("DBC/ChatChannels.dbc", ChatChannelsFormat, true, dbcChatChannels, false); + LOAD_DBC("DBC/ChrClasses.dbc", ChrClassesFormat, true, dbcChrClasses, true); + LOAD_DBC("DBC/ChrRaces.dbc", ChrRacesFormat, true, dbcChrRaces, true); + LOAD_DBC("DBC/CreatureFamily.dbc", CreatureFamilyFormat, true, dbcCreatureFamily, true); + LOAD_DBC("DBC/CreatureSpellData.dbc", CreatureSpellDataFormat, true, dbcCreatureSpellData, false); + LOAD_DBC("DBC/EmotesText.dbc", EmotesTextFormat, true, dbcEmotesText, false); + LOAD_DBC("DBC/Faction.dbc", FactionFormat, true, dbcFaction, true); + LOAD_DBC("DBC/FactionTemplate.dbc", FactionTemplateFormat, true, dbcFactionTemplate, false); + LOAD_DBC("DBC/GemProperties.dbc", GemPropertiesFormat, true, dbcGemProperties, false); + LOAD_DBC("DBC/gtCombatRatings.dbc", gtCombatRatingsFormat, false, dbcgtCombatRatings, false); + LOAD_DBC("DBC/ItemExtendedCost.dbc", ItemExtendedCostFormat, true, dbcItemExtendedCost, false); + LOAD_DBC("DBC/ItemRandomProperties.dbc", ItemRandomPropertiesFormat, true, dbcItemRandomProperties, false); + LOAD_DBC("DBC/ItemRandomSuffix.dbc", ItemRandomSuffixFormat, true, dbcItemRandomSuffix, false); LOAD_DBC("DBC/ItemSet.dbc", ItemSetFormat, true, dbcItemSet, true); LOAD_DBC("DBC/Lock.dbc", LockFormat, true, dbcLock, false); - LOAD_DBC("DBC/EmotesText.dbc", EmoteEntryFormat, true, dbcEmoteEntry, false); - LOAD_DBC("DBC/SkillLineAbility.dbc", skilllinespellFormat, false, dbcSkillLineSpell, false); - LOAD_DBC("DBC/SpellItemEnchantment.dbc", EnchantEntrYFormat, true, dbcEnchant, true); - LOAD_DBC("DBC/GemProperties.dbc", GemPropertyEntryFormat, true, dbcGemProperty, false); - LOAD_DBC("DBC/SkillLine.dbc", skilllineentrYFormat, true, dbcSkillLine, true); - LOAD_DBC("DBC/Spell.dbc", spellentrYFormat, true, dbcSpell, true); - LOAD_DBC("DBC/ItemExtendedCost.dbc", itemextendedcostFormat, true, dbcItemExtendedCost, false); - LOAD_DBC("DBC/Talent.dbc", talententryFormat, true, dbcTalent, false); - LOAD_DBC("DBC/TalentTab.dbc", talenttabentryFormat, true, dbcTalentTab, false); - LOAD_DBC("DBC/SpellCastTimes.dbc", spellcasttimeFormat, true, dbcSpellCastTime, false); - LOAD_DBC("DBC/SpellRadius.dbc", spellradiusFormat, true, dbcSpellRadius, false); - LOAD_DBC("DBC/SpellRange.dbc", spellrangeFormat, true, dbcSpellRange, false); - LOAD_DBC("DBC/SpellDuration.dbc", spelldurationFormat, true, dbcSpellDuration, false); - LOAD_DBC("DBC/ItemRandomProperties.dbc", randompropsFormat, true, dbcRandomProps, false); - LOAD_DBC("DBC/AreaTable.dbc", areatableFormat, true, dbcArea, true); - LOAD_DBC("DBC/FactionTemplate.dbc", factiontemplatedbcFormat, true, dbcFactionTemplate, false); - LOAD_DBC("DBC/Faction.dbc", factiondbcFormat, true, dbcFaction, true); - LOAD_DBC("DBC/TaxiNodes.dbc", dbctaxinodeFormat, false, dbcTaxiNode, false); - LOAD_DBC("DBC/TaxiPath.dbc", dbctaxipathFormat, false, dbcTaxiPath, false); - LOAD_DBC("DBC/TaxiPathNode.dbc", dbctaxipathnodeFormat, false, dbcTaxiPathNode, false); - LOAD_DBC("DBC/CreatureSpellData.dbc", creaturespelldataFormat, true, dbcCreatureSpellData, false); - LOAD_DBC("DBC/CreatureFamily.dbc", creaturefamilyFormat, true, dbcCreatureFamily, true); - LOAD_DBC("DBC/ChrRaces.dbc", charraceFormat, true, dbcCharRace, true); - LOAD_DBC("DBC/ChrClasses.dbc", charclassFormat, true, dbcCharClass, true); - LOAD_DBC("DBC/Map.dbc", mapentryFormat, true, dbcMap, true); - LOAD_DBC("DBC/AuctionHouse.dbc", auctionhousedbcFormat, true, dbcAuctionHouse, false); - LOAD_DBC("DBC/ItemRandomSuffix.dbc", itemrandomsuffixformat, true, dbcItemRandomSuffix, false); - LOAD_DBC("DBC/gtCombatRatings.dbc", combatratingformat, false, dbcCombatRating, false); - LOAD_DBC("DBC/ChatChannels.dbc", chatchannelformat, true, dbcChatChannels, false); + LOAD_DBC("DBC/Map.dbc", MapFormat, true, dbcMap, true); + LOAD_DBC("DBC/SkillLine.dbc", SkillLineFormat, true, dbcSkillLine, true); + LOAD_DBC("DBC/SkillLineAbility.dbc", SkillLineAbilityFormat, false, dbcSkillLineAbility, false); + LOAD_DBC("DBC/Spell.dbc", SpellFormat, true, dbcSpell, true); + LOAD_DBC("DBC/SpellCastTimes.dbc", SpellCastTimesFormat, true, dbcSpellCastTimes, false); + LOAD_DBC("DBC/SpellDuration.dbc", SpellDurationFormat, true, dbcSpellDuration, false); + LOAD_DBC("DBC/SpellItemEnchantment.dbc", SpellItemEnchantmentFormat, true, dbcSpellItemEnchantment, true); + LOAD_DBC("DBC/SpellRadius.dbc", SpellRadiusFormat, true, dbcSpellRadius, false); + LOAD_DBC("DBC/SpellRange.dbc", SpellRangeFormat, true, dbcSpellRange, false); + LOAD_DBC("DBC/Talent.dbc", TalentFormat, true, dbcTalent, false); + LOAD_DBC("DBC/TalentTab.dbc", TalentTabFormat, true, dbcTalentTab, false); + LOAD_DBC("DBC/TaxiNodes.dbc", TaxiNodesFormat, false, dbcTaxiNodes, false); + LOAD_DBC("DBC/TaxiPath.dbc", TaxiPathFormat, false, dbcTaxiPath, false); + LOAD_DBC("DBC/TaxiPathNode.dbc", TaxiPathNodeFormat, false, dbcTaxiPathNode, false); + return true; } + + Index: trunk/src/ascent-shared/Database/DBCStores.h =================================================================== --- trunk/src/ascent-shared/Database/DBCStores.h (revision 3814) +++ trunk/src/ascent-shared/Database/DBCStores.h (working copy) @@ -26,866 +26,564 @@ #pragma pack(push,1) -struct ItemSetEntry +struct AreaTableDBC { - uint32 id; //1 - char* name; //2 - //uint32 unused_shit[15]; //3 - 9 - uint32 flag; //10 constant - uint32 itemid[8]; //11 - 18 - //uint32 more_unused_shit[9]; //19 - 27 - uint32 SpellID[8]; //28 - 35 - uint32 itemscount[8]; //36 - 43 - uint32 RequiredSkillID; //44 - uint32 RequiredSkillAmt; //45 + uint32 AreaId; // 0 + uint32 mapId; // 1 |This pointer will refer only to the continents| + uint32 ZoneId; // 2 |Recursive.if 0 then it's a zone, else it's a zone id of this area| + uint32 explorationFlag; // 3 |Index| + uint32 AreaFlags; // 4 |Unknown,but 312 for citys| + //uint32 unk[3]; // 5-7 + uint32 EXP; // 8 not XP + //uint32 unk5; // 9 + uint32 level; // 10 + char* name; // 11 + //char altname[15]; // 12-26 + uint32 nameFlags; // 27 + uint32 category; // 28 + //uint32 unk[6]; // 29-34 }; -struct Lock +struct AuctionHouseDBC { - uint32 Id; - uint32 locktype[5]; // 0 - no lock, 1 - item needed for lock, 2 - min lockping skill needed - //uint32 unk1[3]; - uint32 lockmisc[5]; // if type is 1 here is a item to unlock, else is unknow for now - //uint32 unk2[3]; - uint32 minlockskill[5]; // min skill in lockpiking to unlock. - //uint32 unk3[11]; + uint32 id; // 0 + uint32 unk; // 1 + uint32 fee; // 2 + uint32 tax; // 3 + char* name; // 4 + //char* altname[15]; // 5-19 + uint32 nameFlags; // 20 }; -struct emoteentry +struct ChatChannelsDBC { - uint32 Id; - //uint32 name; - uint32 textid; - uint32 textid2; - uint32 textid3; - uint32 textid4; - //uint32 unk1; - uint32 textid5; - //uint32 unk2; - uint32 textid6; - //uint32 unk3; - //uint32 unk4; - //uint32 unk5; - //uint32 unk6; - //uint32 unk7; - //uint32 unk8; - //uint32 unk9; - //uint32 unk10; - //uint32 unk11; + uint32 id; // 0 + uint32 flags; // 1 + //uint32 unk // 2 + char* pattern; // 3 + //char* altpattern[15]; // 4-18 + uint32 patternflags; // 19 + char* name; // 20 + //char* altname[16]; // 21-35 + uint32 nameflags; // 36 }; -struct skilllinespell //SkillLineAbility.dbc +struct ChrClassesDBC { - uint32 Id; - uint32 skilline; - uint32 spell; - //uint32 unk1; - //uint32 unk2; - //uint32 unk3; - //uint32 unk4; - //uint32 unk5; - uint32 next; - uint32 minrank; - uint32 grey; - uint32 green; - //uint32 unk10; - //uint32 unk11; - uint32 reqTP; + uint32 class_id; // 0 + //uint32 unk1; // 1 + uint32 power_type; // 2 + //uint32 unk2; // 3 + char* name; // 4 + //char* altname[15]; // 5-19 + uint32 nameflags; // 20 + char* pattern; // 21 + //uint32 unk4; // 22 + //uint32 unk5; // 23 }; -struct EnchantEntry +struct ChrRacesDBC { - uint32 Id; - uint32 type[3]; - int32 min[3];//for compat, in practice min==max - int32 max[3]; - uint32 spell[3]; - char* Name; - //uint32 NameAlt1; - //uint32 NameAlt2; - //uint32 NameAlt3; - //uint32 NameAlt4; - //uint32 NameAlt5; - //uint32 NameAlt6; - //uint32 NameAlt7; - //uint32 NameAlt8; - //uint32 NameAlt9; - //uint32 NameAlt10; - //uint32 NameAlt11; - //uint32 NameAlt12; - //uint32 NameAlt13; - //uint32 NameAlt14; - //uint32 NameAlt15; - //uint32 NameFlags; - uint32 visual; - uint32 EnchantGroups; - uint32 GemEntry; - uint32 unk7;//Gem Related - + uint32 race_id; // 0 + //uint32 unk1; // 1 + uint32 faction_id; // 2 |Reference to FactonTemplate.dbc| + //uint32 unk2; // 3 + uint32 male_displayid; // 4 + uint32 female_displayid; // 5 + char* shortname; // 6 |Ta for Tauren,Gn for Gnome| + //uint32 unk6; // 7 + uint32 team_id; // 8 |7 for Alliance,and 1 fo the Horde| + //uint32 unk[3]; // 9-11 + char* name1; // 12 + uint32 cinematic_id; // 13 + //char* name2[16]; // 14-29 + //uint32 unkflags; // 30 + //char* unk11; // 31 |TUSKS,FEATURES,NORMAL| + //char* unk12; // 32 |PIERCINGS,MARKINGS,FEATURES,HAIR,EARRINGS,TUSKS,NONE,HORNS,NORMAL| + //char* unk13; // 33 |NORMAL,HORNS| + uint32 isexpansion; // 34 |0 for anyone, except BE and Draenei, they got 1. Perhaps uint32, but I presume bool.| }; -struct GemPropertyEntry{ - uint32 Entry; - uint32 EnchantmentID; - uint32 unk1;//bool - uint32 unk2;//bool - uint32 SocketMask; +struct CreatureFamilyDBC +{ + uint32 ID; // 0 + float minsize; // 1 + uint32 minlevel; // 2 + float maxsize; // 3 + uint32 maxlevel; // 4 + uint32 skilline; // 5 + uint32 tameable; // 6 |270 for tamable,and 0 for non-tamable| + uint32 petdietflags; // 7 + char* name; // 8 + //char* altname[15]; // 9-23 + uint32 nameflags; // 24 + char* InterfaceIcon; // 25 |File path for tamed icon| }; -struct skilllineentry //SkillLine.dbc +struct CreatureSpellDataDBC { - uint32 id; - uint32 type; - uint32 unk1; - char* Name; - //int32 NameAlt1; - //uint32 NameAlt2; - //uint32 NameAlt3; - //uint32 NameAlt4; - //uint32 NameAlt5; - //uint32 NameAlt6; - //uint32 NameAlt7; - //uint32 NameAlt8; - //uint32 NameAlt9; - //uint32 NameAlt10; - //uint32 NameAlt11; - //uint32 NameAlt12; - //uint32 NameAlt13; - //uint32 NameAlt14; - //uint32 NameAlt15; - //uint32 NameFlags; - //uint32 Description; - //uint32 DescriptionAlt1; - //uint32 DescriptionAlt2; - //uint32 DescriptionAlt3; - //uint32 DescriptionAlt4; - //uint32 DescriptionAlt5; - //uint32 DescriptionAlt6; - //uint32 DescriptionAlt7; - //uint32 DescriptionAlt8; - //uint32 DescriptionAlt9; - //uint32 DescriptionAlt10; - //uint32 DescriptionAlt11; - //uint32 DescriptionAlt12; - //uint32 DescriptionAlt13; - //uint32 DescriptionAlt14; - //uint32 DescriptionAlt15; - //uint32 DescriptionFlags; - //uint32 unk2; - + uint32 id; // 0 |Reference to column spellDataID from CreatureCache.wdb| + uint32 Spells[3]; // 1-3 |Reference to index of Spell.dbc| + uint32 PHSpell; // 4 + uint32 Cooldowns[3]; // 5-7 |Divide by 10 to get seconds| + uint32 PH; // 8 }; -// Struct for the entry in Spell.dbc -struct SpellEntry +struct EmotesTextDBC { - uint32 Id; //1 - uint32 School; //2 - uint32 Category; //3 - uint32 field4; //4 something like spelltype 0: general spells 1: Pet spells 2: Disguise / transormation spells 3: enchantment spells - uint32 DispelType; //5 - uint32 MechanicsType; //6 - uint32 Attributes; //7 - uint32 AttributesEx; //8 - uint32 Flags3; //9 - uint32 Flags4; //10 // Flags to - uint32 field11; //11 // Flags.... - uint32 unk201_1; //12 // Flags 2.0.1 unknown one - uint32 RequiredShapeShift; //13 // Flags BitMask for shapeshift spells - uint32 UNK14; //14-> this is wrong // Flags BitMask for which shapeshift forms this spell can NOT be used in. - uint32 Targets; //15 - N / M - uint32 TargetCreatureType; //16 - uint32 RequiresSpellFocus; //17 - uint32 CasterAuraState; //18 - uint32 TargetAuraState; //19 - uint32 unk201_2; //20 2.0.1 unknown two - uint32 unk201_3; //21 2.0.1 unknown three - uint32 CastingTimeIndex; //22 - uint32 RecoveryTime; //23 - uint32 CategoryRecoveryTime; //24 recoverytime - uint32 InterruptFlags; //25 - uint32 AuraInterruptFlags; //26 - uint32 ChannelInterruptFlags; //27 - uint32 procFlags; //28 - uint32 procChance; //29 - int32 procCharges; //30 - uint32 maxLevel; //31 - uint32 baseLevel; //32 - uint32 spellLevel; //33 - uint32 DurationIndex; //34 - uint32 powerType; //35 - uint32 manaCost; //36 - uint32 manaCostPerlevel; //37 - uint32 manaPerSecond; //38 - uint32 manaPerSecondPerLevel; //39 - uint32 rangeIndex; //40 - float speed; //41 - uint32 modalNextSpell; //42 - uint32 maxstack; //43 - uint32 Totem[2]; //44 - 45 - uint32 Reagent[8]; //46 - 53 - uint32 ReagentCount[8]; //54 - 61 - uint32 EquippedItemClass; //62 - uint32 EquippedItemSubClass; //63 - uint32 RequiredItemFlags; //64 - uint32 Effect[3]; //65 - 67 - uint32 EffectDieSides[3]; //68 - 70 - uint32 EffectBaseDice[3]; //71 - 73 - float EffectDicePerLevel[3]; //74 - 76 - float EffectRealPointsPerLevel[3]; //77 - 79 - int32 EffectBasePoints[3]; //80 - 82 - int32 EffectMechanic[3]; //83 - 85 Related to SpellMechanic.dbc - uint32 EffectImplicitTargetA[3]; //86 - 88 - uint32 EffectImplicitTargetB[3]; //89 - 91 - uint32 EffectRadiusIndex[3]; //92 - 94 - uint32 EffectApplyAuraName[3]; //95 - 97 - uint32 EffectAmplitude[3]; //98 - 100 - float Effectunknown[3]; //101 - 103 This value is the $ value from description - uint32 EffectChainTarget[3]; //104 - 106 - uint32 EffectSpellGroupRelation[3]; //107 - 109 Not sure maybe we should rename it. its the relation to field: SpellGroupType - uint32 EffectMiscValue[3]; //110 - 112 - uint32 EffectTriggerSpell[3]; //113 - 115 - float EffectPointsPerComboPoint[3]; //116 - 118 - uint32 SpellVisual; //119 - uint32 field114; //120 - uint32 dummy; //121 - uint32 CoSpell; //122 activeIconID; - uint32 spellPriority; //123 - char* Name; //124 - //uint32 NameAlt1; //125 - //uint32 NameAlt2; //126 - //uint32 NameAlt3; //127 - //uint32 NameAlt4; //128 - //uint32 NameAlt5; //129 - //uint32 NameAlt6; //130 - //uint32 NameAlt7; //131 - //uint32 NameAlt8; //132 - //uint32 NameAlt9; //133 - //uint32 NameAlt10; //134 - //uint32 NameAlt11; //135 - //uint32 NameAlt12; //136 - //uint32 NameAlt13; //137 - //uint32 NameAlt14; //138 - //uint32 NameAlt15; //139 - //uint32 NameFlags; //140 - char * Rank; //141 - //uint32 RankAlt1; //142 - //uint32 RankAlt2; //143 - //uint32 RankAlt3; //144 - //uint32 RankAlt4; //145 - //uint32 RankAlt5; //146 - //uint32 RankAlt6; //147 - //uint32 RankAlt7; //148 - //uint32 RankAlt8; //149 - //uint32 RankAlt9; //150 - //uint32 RankAlt10; //151 - //uint32 RankAlt11; //152 - //uint32 RankAlt12; //153 - //uint32 RankAlt13; //154 - //uint32 RankAlt14; //155 - //uint32 RankAlt15; //156 - //uint32 RankFlags; //157 - char * Description; //158 - //uint32 DescriptionAlt1; //159 - //uint32 DescriptionAlt2; //160 - //uint32 DescriptionAlt3; //161 - //uint32 DescriptionAlt4; //162 - //uint32 DescriptionAlt5; //163 - //uint32 DescriptionAlt6; //164 - //uint32 DescriptionAlt7; //165 - //uint32 DescriptionAlt8; //166 - //uint32 DescriptionAlt9; //167 - //uint32 DescriptionAlt10; //168 - //uint32 DescriptionAlt11; //169 - //uint32 DescriptionAlt12; //170 - //uint32 DescriptionAlt13; //171 - //uint32 DescriptionAlt14; //172 - //uint32 DescriptionAlt15; //173 - //uint32 DescriptionFlags; //174 - char * BuffDescription; //175 - //uint32 BuffDescriptionAlt1; //176 - //uint32 BuffDescriptionAlt2; //177 - //uint32 BuffDescriptionAlt3; //178 - //uint32 BuffDescriptionAlt4; //179 - //uint32 BuffDescriptionAlt5; //180 - //uint32 BuffDescriptionAlt6; //181 - //uint32 BuffDescriptionAlt7; //182 - //uint32 BuffDescriptionAlt8; //183 - //uint32 BuffDescriptionAlt9; //184 - //uint32 BuffDescriptionAlt10; //185 - //uint32 BuffDescriptionAlt11; //186 - //uint32 BuffDescriptionAlt12; //187 - //uint32 BuffDescriptionAlt13; //188 - //uint32 BuffDescriptionAlt14; //189 - //uint32 BuffDescriptionAlt15; //190 - //uint32 buffdescflags; //191 - uint32 ManaCostPercentage; //192 - uint32 unkflags; //193 - uint32 StartRecoveryTime; //194 - uint32 StartRecoveryCategory; //195 - uint32 SpellFamilyName; //196 - uint64 SpellGroupType; //197+198 - uint32 MaxTargets; //199 - uint32 Spell_Dmg_Type; //200 dmg_class Integer 0=None, 1=Magic, 2=Melee, 3=Ranged - uint32 FG; //201 0,1,2 related to Spell_Dmg_Type I think - int32 FH; //202 related to paladin aura's - float dmg_multiplier[3]; //203 - 205 if the name is correct I dono - uint32 FL; //206 only one spellid:6994 has this value = 369 - uint32 FM; //207 only one spellid:6994 has this value = 4 - uint32 FN; //208 only one spellid:26869 has this flag = 1 - uint32 unk201_4; //209 - uint32 unk201_5; //210 - uint32 unk201_6; //211 - - /// CUSTOM: these fields are used for the modifications made in the world.cpp - uint32 DiminishStatus; // - uint32 proc_interval; //!!! CUSTOM, - uint32 buffIndexType; //!!! CUSTOM, - uint32 c_is_flags; //!!! CUSTOM, store spell checks in a static way : isdamageind,ishealing - uint32 buffType; //!!! CUSTOM, these are related to creating a item through a spell - uint32 RankNumber; //!!! CUSTOM, this protects players from having >1 rank of a spell - uint32 NameHash; //!!! CUSTOM, related to custom spells, summon spell quest related spells - float base_range_or_radius_sqr; //!!! CUSTOM, needed for aoe spells most of the time - uint32 talent_tree; //!!! CUSTOM, - bool removable_by_immunity; //!!! CUSTOM, - uint32 in_front_status; //!!! CUSTOM, - bool is_melee_spell; //!!! CUSTOM, - bool is_ranged_spell; //!!! CUSTOM, - uint32 EffectSpellGroupRelation_high[3]; //!!! this is not contained in client dbc but server must have it - uint32 ThreatForSpell; - bool can_be_dispelled; //!!! CUSTOM + uint32 Id; // 0 + char* name; // 1 + uint32 textid; // 2 |Reference to EmotesTextData.dbc.| + uint32 textid2; // 3 |Reference to EmotesTextData.dbc. Text shown for nearby player| e.g. "%s agrees with %s." + uint32 textid3; // 4 |Reference to EmotesTextData.dbc. Text shown for selected player| e.g. "%s agrees with you." + uint32 textid4; // 5 |Reference to EmotesTextData.dbc. Text shown for source player| e.g. "You agree with %s." + //uint32 unk1; // 6 + uint32 textid5; // 7 |Reference to EmotesTextData.dbc. Text shown for nearby player if player emotes with no selection| e.g. "%s agrees." + //uint32 unk2; // 8 + uint32 textid6; // 9 |Reference to EmotesTextData.dbc. Text shown for source player if player emotes with no selection| e.g. "You agree." + //uint32 unk3; // 10 + uint32 textid7; // 11 |Reference to EmotesTextData.dbc. Same as #3 but for female| e.g. "%s raises her fist in anger at %s." + uint32 textid8; // 12 |Reference to EmotesTextData.dbc. Same as #4 but for female| e.g. "%s raises her fist in anger at you." + //uint32 unk6; // 13 + //uint32 unk7; // 14 + uint32 textid9; // 15 |Reference to EmotesTextData.dbc. Same as #7 but for female| e.g. "%s raises her fist in anger." + //uint32 unk9; // 16 + //uint32 unk10; // 17 + //uint32 unk11; // 18 }; -struct ItemExtendedCostEntry +struct FactionDBC { - uint32 costid; - uint32 honor; - uint32 arena; - uint32 item[5]; - uint32 count[5]; + uint32 ID; // 0 + int32 RepListId; // 1 + uint32 baseRepMask[4]; // 2-5 |Base reputation masks.| + //uint32 unk1[4]; // 6-9 + int32 baseRepValue[4]; // 10-13 |Base reputation values.| + //uint32 unk2[4]; // 14-17 + uint32 parentFaction; // 18 + char* Name; // 19 + //char* altname[15]; // 20-34 + uint32 nameflags; // 35 + char* Description; // 36 + //char* Description[15]; // 37-51 + uint32 descflags; // 52 }; -struct TalentEntry +struct FactionTemplateDBC { - uint32 TalentID; - uint32 TalentTree; - uint32 Row; - uint32 Col; - uint32 RankID[5]; - //uint32 unk[4]; - uint32 DependsOn; - //uint32 unk1[2]; - uint32 DependsOnRank; - //uint32 unk2[4]; + uint32 ID; // 0 + uint32 Faction; // 1 + uint32 FactionGroup; // 2 + uint32 Mask; // 3 |If mask set then faction included in masked team.| + uint32 FriendlyMask; // 4 |If mask set then faction friendly to masked team.| + uint32 HostileMask; // 5 |If mask set then faction hostile to masked team.| + uint32 EnemyFactions[4]; // 6-9 + uint32 FriendlyFactions[4]; // 10-13 }; -struct TalentTabEntry +struct GemPropertiesDBC { - uint32 TalentTabID; - //char* Name; - //unit32 unk3 - //unit32 unk4 - //unit32 unk5 - //unit32 unk6 - //unit32 unk7 - //unit32 unk8 - //unit32 unk9 - //unit32 unk10 - //unit32 unk11 - //unit32 unk12 - //unit32 unk13 - //unit32 unk14 - //unit32 unk15 - //unit32 unk16 - //unit32 unk17 - //unit32 unk18 - //unit32 unk19 - //unit32 unk20 - uint32 ClassMask; - uint32 TabPage; - //char* InternalName; + uint32 Entry; // 0 + uint32 EnchantmentID; // 1 + uint32 unk1;//bool // 2 + uint32 unk2;//bool // 3 + uint32 SocketMask; // 4 }; -struct Trainerspell +struct gtCombatRatingsDBC { - uint32 Id; - uint32 skilline1; - uint32 skilline2; - uint32 skilline3; - uint32 maxlvl; - uint32 charclass; + float val; // 0 }; -struct SpellCastTime +struct ItemExtendedCostDBC { - uint32 ID; - uint32 CastTime; - //uint32 unk1; - //uint32 unk2; + uint32 costid; // 0 + uint32 honor; // 1 |Required honor points.| + uint32 arena; // 2 |Required arena points.| + uint32 item[3]; // 3-5 |Required itemid.| + //uint32 unk[2] // 6-7 + uint32 count[3]; // 8-10 |Required count of item.| + //uint32 unk2[3] // 11-13 }; -struct SpellRadius +struct ItemRandomPropertiesDBC { - uint32 ID; - float Radius; - //float unk1; - float Radius2; + uint32 ID; // 0 + char* name1; // 1 |Name of property| e.g. "of Stamina" + uint32 spells[3]; // 2-4 + //uint32 unk[2]; // 5-6 |Only 0 values, maybe reserved for additional enchantments.| + char* SuffixName; // 7 + //char* AltSuffixName[15]; // 8-22 + uint32 RankFlags; // 23 |Perhaps suffix flags.| }; -struct SpellRange +struct ItemRandomSuffixDBC { - uint32 ID; - float minRange; - float maxRange; - //uint32 unks[35]; + uint32 id; // 0 + char* name; // 1 |E.g. "of Power".| + //char* altname[15]; // 2-16 + uint32 nameflags; // 17 + char* name2; // 18 |E.g. "Frozen Wrath".| + uint32 enchantments[3]; // 19-21 + uint32 prefixes[3]; // 22-24 }; -struct SpellDuration +struct ItemSetDBC { - uint32 ID; - uint32 Duration1; - uint32 Duration2; - uint32 Duration3; + uint32 id; // 0 + char* name; // 1 + //char* altname[15]; // 2-16 + uint32 flag; // 17 |Constant.| + uint32 itemid[10]; // 18-27 |Not all items listed.| + //uint32 unk[7] // 28-34 + uint32 SpellID[8]; // 36-43 + uint32 itemscount[8]; // 44-51 + uint32 RequiredSkillID; // 52 + uint32 RequiredSkillAmt; // 53 }; -struct RandomProps +struct LockDBC { - uint32 ID; - //uint32 name1; - uint32 spells[3]; - //uint32 unk1; - //uint32 unk2; - //uint32 name2; - //uint32 RankAlt1; - //uint32 RankAlt2; - //uint32 RankAlt3; - //uint32 RankAlt4; - //uint32 RankAlt5; - //uint32 RankAlt6; - //uint32 RankAlt7; - //uint32 RankAlt8; - //uint32 RankAlt9; - //uint32 RankAlt10; - //uint32 RankAlt11; - //uint32 RankAlt12; - //uint32 RankAlt13; - //uint32 RankAlt14; - //uint32 RankAlt15; - //uint32 RankFlags; - + uint32 Id; // 0 + uint32 locktype[5]; // 1-5 |0 if no lock, 1 if item needed for lock, 2 if min lockping skill needed.| + //uint32 unk1[3]; // 6-8 + uint32 lockmisc[5]; // 9-13 |If type is 1 here is a item to unlock, else is unknow for now.| + //uint32 unk2[3]; // 14-16 + uint32 minlockskill[5]; // 17-21 |Min skill in lockpiking to unlock.| + //uint32 unk3[3]; // 22-24 + //uint32 unk4[5]; // 25-29 + //uint32 unk5[3]; // 30-32 }; -struct AreaTable +struct MapDBC { - uint32 AreaId; - uint32 mapId; - uint32 ZoneId; - uint32 explorationFlag; - uint32 AreaFlags; - //uint32 unk2; - //uint32 unk3; - //uint32 unk4; - uint32 EXP;//not XP - //uint32 unk5; - uint32 level; - char* name; - //uint32 nameAlt1; - //uint32 nameAlt2; - //uint32 nameAlt3; - //uint32 nameAlt4; - //uint32 nameAlt5; - //uint32 nameAlt6; - //uint32 nameAlt7; - //uint32 nameAlt8; - //uint32 nameAlt9; - //uint32 nameAlt10; - //uint32 nameAlt11; - //uint32 nameAlt12; - //uint32 nameAlt13; - //uint32 nameAlt14; - //uint32 nameAlt15; - //uint32 nameFlags; - uint32 category; - //uint32 unk7; - //uint32 unk8; - //uint32 unk9; - //uint32 unk10; - //uint32 unk11; - //uint32 unk12; + uint32 id; // 0 + char* name_internal; // 1 + uint32 map_type; // 2 |Generic is 0, Instance is 1, Raid is 2, BG is 3, Arena is 4.| + //uint32 unk; // 3 |0 or 1.| + char* real_name; // 4 + //char* Altreal_name[15]; // 5-19 + uint32 nameflags; // 20 + //uint32 unk[3]; // 21-23 |Something PvPZones related. Levels and etc.| + //uint32 unk2[4]; // 24-27 + //char* HordeText[16]; // 28-43 |Text for PvP Zones.| + //uint32 TextFlagH; // 44 + //char* AllianceText[16]; // 45-60 |Text for PvP Zones.| + //uint32 TextFlagA; // 61 + //uint32 unk3[4]; // 62-65 |Second field must be maxplayers on side.| + //char* unk4[16]; // 66-81 |Empty text fields, possible normal Intro text.| + //uint32 unk5; // 82 |Text flags.| + char* heroicReq; // 83 |Heroic mode requirement text.| + //char* heroicReq[15]; // 84-98 + //uint32 unk6; // 99 |Text flags.| + //char* unk7[16]; // 100-115 |Empty text fields, possible normal Intro text.| + //uint32 unk8; // 116 |Text flags.| + //uint32 continent_map; // 117 |Id of map. 0,1 or 530.Sometimes -1.| + //float coord1; // 118 |Some coordinates.Perhaps X.| + //float coord2; // 119 |Some coordinates.Perhaps Y.| + //uint32 unk9[3]; // 120-122 |Flags.| }; -struct FactionTemplateDBC +struct SkillLineDBC { - uint32 ID; - uint32 Faction; - uint32 FactionGroup; - uint32 Mask; - uint32 FriendlyMask; - uint32 HostileMask; - uint32 EnemyFactions[4]; - uint32 FriendlyFactions[4]; + uint32 id; // 0 + uint32 type; // 1 |Reference to SkillLineCategory.dbc| + uint32 unk1; // 2 |0 always, except Internal(#769) here is 22| + char* Name; // 3 + //char* Name[15]; // 4-18 + //uint32 NameFlags; // 19 + //char* Description[16]; // 20-35 + //uint32 DescriptionFlags; // 36 + //uint32 spellIcon; // 37 }; -struct AuctionHouseDBC +struct SkillLineAbilityDBC { - uint32 id; - uint32 unk; - uint32 fee; - uint32 tax; - //char* name; - //char* nameAlt1; - //char* nameAlt2; - //char* nameAlt3; - //char* nameAlt4; - //char* nameAlt5; - //char* nameAlt6; - //char* nameAlt7; - //char* nameAlt8; - //char* nameAlt9; - //char* nameAlt10; - //char* nameAlt11; - //char* nameAlt12; - //char* nameAlt13; - //char* nameAlt14; - //char* nameAlt15; - //char* nameFlags; + uint32 Id; // 0 + uint32 skilline; // 1 |Reference to SkillLine.dbc| + uint32 spell; // 2 |Reference to Spell.dbc| + uint32 racemask; // 3 + uint32 classmask; // 4 + //uint32 unk[2]; // 5-6 |Always 0.| + uint32 reqskillvalue; // 7 |Only for trade skills.Not for training.| + uint32 next; // 8 |Next spell.| + uint32 minrank; // 9 + uint32 grey; // 10 + uint32 green; // 11 + //uint32 unk2[2]; // 12-13 + uint32 reqTP; // 14 |Required training points for hunter pet abilities| }; -struct FactionDBC +struct SpellDBC { - uint32 ID; - int32 RepListId; - uint32 baseRepMask[4]; - //uint32 unk1[4]; - int32 baseRepValue[4]; - //uint32 unk2[4]; - uint32 parentFaction; - char* Name; - //uint32 shit[16]; - //uint32 Description; - //uint32 shit2[16]; + uint32 Id; // 0 + uint32 School; // 1 |School Category. Also can serve at resistance calculating.| + uint32 Category; // 2 + uint32 field4; // 3 something like spelltype 0: general spells 1: Pet spells 2: Disguise / transormation spells 3: enchantment spells + uint32 DispelType; // 4 |Reference to SpellDispellType.dbc.| + uint32 MechanicsType; // 5 + uint32 Attributes; // 6 + uint32 AttributesEx; // 7 + uint32 Flags3; // 8 + uint32 Flags4; // 9 // Flags to + uint32 field11; // 10 // Flags.... + uint32 unk201_1; // 11 // Flags 2.0.1 unknown one + uint32 RequiredShapeShift; // 12 |BitMask for which shapeshift forms this spell can be used in.| + uint32 ExcludedShapeShift; // 13 |BitMask for which shapeshift forms this spell cannot be used in.| + uint32 Targets; // 14 - N / M + uint32 TargetCreatureType; // 15 + uint32 RequiresSpellFocus; // 16 + uint32 CasterAuraState; // 17 + uint32 TargetAuraState; // 18 + uint32 unk201_2; // 19 2.0.1 unknown two + uint32 unk201_3; // 20 2.0.1 unknown three + uint32 CastingTimeIndex; // 21 + uint32 RecoveryTime; // 22 + uint32 CategoryRecoveryTime; // 23 recoverytime + uint32 InterruptFlags; // 24 + uint32 AuraInterruptFlags; // 25 + uint32 ChannelInterruptFlags; // 26 + uint32 procFlags; // 27 + uint32 procChance; // 28 + int32 procCharges; // 29 + uint32 maxLevel; // 30 + uint32 baseLevel; // 31 + uint32 spellLevel; // 32 + uint32 DurationIndex; // 33 + uint32 powerType; // 34 + uint32 manaCost; // 35 + uint32 manaCostPerlevel; // 36 + uint32 manaPerSecond; // 37 + uint32 manaPerSecondPerLevel; // 38 + uint32 rangeIndex; // 39 + float speed; // 40 + uint32 modalNextSpell; // 41 + uint32 maxstack; // 42 + uint32 Totem[2]; // 43-44 + uint32 Reagent[8]; // 45-52 + uint32 ReagentCount[8]; // 53-60 + uint32 EquippedItemClass; // 61 + uint32 EquippedItemSubClass; // 62 + uint32 RequiredItemFlags; // 63 + uint32 Effect[3]; // 64-66 + uint32 EffectDieSides[3]; // 67-69 + uint32 EffectBaseDice[3]; // 70-72 + float EffectDicePerLevel[3]; // 73-75 + float EffectRealPointsPerLevel[3]; // 76-78 + int32 EffectBasePoints[3]; // 79-81 + int32 EffectMechanic[3]; // 82-84 |Reference to SpellMechanic.dbc.| + uint32 EffectImplicitTargetA[3]; // 85-87 + uint32 EffectImplicitTargetB[3]; // 88-90 + uint32 EffectRadiusIndex[3]; // 91-93 |Reference to SpellRadius.dbc.| + uint32 EffectApplyAuraName[3]; // 94-96 + uint32 EffectAmplitude[3]; // 97-99 + float Effectunknown[3]; // 100-102 This value is the $ value from description + uint32 EffectChainTarget[3]; // 103-105 + uint32 EffectSpellGroupRelation[3];// 106-108 Not sure maybe we should rename it. its the relation to field: SpellGroupType + uint32 EffectMiscValue[3]; // 109-111 + uint32 EffectTriggerSpell[3]; // 112-114 + float EffectPointsPerComboPoint[3];// 115-117 + uint32 SpellVisual; // 118 + uint32 field114; // 119 + uint32 dummy; // 120 + uint32 CoSpell; // 121 activeIconID; + uint32 spellPriority; // 122 |Deciding factor if it overrides other effects.Values 0 or 50.| + char* Name; // 123 + //char* AltName[15]; // 124-138 + uint32 NameFlags; // 139 + char * Rank; // 140 + //char * AltRank[15]; // 141-155 + uint32 RankFlags; // 156 + char * Description; // 157 + //char * AltDescription[15]; // 158-172 + uint32 DescriptionFlags; // 173 + char * BuffDescription; // 174 + //char * AltBuffDescription[15]; // 175-189 + uint32 buffdescflags; // 190 + uint32 ManaCostPercentage; // 191 + uint32 unkflags; // 192 + uint32 StartRecoveryTime; // 193 |Global cooldown.| + uint32 StartRecoveryCategory; // 194 + uint32 SpellFamilyName; // 195 + uint64 SpellGroupType; // 196+197 + uint32 MaxTargets; // 198 + uint32 Spell_Dmg_Type; // 199 dmg_class Integer 0=None, 1=Magic, 2=Melee, 3=Ranged + uint32 FG; // 200 0,1,2 related to Spell_Dmg_Type I think + int32 FH; // 201 related to paladin aura's + float dmg_multiplier[3]; // 202-204 if the name is correct I dono + uint32 FL; // 205 only one spellid:6994 has this value = 369 + uint32 FM; // 206 only one spellid:6994 has this value = 4 + uint32 FN; // 207 only one spellid:26869 has this flag = 1 + uint32 TotemType[2]; // 208-209 |Reference to TotemCategory.dbc.| + uint32 AreaId; // 210 |Area of possible using.| + + /// CUSTOM: these fields are used for the modifications made in the world.cpp + uint32 DiminishStatus; // + uint32 proc_interval; //!!! CUSTOM, + uint32 buffIndexType; //!!! CUSTOM, + uint32 c_is_flags; //!!! CUSTOM, store spell checks in a static way : isdamageind,ishealing + uint32 buffType; //!!! CUSTOM, these are related to creating a item through a spell + uint32 RankNumber; //!!! CUSTOM, this protects players from having >1 rank of a spell + uint32 NameHash; //!!! CUSTOM, related to custom spells, summon spell quest related spells + float base_range_or_radius_sqr; //!!! CUSTOM, needed for aoe spells most of the time + uint32 talent_tree; //!!! CUSTOM, + bool removable_by_immunity; //!!! CUSTOM, + uint32 in_front_status; //!!! CUSTOM, + bool is_melee_spell; //!!! CUSTOM, + bool is_ranged_spell; //!!! CUSTOM, + uint32 EffectSpellGroupRelation_high[3];//!!! this is not contained in client dbc but server must have it + uint32 ThreatForSpell; + bool can_be_dispelled; //!!! CUSTOM }; -struct DBCTaxiNode +struct SpellCastTimesDBC { - uint32 id; - uint32 mapid; - float x; - float y; - float z; - //uint32 name; - //uint32 namealt1; - //uint32 namealt2; - //uint32 namealt3; - //uint32 namealt4; - //uint32 namealt5; - //uint32 namealt6; - //uint32 namealt7; - //uint32 namealt8; - //uint32 namealt9; - //uint32 namealt10; - //uint32 namealt11; - //uint32 namealt12; - //uint32 namealt13; - //uint32 namealt14; - //uint32 namealt15; - //uint32 nameflags; - uint32 horde_mount; - uint32 alliance_mount; + uint32 ID; // 0 + uint32 CastTime; // 1 + //uint32 unk1; // 2 |0 or Null.| + //uint32 unk2; // 3 |Sometimes same as #1, but often less value.| }; -struct DBCTaxiPath +struct SpellDurationDBC { - uint32 id; - uint32 from; - uint32 to; - uint32 price; + uint32 ID; // 0 + uint32 Duration1; // 1 + uint32 Duration2; // 2 + uint32 Duration3; // 3 }; -struct DBCTaxiPathNode +struct SpellItemEnchantmentDBC { - uint32 id; - uint32 path; - uint32 seq; - uint32 mapid; - float x; - float y; - float z; - uint32 unk1; - uint32 waittime; - //uint32 unk2; - //uint32 unk3; + uint32 Id; // 0 + uint32 type[3]; // 1-3 + int32 min[3]; // 4-6 |For compat, in practice min==max| + int32 max[3]; // 7-9 + uint32 spell[3]; // 10-12 + char* Name; // 13 + //char* AltName[15]; // 14-28 + uint32 NameFlags; // 29 + uint32 visual; // 30 |Aura Id.| + uint32 EnchantGroups; // 31 |Slot.| + uint32 GemEntry; // 32 |GemId.| + uint32 unk7; // 33 |Gem Related.Enchantment Condition.| }; -struct CreatureSpellDataEntry +struct SpellRadiusDBC { - uint32 id; - uint32 Spells[3]; - uint32 PHSpell; - uint32 Cooldowns[3]; - uint32 PH; + uint32 ID; // 0 + float Radius; // 1 + //float unk1; // 2 + float Radius2; // 3 }; -struct CharRaceEntry +struct SpellRangeDBC { - uint32 race_id; - //uint32 unk1; - uint32 faction_id; - //uint32 unk2; - //uint32 unk3; - //uint32 unk4; - //uint32 unk5; - //uint32 unk6; - uint32 team_id; - //uint32 unk7; - //uint32 unk8; - //uint32 unk9; - char* name1; - uint32 cinematic_id; - //uint32 name2; - //uint32 unk10; - //uint32 unk11; - //uint32 unk12; - //uint32 unk13; - //uint32 unk14; - //uint32 unk15; - //uint32 unk16; - //uint32 unk17; - //uint32 unk18; - //uint32 unk19; - //uint32 unk20; - //uint32 unk21; - //uint32 unk22; - //uint32 unk23; - //uint32 unk24; - //uint32 unk25; - //uint32 unk26; - //uint32 unk27; - //uint32 unk28; - //uint32 unk29; + uint32 ID; // 0 + float minRange; // 1 + float maxRange; // 2 + //uint32 someflags; // 3 + char* Name_Internal; // 4 + //char* AltName_Internal[15]; // 5-19 + uint32 intern_nameflags; // 20 + char* Name; // 21 + //char* AltName[15]; // 22-36 + uint32 nameflags; // 37 }; -struct CharClassEntry + +struct TalentDBC { - uint32 class_id; - //uint32 unk1; - uint32 power_type; - //uint32 unk2; - char* name; - //uint32 namealt1; - //uint32 namealt2; - //uint32 namealt3; - //uint32 namealt4; - //uint32 namealt5; - //uint32 namealt6; - //uint32 namealt7; - //uint32 namealt8; - //uint32 namealt9; - //uint32 namealt10; - //uint32 namealt11; - //uint32 namealt12; - //uint32 namealt13; - //uint32 namealt14; - //uint32 namealt15; - //uint32 nameflags; - //uint32 unk3; - //uint32 unk4; - //uint32 unk5; + uint32 TalentID; // 0 + uint32 TalentTree; // 1 |Reference to TalentTab.dbc.| + uint32 Row; // 2 + uint32 Col; // 3 + uint32 RankID[5]; // 4-8 + //uint32 unk[4]; // 9-12 |Always 0, maybe not used high ranks.| + uint32 DependsOn; // 13 |Index in Talent.dbc (TalentId).| + //uint32 unk1[2]; // 14-15 + uint32 DependsOnRank; // 16 + //uint32 unk2[4]; // 17-20 |Field #19 is bool. Perhaps 0 - for Auras, 1 for spells.Field #20 always 0, except Nature's Grace is 339.| }; -struct CreatureFamilyEntry +struct TalentTabDBC { - uint32 ID; - float minsize; - uint32 minlevel; - float maxsize; - uint32 maxlevel; - uint32 skilline; - uint32 tameable; //second skill line - 270 Generic - uint32 petdietflags; - char* name; - //uint32 namealt1; - //uint32 namealt2; - //uint32 namealt3; - //uint32 namealt4; - //uint32 namealt5; - //uint32 namealt6; - //uint32 namealt7; - //uint32 namealt8; - //uint32 namealt9; - //uint32 namealt10; - //uint32 namealt11; - //uint32 namealt12; - //uint32 namealt13; - //uint32 namealt14; - //uint32 namealt15; - //uint32 nameflags; - //uint32 unk1; + uint32 TalentTabID; // 0 + char* Name; // 1 + //char* AltName[15]; // 2-16 + uint32 nameflags; // 17 + uint32 spellicon; // 18 + //uint32 unk; // 19 |Always 2047.| + uint32 ClassMask; // 20 + uint32 TabPage; // 21 + char* InternalName; // 22 }; -struct MapEntry +struct Trainerspell { - uint32 id; - char* name_internal; - uint32 map_type; - //uint32 unk; - char* real_name; - //uint32 unk_1; - //uint32 unk1; - //uint32 unk2; - //uint32 unk3; - //uint32 unk4; - //uint32 unk5; - //uint32 unk6; - //uint32 unk7; - //uint32 unk8; - //uint32 unk9; - //uint32 unk10; - //uint32 unk11; - //uint32 unk12; - //uint32 unk13; - //uint32 unk14; - //uint32 unk15; - //uint32 unk16; - //uint32 unk17; - //uint32 unk18; - //uint32 unk19; - //uint32 unk20; - //uint32 unk21; - //uint32 unk22; - //uint32 unk23; - //uint32 unk24; - //uint32 unk25; - //uint32 unk26; - //uint32 unk27; - //uint32 unk28; - //uint32 unk29; - //uint32 unk30; - //uint32 unk31; - //uint32 unk32; - //uint32 unk33; - //uint32 unk34; - //uint32 unk35; - //uint32 unk36; - //uint32 unk37; - //uint32 unk38; - //uint32 unk39; - //uint32 unk40; - //uint32 unk41; - //uint32 unk42; - //uint32 unk43; - //uint32 unk44; - //uint32 unk45; - //uint32 unk46; - //uint32 unk47; - //uint32 unk48; - //uint32 unk49; - //uint32 unk50; - //uint32 unk51; - //uint32 unk52; - //uint32 unk53; - //uint32 unk54; - //uint32 unk55; - //uint32 unk56; - //uint32 unk57; - //uint32 unk58; - //uint32 unk59; - //uint32 unk60; - //uint32 unk61; - //uint32 unk62; - //uint32 unk63; - //uint32 unk64; - //uint32 unk65; - //uint32 unk66; - //uint32 unk67; - //uint32 unk68; - //uint32 unk69; - //uint32 aunk1; - //uint32 aunk2; - //uint32 aunk3; - //uint32 aunk4; - //uint32 aunk5; - //uint32 aunk6; - //uint32 aunk7; - //uint32 aunk8; - //uint32 aunk9; - //uint32 aunk10; - //uint32 aunk11; - //uint32 aunk12; - //uint32 aunk13; - //uint32 aunk14; - //uint32 aunk15; - //uint32 aunk16; - //uint32 aunk17; - //uint32 aunk18; - //uint32 aunk19; - //uint32 aunk20; - //uint32 aunk21; - //uint32 aunk22; - //uint32 aunk23; - //uint32 aunk24; - //uint32 bunk1; - //uint32 bunk2; - //uint32 bunk3; - //uint32 bunk4; - //uint32 bunk5; - //uint32 bunk6; - //uint32 bunk7; - //uint32 bunk8; - //uint32 bunk9; - //uint32 bunk10; - //uint32 bunk11; - //uint32 bunk12; - //uint32 bunk13; - //uint32 bunk14; - //uint32 bunk15; - //uint32 bunk16; - //uint32 bunk17; - //uint32 bunk18; - //uint32 bunk19; - //uint32 bunk20; - //uint32 bunk21; - //uint32 bunk22; - //uint32 bunk23; - //uint32 bunk24; + uint32 Id; + uint32 skilline1; + uint32 skilline2; + uint32 skilline3; + uint32 maxlvl; + uint32 charclass; }; -struct ItemRandomSuffixEntry +struct TaxiNodesDBC { - uint32 id; - uint32 enchantments[3]; - uint32 prefixes[3]; + uint32 id; // 0 + uint32 mapid; // 1 + float x; // 2 + float y; // 3 + float z; // 4 + char* name; // 5 + //char* Altname[15]; // 6-20 + uint32 nameflags; // 21 + uint32 horde_mount; // 22 |Type of mount.| + uint32 alliance_mount; // 23 |Type of mount.| }; -struct CombatRatingDBC +struct TaxiPathDBC { - float val; + uint32 id; // 0 + uint32 from; // 1 + uint32 to; // 2 + uint32 price; // 3 |Price in copper for a flight.| }; -struct ChatChannelDBC +struct TaxiPathNodeDBC { - uint32 id; - uint32 flags; + uint32 id; // 0 + uint32 path; // 1 + uint32 seq; // 2 + uint32 mapid; // 3 + float x; // 4 + float y; // 5 + float z; // 6 + uint32 unk1; // 7 + uint32 waittime; // 8 + //uint32 unk2; // 9 + //uint32 unk3; // 10 }; #pragma pack(pop) -ASCENT_INLINE float GetRadius(SpellRadius *radius) +ASCENT_INLINE float GetRadius(SpellRadiusDBC *radius) { return radius->Radius; } -ASCENT_INLINE uint32 GetCastTime(SpellCastTime *time) +ASCENT_INLINE uint32 GetCastTime(SpellCastTimesDBC *time) { return time->CastTime; } -ASCENT_INLINE float GetMaxRange(SpellRange *range) +ASCENT_INLINE float GetMaxRange(SpellRangeDBC *range) { return range->maxRange; } -ASCENT_INLINE float GetMinRange(SpellRange *range) +ASCENT_INLINE float GetMinRange(SpellRangeDBC *range) { return range->minRange; } -ASCENT_INLINE uint32 GetDuration(SpellDuration *dur) +ASCENT_INLINE uint32 GetDuration(SpellDurationDBC *dur) { return dur->Duration1; } @@ -1140,37 +838,39 @@ #endif }; -extern SERVER_DECL DBCStorage dbcGemProperty; -extern SERVER_DECL DBCStorage dbcItemSet; -extern SERVER_DECL DBCStorage dbcLock; -extern SERVER_DECL DBCStorage dbcSpell; -extern SERVER_DECL DBCStorage dbcSpellDuration; -extern SERVER_DECL DBCStorage dbcSpellRange; -extern SERVER_DECL DBCStorage dbcEmoteEntry; -extern SERVER_DECL DBCStorage dbcSpellRadius; -extern SERVER_DECL DBCStorage dbcSpellCastTime; -extern SERVER_DECL DBCStorage dbcArea; -extern SERVER_DECL DBCStorage dbcFactionTemplate; -extern SERVER_DECL DBCStorage dbcFaction; -extern SERVER_DECL DBCStorage dbcEnchant; -extern SERVER_DECL DBCStorage dbcRandomProps; -extern SERVER_DECL DBCStorage dbcSkillLineSpell; -extern SERVER_DECL DBCStorage dbcSkillLine; -extern SERVER_DECL DBCStorage dbcTaxiNode; -extern SERVER_DECL DBCStorage dbcTaxiPath; -extern SERVER_DECL DBCStorage dbcTaxiPathNode; +extern SERVER_DECL DBCStorage dbcAreaTable; extern SERVER_DECL DBCStorage dbcAuctionHouse; -extern SERVER_DECL DBCStorage dbcTalent; -extern SERVER_DECL DBCStorage dbcTalentTab; -extern SERVER_DECL DBCStorage dbcCreatureSpellData; -extern SERVER_DECL DBCStorage dbcCreatureFamily; -extern SERVER_DECL DBCStorage dbcCharClass; -extern SERVER_DECL DBCStorage dbcCharRace; -extern SERVER_DECL DBCStorage dbcMap; -extern SERVER_DECL DBCStorage dbcItemExtendedCost; -extern SERVER_DECL DBCStorage dbcItemRandomSuffix; -extern SERVER_DECL DBCStorage dbcCombatRating; -extern SERVER_DECL DBCStorage dbcChatChannels; +extern SERVER_DECL DBCStorage dbcChatChannels; +extern SERVER_DECL DBCStorage dbcChrClasses; +extern SERVER_DECL DBCStorage dbcChrRaces; +extern SERVER_DECL DBCStorage dbcCreatureFamily; +extern SERVER_DECL DBCStorage dbcCreatureSpellData; +extern SERVER_DECL DBCStorage dbcEmotesText; +extern SERVER_DECL DBCStorage dbcFaction; +extern SERVER_DECL DBCStorage dbcFactionTemplate; +extern SERVER_DECL DBCStorage dbcGemProperties; +extern SERVER_DECL DBCStorage dbcgtCombatRatings; +extern SERVER_DECL DBCStorage dbcItemExtendedCost; +extern SERVER_DECL DBCStorage dbcItemRandomProperties; +extern SERVER_DECL DBCStorage dbcItemRandomSuffix; +extern SERVER_DECL DBCStorage dbcItemSet; +// LFGDungeons.dbc? +extern SERVER_DECL DBCStorage dbcLock; +extern SERVER_DECL DBCStorage dbcMap; +// NameGen.dbc?? +extern SERVER_DECL DBCStorage dbcSkillLine; +extern SERVER_DECL DBCStorage dbcSkillLineAbility; +extern SERVER_DECL DBCStorage dbcSpell; +extern SERVER_DECL DBCStorage dbcSpellCastTimes; +extern SERVER_DECL DBCStorage dbcSpellDuration; +extern SERVER_DECL DBCStorage dbcSpellItemEnchantment; +extern SERVER_DECL DBCStorage dbcSpellRadius; +extern SERVER_DECL DBCStorage dbcSpellRange; +extern SERVER_DECL DBCStorage dbcTalent; +extern SERVER_DECL DBCStorage dbcTalentTab; +extern SERVER_DECL DBCStorage dbcTaxiNodes; +extern SERVER_DECL DBCStorage dbcTaxiPath; +extern SERVER_DECL DBCStorage dbcTaxiPathNode; bool LoadDBCs();