-started updating DBC formats for 14545
-added new dbc files for dev usage
This commit is contained in:
@@ -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));
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user