aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRat <gmstreetrat@gmail.com>2011-11-21 14:27:26 +0100
committerRat <gmstreetrat@gmail.com>2011-11-21 14:27:26 +0100
commit154612f279d7e506b0fe2984ef0fc7db4d84878d (patch)
treef365a2bf44113e2d74b34759fbee47dc1740bc84 /src
parentd2a97e0d26ae61707c29f5d43649d354e8d85329 (diff)
-started updating DBC formats for 14545
-added new dbc files for dev usage
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Achievements/AchievementMgr.cpp6
-rwxr-xr-xsrc/server/game/Battlegrounds/BattlegroundMgr.cpp2
-rwxr-xr-xsrc/server/game/DataStores/DBCEnums.h84
-rwxr-xr-xsrc/server/game/DataStores/DBCStores.cpp30
-rwxr-xr-xsrc/server/game/DataStores/DBCStores.h1
-rwxr-xr-xsrc/server/game/DataStores/DBCStructure.h205
-rwxr-xr-xsrc/server/game/DataStores/DBCfmt.h34
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp1
-rwxr-xr-xsrc/server/game/World/World.cpp6
9 files changed, 221 insertions, 148 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index 8967446f199..448f14874f9 100755
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -1965,7 +1965,7 @@ void AchievementMgr::StartTimedAchievement(AchievementCriteriaTimedTypes type, u
AchievementCriteriaEntryList const& achievementCriteriaList = sAchievementMgr->GetTimedAchievementCriteriaByType(type);
for (AchievementCriteriaEntryList::const_iterator i = achievementCriteriaList.begin(); i != achievementCriteriaList.end(); ++i)
{
- if ((*i)->timerStartEvent != entry)
+ if ((*i)->timedCriteriaMiscId != entry)
continue;
AchievementEntry const* achievement = sAchievementStore.LookupEntry((*i)->referredAchievement);
@@ -1988,7 +1988,7 @@ void AchievementMgr::RemoveTimedAchievement(AchievementCriteriaTimedTypes type,
AchievementCriteriaEntryList const& achievementCriteriaList = sAchievementMgr->GetTimedAchievementCriteriaByType(type);
for (AchievementCriteriaEntryList::const_iterator i = achievementCriteriaList.begin(); i!=achievementCriteriaList.end(); ++i)
{
- if ((*i)->timerStartEvent != entry)
+ if ((*i)->timedCriteriaMiscId != entry)
continue;
TimedAchievementMap::iterator timedIter = m_timedAchievements.find((*i)->ID);
@@ -2194,7 +2194,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaList()
m_AchievementCriteriaListByAchievement[criteria->referredAchievement].push_back(criteria);
if (criteria->timeLimit)
- m_AchievementCriteriasByTimedType[criteria->timedType].push_back(criteria);
+ m_AchievementCriteriasByTimedType[criteria->timedCriteriaStartType].push_back(criteria);
}
sLog->outString(">> Loaded %lu achievement criteria in %u ms", (unsigned long)m_AchievementCriteriasByType->size(), GetMSTimeDiffToNow(oldMSTime));
diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp
index a9acced82ae..d0f322e3f8c 100755
--- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp
+++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp
@@ -765,7 +765,7 @@ void BattlegroundMgr::CreateInitialBattlegrounds()
selectionWeight = fields[9].GetUInt8();
data.scriptId = sObjectMgr->GetScriptId(fields[10].GetCString());
- data.BattlegroundName = bl->name[sWorld->GetDefaultDbcLocale()];
+ //data.BattlegroundName = bl->name[sWorld->GetDefaultDbcLocale()];
data.MapID = bl->mapid[0];
if (!CreateBattleground(data))
diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h
index 80121aa3334..a4cfc2758d1 100755
--- a/src/server/game/DataStores/DBCEnums.h
+++ b/src/server/game/DataStores/DBCEnums.h
@@ -58,16 +58,24 @@ enum AchievementFaction
enum AchievementFlags
{
- ACHIEVEMENT_FLAG_COUNTER = 0x00000001, // Just count statistic (never stop and complete)
- ACHIEVEMENT_FLAG_HIDDEN = 0x00000002, // Not sent to client - internal use only
- ACHIEVEMENT_FLAG_STORE_MAX_VALUE = 0x00000004, // Store only max value? used only in "Reach level xx"
- ACHIEVEMENT_FLAG_SUMM = 0x00000008, // Use summ criteria value from all reqirements (and calculate max value)
- ACHIEVEMENT_FLAG_MAX_USED = 0x00000010, // Show max criteria (and calculate max value ??)
- ACHIEVEMENT_FLAG_REQ_COUNT = 0x00000020, // Use not zero req count (and calculate max value)
- ACHIEVEMENT_FLAG_AVERAGE = 0x00000040, // Show as average value (value / time_in_days) depend from other flag (by def use last criteria value)
- ACHIEVEMENT_FLAG_BAR = 0x00000080, // Show as progress bar (value / max vale) depend from other flag (by def use last criteria value)
- ACHIEVEMENT_FLAG_REALM_FIRST_REACH = 0x00000100, //
- ACHIEVEMENT_FLAG_REALM_FIRST_KILL = 0x00000200, //
+ ACHIEVEMENT_FLAG_COUNTER = 0x00000001, // Just count statistic (never stop and complete)
+ ACHIEVEMENT_FLAG_HIDDEN = 0x00000002, // Not sent to client - internal use only
+ ACHIEVEMENT_FLAG_STORE_MAX_VALUE = 0x00000004, // Store only max value? used only in "Reach level xx"
+ ACHIEVEMENT_FLAG_SUMM = 0x00000008, // Use summ criteria value from all reqirements (and calculate max value)
+ ACHIEVEMENT_FLAG_MAX_USED = 0x00000010, // Show max criteria (and calculate max value ??)
+ ACHIEVEMENT_FLAG_REQ_COUNT = 0x00000020, // Use not zero req count (and calculate max value)
+ ACHIEVEMENT_FLAG_AVERAGE = 0x00000040, // Show as average value (value / time_in_days) depend from other flag (by def use last criteria value)
+ ACHIEVEMENT_FLAG_BAR = 0x00000080, // Show as progress bar (value / max vale) depend from other flag (by def use last criteria value)
+ ACHIEVEMENT_FLAG_REALM_FIRST_REACH = 0x00000100, //
+ ACHIEVEMENT_FLAG_REALM_FIRST_KILL = 0x00000200, //
+ ACHIEVEMENT_FLAG_UNK3 = 0x00000400, // ACHIEVEMENT_FLAG_HIDE_NAME_IN_TIE
+ ACHIEVEMENT_FLAG_REALM_FIRST_GUILD = 0x00000800, // first guild on realm done something
+ ACHIEVEMENT_FLAG_UNK4 = 0x00001000, // as guild group?
+ ACHIEVEMENT_FLAG_UNK5 = 0x00002000, // as guild group?
+ ACHIEVEMENT_FLAG_GUILD = 0x00004000, //
+ ACHIEVEMENT_FLAG_SHOW_GUILD_MEMBERS = 0x00008000, //
+ ACHIEVEMENT_FLAG_SHOW_CRITERIA_MEMBERS = 0x00010000, //
+
};
#define MAX_CRITERIA_REQUIREMENTS 2
@@ -102,6 +110,7 @@ enum AchievementCriteriaTimedTypes
ACHIEVEMENT_TIMED_TYPE_SPELL_TARGET = 6, // Timer is started by being target of spell with entry in timerStartEvent
ACHIEVEMENT_TIMED_TYPE_CREATURE = 7, // Timer is started by killing creature with entry in timerStartEvent
ACHIEVEMENT_TIMED_TYPE_ITEM = 9, // Timer is started by using item with entry in timerStartEvent
+ ACHIEVEMENT_TIMED_TYPE_UNK = 10, // Unknown
ACHIEVEMENT_TIMED_TYPE_MAX,
};
@@ -215,17 +224,56 @@ enum AchievementCriteriaTypes
ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LINE= 112,
ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL = 113,
ACHIEVEMENT_CRITERIA_TYPE_ACCEPTED_SUMMONINGS = 114,
- // 0..115 => 116 criteria types total
ACHIEVEMENT_CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS = 115,
ACHIEVEMENT_CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS = 119,
- // 120
- // 121
- // 122
- // 123
- // 0..123 => 124 criteria types total
- ACHIEVEMENT_CRITERIA_TYPE_TOTAL = 124,
+ // 120 -
+ // 121 -
+ // 122 -
+ // 123 -
+ ACHIEVEMENT_CRITERIA_TYPE_SPENT_GOLD_GUILD_REPAIRS = 124,
+ ACHIEVEMENT_CRITERIA_TYPE_REACH_GUILD_LEVEL = 125,
+ ACHIEVEMENT_CRITERIA_TYPE_CRAFT_ITEMS_GUILD = 126,
+ ACHIEVEMENT_CRITERIA_TYPE_CATCH_FROM_POOL = 127,
+ ACHIEVEMENT_CRITERIA_TYPE_BUY_GUILD_BANK_SLOTS = 128,
+ ACHIEVEMENT_CRITERIA_TYPE_EARN_GUILD_ACHIEVEMENT_POINTS = 129,
+ ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_BATTLEGROUND = 130,
+ // 131 -
+ ACHIEVEMENT_CRITERIA_TYPE_REACH_BG_RATING = 132,
+ ACHIEVEMENT_CRITERIA_TYPE_BUY_GUILD_TABARD = 133,
+ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUESTS_GUILD = 134,
+ ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILLS_GUILD = 135,
+ ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE_TYPE_GUILD = 136,
+ // 0..136 => 137 criteria types total
+ ACHIEVEMENT_CRITERIA_TYPE_TOTAL = 137,
+};
+
+enum AchievementCriteriaMoreReqType
+{
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_ITEM_LEVEL = 3,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_CREATURE_ID = 4,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_SPELL = 8,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_SPELL_ON_TARGET = 10,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_ITEM_QUALITY_EQUIPPED = 14,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_ITEM_QUALITY_LOOTED = 15,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_AREA_ID = 17,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_AREA_ID2 = 18,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_RAID_DIFFICULTY = 20,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_ARENA_TYPE = 24,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_PLAYER_CLASS = 26,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_PLAYER_RACE = 27,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_PLAYER_CLASS2 = 28,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_CREATURE_TYPE = 30,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_MAP_ID = 32,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_TIMED_QUEST = 35,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_PLAYER_TITLE = 38,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_PLAYER_LEVEL = 39,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_PLAYER_LEVEL2 = 40,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_AREA_ID3 = 41,
+ ACHIEVEMENT_CRITERIA_MORE_REQ_TYPE_GUILD_REP = 62,
};
+
+
enum AchievementCategory
{
CATEGORY_CHILDRENS_WEEK = 163,
@@ -233,7 +281,7 @@ enum AchievementCategory
enum AreaFlags
{
- AREA_FLAG_UNK0 = 0x00000001, // Unknown
+ AREA_FLAG_SNOW = 0x00000001, // snow (only Dun Morogh, Naxxramas, Razorfen Downs and Winterspring)
AREA_FLAG_UNK1 = 0x00000002, // Razorfen Downs, Naxxramas and Acherus: The Ebon Hold (3.3.5a)
AREA_FLAG_UNK2 = 0x00000004, // Only used for areas on map 571 (development before)
AREA_FLAG_SLAVE_CAPITAL = 0x00000008, // city and city subsones
diff --git a/src/server/game/DataStores/DBCStores.cpp b/src/server/game/DataStores/DBCStores.cpp
index e13be03965d..e0d2294abc4 100755
--- a/src/server/game/DataStores/DBCStores.cpp
+++ b/src/server/game/DataStores/DBCStores.cpp
@@ -59,6 +59,7 @@ static WMOAreaInfoByTripple sWMOAreaInfoByTripple;
DBCStorage <AchievementEntry> sAchievementStore(Achievementfmt);
DBCStorage <AchievementCriteriaEntry> sAchievementCriteriaStore(AchievementCriteriafmt);
DBCStorage <AreaTriggerEntry> sAreaTriggerStore(AreaTriggerEntryfmt);
+DBCStorage <ArmorLocationEntry> sArmorLocationStore(ArmorLocationfmt);
DBCStorage <AuctionHouseEntry> sAuctionHouseStore(AuctionHouseEntryfmt);
DBCStorage <BankBagSlotPricesEntry> sBankBagSlotPricesStore(BankBagSlotPricesEntryfmt);
DBCStorage <BattlemasterListEntry> sBattlemasterListStore(BattlemasterListEntryfmt);
@@ -275,20 +276,21 @@ void LoadDBCStores(const std::string& dataPath)
}
}
- LoadDBC(availableDbcLocales, bad_dbc_files, sAchievementStore, dbcPath, "Achievement.dbc", &CustomAchievementfmt, &CustomAchievementIndex);
- LoadDBC(availableDbcLocales, bad_dbc_files, sAchievementCriteriaStore, dbcPath, "Achievement_Criteria.dbc");
- LoadDBC(availableDbcLocales, bad_dbc_files, sAreaTriggerStore, dbcPath, "AreaTrigger.dbc");
- LoadDBC(availableDbcLocales, bad_dbc_files, sAreaGroupStore, dbcPath, "AreaGroup.dbc");
- LoadDBC(availableDbcLocales, bad_dbc_files, sAreaPOIStore, dbcPath, "AreaPOI.dbc");
- LoadDBC(availableDbcLocales, bad_dbc_files, sAuctionHouseStore, dbcPath, "AuctionHouse.dbc");
- LoadDBC(availableDbcLocales, bad_dbc_files, sBankBagSlotPricesStore, dbcPath, "BankBagSlotPrices.dbc");
- LoadDBC(availableDbcLocales, bad_dbc_files, sBattlemasterListStore, dbcPath, "BattlemasterList.dbc");
- LoadDBC(availableDbcLocales, bad_dbc_files, sBarberShopStyleStore, dbcPath, "BarberShopStyle.dbc");
- LoadDBC(availableDbcLocales, bad_dbc_files, sCharStartOutfitStore, dbcPath, "CharStartOutfit.dbc");
- LoadDBC(availableDbcLocales, bad_dbc_files, sCharTitlesStore, dbcPath, "CharTitles.dbc");
- LoadDBC(availableDbcLocales, bad_dbc_files, sChatChannelsStore, dbcPath, "ChatChannels.dbc");
- LoadDBC(availableDbcLocales, bad_dbc_files, sChrClassesStore, dbcPath, "ChrClasses.dbc");
- LoadDBC(availableDbcLocales, bad_dbc_files, sChrRacesStore, dbcPath, "ChrRaces.dbc");
+ LoadDBC(availableDbcLocales, bad_dbc_files, sAchievementStore, dbcPath, "Achievement.dbc"/*, &CustomAchievementfmt, &CustomAchievementIndex*/);//14545
+ LoadDBC(availableDbcLocales, bad_dbc_files, sAchievementCriteriaStore, dbcPath, "Achievement_Criteria.dbc");//14545
+ LoadDBC(availableDbcLocales, bad_dbc_files, sAreaTriggerStore, dbcPath, "AreaTrigger.dbc");//14545
+ LoadDBC(availableDbcLocales, bad_dbc_files, sAreaGroupStore, dbcPath, "AreaGroup.dbc");//14545
+ LoadDBC(availableDbcLocales, bad_dbc_files, sAreaPOIStore, dbcPath, "AreaPOI.dbc");//14545
+ LoadDBC(availableDbcLocales, bad_dbc_files, sAuctionHouseStore, dbcPath, "AuctionHouse.dbc");//14545
+ LoadDBC(availableDbcLocales, bad_dbc_files, sArmorLocationStore, dbcPath, "ArmorLocation.dbc");//14545
+ LoadDBC(availableDbcLocales, bad_dbc_files, sBankBagSlotPricesStore, dbcPath, "BankBagSlotPrices.dbc");//14545
+ LoadDBC(availableDbcLocales, bad_dbc_files, sBattlemasterListStore, dbcPath, "BattlemasterList.dbc");//14545
+ LoadDBC(availableDbcLocales, bad_dbc_files, sBarberShopStyleStore, dbcPath, "BarberShopStyle.dbc");//14545
+ LoadDBC(availableDbcLocales, bad_dbc_files, sCharStartOutfitStore, dbcPath, "CharStartOutfit.dbc");//14545
+ LoadDBC(availableDbcLocales, bad_dbc_files, sCharTitlesStore, dbcPath, "CharTitles.dbc");//14545
+ LoadDBC(availableDbcLocales, bad_dbc_files, sChatChannelsStore, dbcPath, "ChatChannels.dbc");//14545
+ LoadDBC(availableDbcLocales, bad_dbc_files, sChrClassesStore, dbcPath, "ChrClasses.dbc");//14545
+ LoadDBC(availableDbcLocales, bad_dbc_files, sChrRacesStore, dbcPath, "ChrRaces.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sCinematicSequencesStore, dbcPath, "CinematicSequences.dbc");
LoadDBC(availableDbcLocales, bad_dbc_files, sCreatureDisplayInfoStore, dbcPath, "CreatureDisplayInfo.dbc");
LoadDBC(availableDbcLocales, bad_dbc_files, sCreatureFamilyStore, dbcPath, "CreatureFamily.dbc");
diff --git a/src/server/game/DataStores/DBCStores.h b/src/server/game/DataStores/DBCStores.h
index 8bd22a3ab91..fd143b6a690 100755
--- a/src/server/game/DataStores/DBCStores.h
+++ b/src/server/game/DataStores/DBCStores.h
@@ -69,6 +69,7 @@ extern DBCStorage <AreaTableEntry> sAreaStore;// recommend access
extern DBCStorage <AreaGroupEntry> sAreaGroupStore;
extern DBCStorage <AreaPOIEntry> sAreaPOIStore;
extern DBCStorage <AreaTriggerEntry> sAreaTriggerStore;
+extern DBCStorage <ArmorLocationEntry> sArmorLocationStore;
extern DBCStorage <AuctionHouseEntry> sAuctionHouseStore;
extern DBCStorage <BankBagSlotPricesEntry> sBankBagSlotPricesStore;
extern DBCStorage <BarberShopStyleEntry> sBarberShopStyleStore;
diff --git a/src/server/game/DataStores/DBCStructure.h b/src/server/game/DataStores/DBCStructure.h
index 9bc72e31df9..f2e082c832f 100755
--- a/src/server/game/DataStores/DBCStructure.h
+++ b/src/server/game/DataStores/DBCStructure.h
@@ -44,28 +44,24 @@ struct AchievementEntry
int32 requiredFaction; // 1 -1=all, 0=horde, 1=alliance
int32 mapID; // 2 -1=none
//uint32 parentAchievement; // 3 its Achievement parent (can`t start while parent uncomplete, use its Criteria if don`t have own, use its progress on begin)
- char *name[16]; // 4-19
- //uint32 name_flags; // 20
- //char *description[16]; // 21-36
- //uint32 desc_flags; // 37
- uint32 categoryId; // 38
- uint32 points; // 39 reward points
- //uint32 OrderInCategory; // 40
- uint32 flags; // 41
- //uint32 icon; // 42 icon (from SpellIcon.dbc)
- //char *titleReward[16]; // 43-58
- //uint32 titleReward_flags; // 59
- uint32 count; // 60 - need this count of completed criterias (own or referenced achievement criterias)
- uint32 refAchievement; // 61 - referenced achievement (counting of all completed criterias)
+ DBCString name; // 4
+ //DBCString description; // 5
+ uint32 categoryId; // 6
+ uint32 points; // 7 reward points
+ //uint32 OrderInCategory; // 8
+ uint32 flags; // 9
+ //uint32 icon; // 10 icon (from SpellIcon.dbc)
+ //DBCString reward; // 11
+ uint32 count; // 12 - need this count of completed criterias (own or referenced achievement criterias)
+ uint32 refAchievement; // 13 - referenced achievement (counting of all completed criterias)
};
struct AchievementCategoryEntry
{
uint32 ID; // 0
uint32 parentCategory; // 1 -1 for main category
- //char *name[16]; // 2-17
- //uint32 name_flags; // 18
- //uint32 sortOrder; // 19
+ //DBCString name; // 2
+ //uint32 sortOrder; // 3
};
struct AchievementCriteriaEntry
@@ -260,7 +256,14 @@ struct AchievementCriteriaEntry
struct
{
uint32 teamtype; // 3 {2, 3, 5}
- uint32 PersonalRating; // 4
+ uint32 teamrating; // 4
+ } reach_team_rating;
+
+ // ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39
+ struct
+ {
+ uint32 teamtype; // 3 {2, 3, 5}
+ uint32 PersonalRating; // 4
} highest_personal_rating;
// ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40
@@ -370,6 +373,7 @@ struct AchievementCriteriaEntry
} do_emote;
// ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE = 13
// ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE = 55
+ // ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS = 56
struct
{
uint32 unused; // 3
@@ -504,15 +508,19 @@ struct AchievementCriteriaEntry
uint32 additionalRequirement_value;
} additionalRequirements[MAX_CRITERIA_REQUIREMENTS];
- //char* name[16]; // 9-24
- //uint32 name_flags; // 25
- uint32 flags; // 26
- uint32 timedType; // 27
- uint32 timerStartEvent; // 28 Alway appears with timed events
- // for timed spells it is spell id for
- // timed kills it is creature id
- uint32 timeLimit; // 29 time limit in seconds
- //uint32 showOrder; // 30 show order
+ char* name; // 9 m_description_lang
+ uint32 completionFlag; // 10 m_flags
+ uint32 timedCriteriaStartType; // 11 m_timer_start_event Only appears with timed achievements, seems to be the type of starting a timed Achievement, only type 1 and some of type 6 need manual starting
+ // 1: ByEventId(?) (serverside IDs), 2: ByQuestId, 5: ByCastSpellId(?)
+ // 6: BySpellIdTarget(some of these are unknown spells, some not, some maybe spells)
+ // 7: ByKillNpcId, 9: ByUseItemId
+ uint32 timedCriteriaMiscId; // 12 m_timer_asset_id Alway appears with timed events, used internally to start the achievement, store
+ uint32 timeLimit; // 13 m_timer_time time limit in seconds
+ uint32 showOrder; // 14 m_ui_order also used in achievement shift-links as index in state bitmask
+ //uint32 unk1; // 15 only one value, still unknown
+ //uint32 unk2; // 16 all zeros
+ //uint32 moreRequirement[3]; // 17-19
+ //uint32 moreRequirementValue[3]; // 20-22
};
struct AreaTableEntry
@@ -524,9 +532,15 @@ struct AreaTableEntry
uint32 flags; // 4, unknown value but 312 for all cities
// 5-9 unused
int32 area_level; // 10
- char* area_name[16]; // 11-26
- // 27, string flags, unused
- uint32 team; // 28
+ DBCString area_name; // 11
+ uint32 team; // 12
+ // 13-19 unknown
+ //uint32 unk20; // 20 4.0.0
+ //uint32 unk21; // 21 4.0.0
+ //uint32 unk22; // 22 4.0.0
+ //uint32 unk23; // 23 4.0.0
+ //uint32 unk24; // 24 - worldStateId
+ //uint32 unk25 // 25
// helpers
bool IsSanctuary() const
@@ -552,16 +566,14 @@ struct AreaPOIEntry
uint32 icon[11]; //1-11
float x; //12
float y; //13
- float z; //14
- uint32 mapId; //15
- //uint32 val1; //16
- uint32 zoneId; //17
- //char* name[16]; //18-33
- //uint32 name_flag; //34
- //char* name2[16]; //35-50
- //uint32 name_flag2; //51
- uint32 worldState; //52
- //uint32 val2; //53
+ uint32 mapId; //14
+ //uint32 val1; //15
+ uint32 zoneId; //16
+ //DBCString name; //17 - name
+ //DBCString name2; //18 - name2
+ uint32 worldState; //19
+ //uint32 val2; //20
+ //uint32 unk; //21
};
struct AreaTriggerEntry
@@ -571,11 +583,20 @@ struct AreaTriggerEntry
float x; // 2 m_x
float y; // 3 m_y
float z; // 4 m_z
- float radius; // 5 m_radius
- float box_x; // 6 m_box_length
- float box_y; // 7 m_box_width
- float box_z; // 8 m_box_heigh
- float box_orientation; // 9 m_box_yaw
+ //uint32 // 5
+ //uint32 // 6
+ //uint32 // 7
+ float radius; // 8 m_radius
+ float box_x; // 9 m_box_length
+ float box_y; // 10 m_box_width
+ float box_z; // 11 m_box_heigh
+ float box_orientation; // 12 m_box_yaw
+};
+
+struct ArmorLocationEntry
+{
+ uint32 InventoryType; // 0
+ float Value[5]; // 1-5 multiplier for armor types (cloth...plate, no armor?)
};
struct AuctionHouseEntry
@@ -584,8 +605,7 @@ struct AuctionHouseEntry
uint32 faction; // 1 id of faction.dbc for player factions associated with city
uint32 depositPercent; // 2 1/3 from real
uint32 cutPercent; // 3
- //char* name[16]; // 4-19
- // 20 string flag, unused
+ //DBCString name; // 4
};
struct BankBagSlotPricesEntry
@@ -598,14 +618,12 @@ struct BarberShopStyleEntry
{
uint32 Id; // 0
uint32 type; // 1 value 0 -> hair, value 2 -> facialhair
- //char* name[16]; // 2-17 name of hair style
- //uint32 name_flags; // 18
- //uint32 unk_name[16]; // 19-34, all empty
- //uint32 unk_flags; // 35
- //float CostMultiplier; // 36 values 1 and 0.75
- uint32 race; // 37 race
- uint32 gender; // 38 0 -> male, 1 -> female
- uint32 hair_id; // 39 real ID to hair/facial hair
+ //DBCString name; // 2 m_DisplayName_lang
+ //uint32 unk_name; // 3 m_Description_lang
+ //float CostMultiplier; // 4 m_Cost_Modifier
+ uint32 race; // 5 m_race
+ uint32 gender; // 6 m_sex
+ uint32 hair_id; // 7 m_data (real ID to hair/facial hair)
};
struct BattlemasterListEntry
@@ -614,12 +632,15 @@ struct BattlemasterListEntry
int32 mapid[8]; // 1-8 mapid
uint32 type; // 9 (3 - BG, 4 - arena)
//uint32 canJoinAsGroup; // 10 (0 or 1)
- char* name[16]; // 11-26
- //uint32 nameFlags // 27 string flag, unused
- uint32 maxGroupSize; // 28 maxGroupSize, used for checking if queue as group
- uint32 HolidayWorldStateId; // 29 new 3.1
- //uint32 MinLevel; // 30
- //uint32 SomeLevel; // 31, may be max level
+ DBCString name; // 11
+ uint32 maxGroupSize; // 12 maxGroupSize, used for checking if queue as group
+ uint32 HolidayWorldStateId; // 13 new 3.1
+ uint32 minLevel; // 14, min level (sync with PvPDifficulty.dbc content)
+ uint32 maxLevel; // 15, max level (sync with PvPDifficulty.dbc content)
+ //uint32 maxGroupSizeRated; // 16 4.0.1
+ //uint32 unk; // 17 - 4.0.6.13596
+ //uint32 maxPlayers; // 18 4.0.1
+ //uint32 unk1; // 19 4.0.3, value 2 for Rated Battlegrounds
};
#define MAX_OUTFIT_ITEMS 24
@@ -634,46 +655,45 @@ struct CharStartOutfitEntry
//uint32 Unknown1; // 38, unique values (index-like with gaps ordered in other way as ids)
//uint32 Unknown2; // 39
//uint32 Unknown3; // 40
+ //uint32 Unknown4; // 41
+ //uint32 Unknown5; // 42
};
struct CharTitlesEntry
{
uint32 ID; // 0, title ids, for example in Quest::GetCharTitleId()
//uint32 unk1; // 1 flags?
- char* name[16]; // 2-17
- // 18 string flag, unused
- //char* name2[16]; // 19-34, unused
- // 35 string flag, unused
- uint32 bit_index; // 36 used in PLAYER_CHOSEN_TITLE and 1<<index in PLAYER__FIELD_KNOWN_TITLES
+ DBCString name; // 2 m_name_lang
+ //char* name2; // 3 m_name1_lang
+ uint32 bit_index; // 4 m_mask_ID used in PLAYER_CHOSEN_TITLE and 1<<index in PLAYER__FIELD_KNOWN_TITLES
+ //uint32 // 5
};
struct ChatChannelsEntry
{
uint32 ChannelID; // 0
uint32 flags; // 1
- char* pattern[16]; // 3-18
- // 19 string flags, unused
- //char* name[16]; // 20-35 unused
- // 36 string flag, unused
+ //uint32 // 2 m_factionGroup
+ DBCString pattern; // 3 m_name_lang
+ //DBCString name; // 4 m_shortcut_lang
};
struct ChrClassesEntry
{
uint32 ClassID; // 0
- // 1, unused
- uint32 powerType; // 2
- // 3-4, unused
- //char* name[16]; // 5-20 unused
- // 21 string flag, unused
- //char* nameFemale[16]; // 21-36 unused, if different from base (male) case
- // 37 string flag, unused
- //char* nameNeutralGender[16]; // 38-53 unused, if different from base (male) case
- // 54 string flag, unused
- // 55, unused
- uint32 spellfamily; // 56
- // 57, unused
- uint32 CinematicSequence; // 58 id from CinematicSequences.dbc
- uint32 expansion; // 59 (0 - original race, 1 - tbc addon, ...)
+ uint32 powerType; // 1 m_DisplayPower
+ // 2 m_petNameToken
+ DBCString name; // 3 m_name_lang
+ //DBCString nameFemale; // 4 m_name_female_lang
+ //DBCString nameNeutralGender; // 5 m_name_male_lang
+ //DBCString capitalizedName // 6, m_filename
+ uint32 spellfamily; // 7 m_spellClassSet
+ //uint32 flags2; // 8 m_flags (0x08 HasRelicSlot)
+ uint32 CinematicSequence; // 9 m_cinematicSequenceID
+ uint32 expansion; // 10 m_required_expansion
+ //uint32 // 11
+ //uint32 // 12
+ //uint32 // 13
};
struct ChrRacesEntry
@@ -688,15 +708,16 @@ struct ChrRacesEntry
uint32 TeamID; // 7 (7-Alliance 1-Horde)
// 8-11 unused
uint32 CinematicSequence; // 12 id from CinematicSequences.dbc
- //uint32 unk_322; // 13 faction (0 alliance, 1 horde, 2 not available?)
- char* name[16]; // 14-29 used for DBC language detection/selection
- // 30 string flags, unused
- //char* nameFemale[16]; // 31-46, if different from base (male) case
- // 47 string flags, unused
- //char* nameNeutralGender[16]; // 48-63, if different from base (male) case
- // 64 string flags, unused
- // 65-67 unused
- uint32 expansion; // 68 (0 - original race, 1 - tbc addon, ...)
+ //uint32 unk_322; // 13 m_alliance (0 alliance, 1 horde, 2 not available?)
+ DBCString name; // 14 m_name_lang used for DBC language detection/selection
+ //DBCString nameFemale; // 15 m_name_female_lang
+ //DBCString nameNeutralGender; // 16 m_name_male_lang
+ // 17-18 m_facialHairCustomization[2]
+ // 19 m_hairCustomization
+ uint32 expansion; // 20 m_required_expansion
+ //uint32 // 21 (23 for worgens)
+ //uint32 // 22 4.0.0
+ //uint32 // 23 4.0.0
};
/* not used
diff --git a/src/server/game/DataStores/DBCfmt.h b/src/server/game/DataStores/DBCfmt.h
index 5a29f5c0c9e..8ee9fffbf62 100755
--- a/src/server/game/DataStores/DBCfmt.h
+++ b/src/server/game/DataStores/DBCfmt.h
@@ -19,24 +19,26 @@
#ifndef TRINITY_DBCSFRM_H
#define TRINITY_DBCSFRM_H
-const char Achievementfmt[]="niixssssssssssssssssxxxxxxxxxxxxxxxxxxiixixxxxxxxxxxxxxxxxxxii";
-const std::string CustomAchievementfmt="pppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapapaaaaaaaaaaaaaaaaaapp";
-const std::string CustomAchievementIndex = "ID";
-const char AchievementCriteriafmt[]="niiiiiiiixxxxxxxxxxxxxxxxxiiiix";
-const char AreaTableEntryfmt[]="iiinixxxxxissssssssssssssssxixxxxxxx";
+const char Achievementfmt[]="niixsxiixixxii";
+//const std::string CustomAchievementfmt="pppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapapaaaaaaaaaaaaaaaaaapp";
+//const std::string CustomAchievementIndex = "ID";
+const char AchievementCriteriafmt[]="niiiiiiiisiiiiixxxxxxxx";
+const char AreaTableEntryfmt[]="iiinixxxxxisixxxxxxxxxxxxx";
const char AreaGroupEntryfmt[]="niiiiiii";
-const char AreaPOIEntryfmt[]="niiiiiiiiiiifffixixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxix";
-const char AreaTriggerEntryfmt[]="niffffffff";
-const char AuctionHouseEntryfmt[]="niiixxxxxxxxxxxxxxxxx";
+const char AreaPOIEntryfmt[]="niiiiiiiiiiiffixixxixx";
+const char AreaTriggerEntryfmt[]="nifffxxxfffff";
+const char ArmorLocationfmt[]="nfffff";
+const char AuctionHouseEntryfmt[]="niiix";
const char BankBagSlotPricesEntryfmt[]="ni";
-const char BarberShopStyleEntryfmt[]="nixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiii";
-const char BattlemasterListEntryfmt[]="niiiiiiiiixssssssssssssssssxiixx";
-const char CharStartOutfitEntryfmt[]="diiiiiiiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
-const char CharTitlesEntryfmt[]="nxssssssssssssssssxxxxxxxxxxxxxxxxxxi";
-const char ChatChannelsEntryfmt[]="nixssssssssssssssssxxxxxxxxxxxxxxxxxx";
- // ChatChannelsEntryfmt, index not used (more compact store)
-const char ChrClassesEntryfmt[]="nxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixii";
-const char ChrRacesEntryfmt[]="nxixiixixxxxixssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi";
+const char BarberShopStyleEntryfmt[]="nixxxiii";
+const char BattlemasterListEntryfmt[]="niiiiiiiiixsiiiixxxx";
+const char CharStartOutfitEntryfmt[]="diiiiiiiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
+const char CharTitlesEntryfmt[]="nxsxix";
+const char ChatChannelsEntryfmt[]="nixsx";
+
+const char ChrClassesEntryfmt[]="nixsxxxixiixxx";
+const char ChrRacesEntryfmt[]="nxixiixixxxxixsxxxxxixxx";
+
const char CinematicSequencesEntryfmt[]="nxxxxxxxxx";
const char CreatureDisplayInfofmt[]="nxxxfxxxxxxxxxxx";
const char CreatureFamilyfmt[]="nfifiiiiixssssssssssssssssxx";
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 8ed64e3cdcf..2ae5b5fb189 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -2007,7 +2007,6 @@ bool Player::BuildEnumData(QueryResult result, ByteBuffer* data)
if (enchant)
break;
}
- sLog->outError("entry %u aura %u invtype %u display %u", itemId, enchant ? enchant->aura_id : uint32(0), proto->InventoryType,db2Item->DisplayId);
*data << uint32(enchant ? enchant->aura_id : 0);
*data << uint8(proto->InventoryType);
*data << uint32(db2Item->DisplayId);
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 32b99b71abf..87cd3755538 100755
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -1765,7 +1765,7 @@ void World::DetectDBCLang()
std::string availableLocalsStr;
uint8 default_locale = TOTAL_LOCALES;
- for (uint8 i = default_locale-1; i < TOTAL_LOCALES; --i) // -1 will be 255 due to uint8
+ /*for (uint8 i = default_locale-1; i < TOTAL_LOCALES; --i) // -1 will be 255 due to uint8
{
if (race->name[i][0] != '\0') // check by race names
{
@@ -1774,7 +1774,7 @@ void World::DetectDBCLang()
availableLocalsStr += localeNames[i];
availableLocalsStr += " ";
}
- }
+ }*/
if (default_locale != m_lang_confid && m_lang_confid < TOTAL_LOCALES &&
(m_availableDbcLocaleMask & (1 << m_lang_confid)))
@@ -1785,7 +1785,7 @@ void World::DetectDBCLang()
if (default_locale >= TOTAL_LOCALES)
{
sLog->outError("Unable to determine your DBC Locale! (corrupt DBC?)");
- exit(1);
+ //exit(1); TODO: enable after updated all dbc structures
}
m_defaultDbcLocale = LocaleConstant(default_locale);