From e0309d94c8502d57734998cac769c474f355f7a2 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 18 Sep 2018 23:37:45 +0200 Subject: Core/Players: Updated pvp talent implementation to bfa --- src/server/game/Entities/Player/Player.cpp | 189 +++++++++++------------------ src/server/game/Entities/Player/Player.h | 11 +- 2 files changed, 74 insertions(+), 126 deletions(-) (limited to 'src/server/game/Entities/Player') diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index f956d970992..2371a9b8a82 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -3565,9 +3565,6 @@ void Player::ResetPvpTalents() if (!talentInfo) continue; - if (talentInfo->ClassID && talentInfo->ClassID != getClass()) - continue; - RemovePvpTalent(talentInfo); } @@ -6496,24 +6493,11 @@ void Player::SetHonorLevel(uint8 level) if (level == oldHonorLevel) return; - uint32 rewardPackID = sDB2Manager.GetRewardPackIDForPvpRewardByHonorLevelAndPrestige(level, prestige); - RewardPlayerWithRewardPack(rewardPackID); - SetUInt32Value(PLAYER_FIELD_HONOR_LEVEL, level); UpdateHonorNextLevel(); UpdateCriteria(CRITERIA_TYPE_HONOR_LEVEL_REACHED); - // This code is here because no link was found between those items and this reward condition in the db2 files. - // Interesting CriteriaTree found: Tree ids: 51140, 51156 (criteria id 31773, modifier tree id 37759) - if (level == 50 && prestige == 1) - { - if (GetTeam() == ALLIANCE) - AddItem(138992, 1); - else - AddItem(138996, 1); - } - if (CanPrestige()) Prestige(); } @@ -6529,15 +6513,12 @@ void Player::Prestige() bool Player::CanPrestige() const { - if (GetSession()->GetExpansion() >= EXPANSION_LEGION && getLevel() >= PLAYER_LEVEL_MIN_HONOR && GetHonorLevel() >= PLAYER_MAX_HONOR_LEVEL && GetPrestigeLevel() < sDB2Manager.GetMaxPrestige()) - return true; - return false; } bool Player::IsMaxPrestige() const { - return GetPrestigeLevel() == sDB2Manager.GetMaxPrestige(); + return true; } void Player::UpdateHonorNextLevel() @@ -26238,62 +26219,59 @@ void Player::ResetTalentSpecialization() UpdateItemSetAuras(false); } -TalentLearnResult Player::LearnPvpTalent(uint32 talentID, int32* spellOnCooldown) +TalentLearnResult Player::LearnPvpTalent(uint32 talentID, uint8 slot, int32* spellOnCooldown) { + if (slot >= MAX_PVP_TALENT_SLOTS) + return TALENT_FAILED_UNKNOWN; + if (IsInCombat()) return TALENT_FAILED_AFFECTING_COMBAT; - if (getLevel() < PLAYER_LEVEL_MIN_HONOR) - return TALENT_FAILED_UNKNOWN; + if (isDead()) + return TALENT_FAILED_CANT_DO_THAT_RIGHT_NOW; PvpTalentEntry const* talentInfo = sPvpTalentStore.LookupEntry(talentID); if (!talentInfo) return TALENT_FAILED_UNKNOWN; - if (talentInfo->SpecID) - { - if (talentInfo->SpecID != GetInt32Value(PLAYER_FIELD_CURRENT_SPEC_ID)) - return TALENT_FAILED_UNKNOWN; - } - else if (talentInfo->Role >= 0) - { - if (talentInfo->Role != sChrSpecializationStore.AssertEntry(GetUInt32Value(PLAYER_FIELD_CURRENT_SPEC_ID))->Role) - return TALENT_FAILED_UNKNOWN; - } + if (talentInfo->SpecID != GetInt32Value(PLAYER_FIELD_CURRENT_SPEC_ID)) + return TALENT_FAILED_UNKNOWN; - // prevent learn talent for different class (cheating) - if (talentInfo->ClassID && talentInfo->ClassID != getClass()) + if (talentInfo->LevelRequired > getLevel()) + return TALENT_FAILED_UNKNOWN; + + if (sDB2Manager.GetRequiredLevelForPvpTalentSlot(slot, Classes(getClass())) > getLevel()) return TALENT_FAILED_UNKNOWN; - if (!GetPrestigeLevel()) - if (sDB2Manager.GetRequiredHonorLevelForPvpTalent(talentInfo) > GetHonorLevel()) + if (PvpTalentCategoryEntry const* talentCategory = sPvpTalentCategoryStore.LookupEntry(talentInfo->PvpTalentCategoryID)) + if (!(talentCategory->TalentSlotMask & (1 << slot))) return TALENT_FAILED_UNKNOWN; - // Check if player doesn't have any talent in current tier - for (uint32 c = 0; c < MAX_PVP_TALENT_COLUMNS; ++c) - { - for (PvpTalentEntry const* talent : sDB2Manager.GetPvpTalentsByPosition(getClass(), talentInfo->TierID, c)) - { - if (HasPvpTalent(talent->ID, GetActiveTalentGroup()) && !HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING) && HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC)) - return TALENT_FAILED_REST_AREA; + // Check if player doesn't have this talent in other slot + if (HasPvpTalent(talentID, GetActiveTalentGroup())) + return TALENT_FAILED_UNKNOWN; - if (GetSpellHistory()->HasCooldown(talent->SpellID)) - { - *spellOnCooldown = talent->SpellID; - return TALENT_FAILED_CANT_REMOVE_TALENT; - } + if (PvpTalentEntry const* talent = sPvpTalentStore.LookupEntry(GetPvpTalentMap(GetActiveTalentGroup())[slot])) + { + if (!HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING) && !HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_ALLOW_CHANGING_TALENTS)) + return TALENT_FAILED_REST_AREA; - RemovePvpTalent(talent); + if (GetSpellHistory()->HasCooldown(talent->SpellID)) + { + *spellOnCooldown = talent->SpellID; + return TALENT_FAILED_CANT_REMOVE_TALENT; } + + RemovePvpTalent(talent); } - if (!AddPvpTalent(talentInfo, GetActiveTalentGroup(), true)) + if (!AddPvpTalent(talentInfo, GetActiveTalentGroup(), slot)) return TALENT_FAILED_UNKNOWN; return TALENT_LEARN_OK; } -bool Player::AddPvpTalent(PvpTalentEntry const* talent, uint8 activeTalentGroup, bool learning) +bool Player::AddPvpTalent(PvpTalentEntry const* talent, uint8 activeTalentGroup, uint8 slot) { ASSERT(talent); SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(talent->SpellID); @@ -26316,11 +26294,7 @@ bool Player::AddPvpTalent(PvpTalentEntry const* talent, uint8 activeTalentGroup, if (talent->OverridesSpellID) AddOverrideSpell(talent->OverridesSpellID, talent->SpellID); - PlayerTalentMap::iterator itr = GetPvpTalentMap(activeTalentGroup)->find(talent->ID); - if (itr != GetPvpTalentMap(activeTalentGroup)->end()) - itr->second = PLAYERSPELL_UNCHANGED; - else - (*GetPvpTalentMap(activeTalentGroup))[talent->ID] = learning ? PLAYERSPELL_NEW : PLAYERSPELL_UNCHANGED; + GetPvpTalentMap(activeTalentGroup)[slot] = talent->ID; return true; } @@ -26338,28 +26312,29 @@ void Player::RemovePvpTalent(PvpTalentEntry const* talent) RemoveOverrideSpell(talent->OverridesSpellID, talent->SpellID); // if this talent rank can be found in the PlayerTalentMap, mark the talent as removed so it gets deleted - PlayerTalentMap::iterator plrPvpTalent = GetPvpTalentMap(GetActiveTalentGroup())->find(talent->ID); - if (plrPvpTalent != GetPvpTalentMap(GetActiveTalentGroup())->end()) - plrPvpTalent->second = PLAYERSPELL_REMOVED; + auto plrPvpTalent = std::find(GetPvpTalentMap(GetActiveTalentGroup()).begin(), GetPvpTalentMap(GetActiveTalentGroup()).end(), talent->ID); + if (plrPvpTalent != GetPvpTalentMap(GetActiveTalentGroup()).end()) + *plrPvpTalent = 0; } void Player::TogglePvpTalents(bool enable) { - PlayerTalentMap const* pvpTalents = GetPvpTalentMap(GetActiveTalentGroup()); - for (PlayerTalentMap::value_type const& v : *pvpTalents) + PlayerPvpTalentMap const& pvpTalents = GetPvpTalentMap(GetActiveTalentGroup()); + for (uint32 pvpTalentId : pvpTalents) { - PvpTalentEntry const* pvpTalentInfo = sPvpTalentStore.AssertEntry(v.first); - if (enable && v.second != PLAYERSPELL_REMOVED) - LearnSpell(pvpTalentInfo->SpellID, false); - else - RemoveSpell(pvpTalentInfo->SpellID, true); + if (PvpTalentEntry const* pvpTalentInfo = sPvpTalentStore.LookupEntry(pvpTalentId)) + { + if (enable) + LearnSpell(pvpTalentInfo->SpellID, false); + else + RemoveSpell(pvpTalentInfo->SpellID, true); + } } } bool Player::HasPvpTalent(uint32 talentID, uint8 activeTalentGroup) const { - PlayerTalentMap::const_iterator itr = GetPvpTalentMap(activeTalentGroup)->find(talentID); - return (itr != GetPvpTalentMap(activeTalentGroup)->end() && itr->second != PLAYERSPELL_REMOVED); + return std::find(GetPvpTalentMap(activeTalentGroup).begin(), GetPvpTalentMap(activeTalentGroup).end(), talentID) != GetPvpTalentMap(activeTalentGroup).end(); } void Player::EnablePvpRules(bool dueToCombat /*= false*/) @@ -26517,12 +26492,11 @@ void Player::SendTalentsInfoData() continue; PlayerTalentMap* talents = GetTalentMap(i); - PlayerTalentMap* pvpTalents = GetPvpTalentMap(i); + PlayerPvpTalentMap const& pvpTalents = GetPvpTalentMap(i); WorldPackets::Talent::TalentGroupInfo groupInfoPkt; groupInfoPkt.SpecID = spec->ID; groupInfoPkt.TalentIDs.reserve(talents->size()); - groupInfoPkt.PvPTalentIDs.reserve(pvpTalents->size()); for (PlayerTalentMap::const_iterator itr = talents->begin(); itr != talents->end(); ++itr) { @@ -26537,9 +26511,6 @@ void Player::SendTalentsInfoData() continue; } - if (talentInfo->ClassID != getClass()) - continue; - SpellInfo const* spellEntry = sSpellMgr->GetSpellInfo(talentInfo->SpellID); if (!spellEntry) { @@ -26551,22 +26522,19 @@ void Player::SendTalentsInfoData() groupInfoPkt.TalentIDs.push_back(uint16(itr->first)); } - for (PlayerTalentMap::const_iterator itr = pvpTalents->begin(); itr != pvpTalents->end(); ++itr) + for (std::size_t slot = 0; slot < MAX_PVP_TALENT_SLOTS; ++slot) { - if (itr->second == PLAYERSPELL_REMOVED) + if (!pvpTalents[slot]) continue; - PvpTalentEntry const* talentInfo = sPvpTalentStore.LookupEntry(itr->first); + PvpTalentEntry const* talentInfo = sPvpTalentStore.LookupEntry(pvpTalents[slot]); if (!talentInfo) { TC_LOG_ERROR("entities.player", "Player::SendTalentsInfoData: Player '%s' (%s) has unknown pvp talent id: %u", - GetName().c_str(), GetGUID().ToString().c_str(), itr->first); + GetName().c_str(), GetGUID().ToString().c_str(), pvpTalents[slot]); continue; } - if (talentInfo->ClassID && talentInfo->ClassID != getClass()) - continue; - SpellInfo const* spellEntry = sSpellMgr->GetSpellInfo(talentInfo->SpellID); if (!spellEntry) { @@ -26575,7 +26543,7 @@ void Player::SendTalentsInfoData() continue; } - groupInfoPkt.PvPTalentIDs.push_back(uint16(itr->first)); + groupInfoPkt.PvPTalentIDs.push_back(uint16(pvpTalents[slot])); } packet.Info.TalentGroups.push_back(groupInfoPkt); @@ -26854,12 +26822,13 @@ void Player::_LoadTalents(PreparedQueryResult result) void Player::_LoadPvpTalents(PreparedQueryResult result) { - // "SELECT TalentID, TalentGroup FROM character_pvp_talent WHERE guid = ?" + // "SELECT talentID0, talentID1, talentID2, talentID3, talentGroup FROM character_pvp_talent WHERE guid = ?" if (result) { do - if (PvpTalentEntry const* talent = sPvpTalentStore.LookupEntry((*result)[0].GetUInt32())) - AddPvpTalent(talent, (*result)[1].GetUInt8(), false); + for (uint8 slot = 0; slot < MAX_PVP_TALENT_SLOTS; ++slot) + if (PvpTalentEntry const* talent = sPvpTalentStore.LookupEntry((*result)[slot].GetUInt32())) + AddPvpTalent(talent, (*result)[4].GetUInt8(), slot); while (result->NextRow()); } } @@ -26870,11 +26839,10 @@ void Player::_SaveTalents(SQLTransaction& trans) stmt->setUInt64(0, GetGUID().GetCounter()); trans->Append(stmt); - PlayerTalentMap* talents; for (uint8 group = 0; group < MAX_SPECIALIZATIONS; ++group) { - talents = GetTalentMap(group); - for (PlayerTalentMap::iterator itr = talents->begin(); itr != talents->end();) + PlayerTalentMap* talents = GetTalentMap(group); + for (auto itr = talents->begin(); itr != talents->end();) { if (itr->second == PLAYERSPELL_REMOVED) { @@ -26897,22 +26865,15 @@ void Player::_SaveTalents(SQLTransaction& trans) for (uint8 group = 0; group < MAX_SPECIALIZATIONS; ++group) { - talents = GetPvpTalentMap(group); - for (PlayerTalentMap::iterator itr = talents->begin(); itr != talents->end();) - { - if (itr->second == PLAYERSPELL_REMOVED) - { - itr = talents->erase(itr); - continue; - } - - stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_PVP_TALENT); - stmt->setUInt64(0, GetGUID().GetCounter()); - stmt->setUInt32(1, itr->first); - stmt->setUInt8(2, group); - trans->Append(stmt); - ++itr; - } + PlayerPvpTalentMap const& talents = GetPvpTalentMap(group); + stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_PVP_TALENT); + stmt->setUInt64(0, GetGUID().GetCounter()); + stmt->setUInt32(1, talents[0]); + stmt->setUInt32(2, talents[1]); + stmt->setUInt32(3, talents[2]); + stmt->setUInt32(4, talents[3]); + stmt->setUInt8(5, group); + trans->Append(stmt); } } @@ -26996,15 +26957,6 @@ void Player::ActivateTalentGroup(ChrSpecializationEntry const* spec) if (!talentInfo) continue; - // unlearn only talents for character class - // some spell learned by one class as normal spells or know at creation but another class learn it as talent, - // to prevent unexpected lost normal learned spell skip another class talents - if (talentInfo->ClassID && talentInfo->ClassID != getClass()) - continue; - - if (talentInfo->SpellID == 0) - continue; - SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(talentInfo->SpellID); if (!spellInfo) continue; @@ -27053,21 +27005,16 @@ void Player::ActivateTalentGroup(ChrSpecializationEntry const* spec) } } - for (uint32 pvpTalentID = 0; pvpTalentID < sTalentStore.GetNumRows(); ++pvpTalentID) + for (uint8 slot = 0; slot < MAX_PVP_TALENT_SLOTS; ++slot) { - PvpTalentEntry const* talentInfo = sPvpTalentStore.LookupEntry(pvpTalentID); + PvpTalentEntry const* talentInfo = sPvpTalentStore.LookupEntry(GetPvpTalentMap(GetActiveTalentGroup())[slot]); if (!talentInfo) continue; - // learn only talents for character class (or x-class talents) - if (talentInfo->ClassID && talentInfo->ClassID != getClass()) - continue; - if (!talentInfo->SpellID) continue; - if (HasPvpTalent(talentInfo->ID, GetActiveTalentGroup())) - AddPvpTalent(talentInfo, GetActiveTalentGroup(), true); + AddPvpTalent(talentInfo, GetActiveTalentGroup(), slot); } LearnSpecializationSpells(); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index fd2b6e9a049..967d4fae3f4 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -240,6 +240,7 @@ struct PlayerCurrency }; typedef std::unordered_map PlayerTalentMap; +typedef std::array PlayerPvpTalentMap; typedef std::unordered_map PlayerSpellMap; typedef std::unordered_set SpellModContainer; typedef std::unordered_map PlayerCurrenciesMap; @@ -1012,7 +1013,7 @@ struct TC_GAME_API SpecializationInfo } PlayerTalentMap Talents[MAX_SPECIALIZATIONS]; - PlayerTalentMap PvpTalents[MAX_SPECIALIZATIONS]; + PlayerPvpTalentMap PvpTalents[MAX_SPECIALIZATIONS]; std::vector Glyphs[MAX_SPECIALIZATIONS]; uint32 ResetTalentsCost; time_t ResetTalentsTime; @@ -1648,8 +1649,8 @@ class TC_GAME_API Player : public Unit, public GridObject uint32 CalculateTalentsTiers() const; void ResetTalentSpecialization(); - TalentLearnResult LearnPvpTalent(uint32 talentID, int32* spellOnCooldown); - bool AddPvpTalent(PvpTalentEntry const* talent, uint8 activeTalentGroup, bool learning); + TalentLearnResult LearnPvpTalent(uint32 talentID, uint8 slot, int32* spellOnCooldown); + bool AddPvpTalent(PvpTalentEntry const* talent, uint8 activeTalentGroup, uint8 slot); void RemovePvpTalent(PvpTalentEntry const* talent); void TogglePvpTalents(bool enable); bool HasPvpTalent(uint32 talentID, uint8 activeTalentGroup) const; @@ -1664,8 +1665,8 @@ class TC_GAME_API Player : public Unit, public GridObject PlayerTalentMap const* GetTalentMap(uint8 spec) const { return &_specializationInfo.Talents[spec]; } PlayerTalentMap* GetTalentMap(uint8 spec) { return &_specializationInfo.Talents[spec]; } - PlayerTalentMap const* GetPvpTalentMap(uint8 spec) const { return &_specializationInfo.PvpTalents[spec]; } - PlayerTalentMap* GetPvpTalentMap(uint8 spec) { return &_specializationInfo.PvpTalents[spec]; } + PlayerPvpTalentMap const& GetPvpTalentMap(uint8 spec) const { return _specializationInfo.PvpTalents[spec]; } + PlayerPvpTalentMap& GetPvpTalentMap(uint8 spec) { return _specializationInfo.PvpTalents[spec]; } std::vector const& GetGlyphs(uint8 spec) const { return _specializationInfo.Glyphs[spec]; } std::vector& GetGlyphs(uint8 spec) { return _specializationInfo.Glyphs[spec]; } ActionButtonList const& GetActionButtons() const { return m_actionButtons; } -- cgit v1.2.3 From dd356ea04c83b288bdd033222a400f82a9478cbe Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 26 Sep 2018 21:34:56 +0200 Subject: Core/Misc: Extended racemasks in db to uint64 --- sql/updates/world/master/2018_09_26_00_world.sql | 4 ++++ src/common/Configuration/Config.cpp | 7 ++++++- src/common/Configuration/Config.h | 3 ++- src/server/game/Achievements/CriteriaHandler.cpp | 6 +++--- src/server/game/Conditions/ConditionMgr.cpp | 6 +++--- src/server/game/DataStores/DB2Stores.cpp | 1 - src/server/game/Entities/Item/ItemTemplate.cpp | 2 +- src/server/game/Entities/Item/ItemTemplate.h | 2 +- src/server/game/Entities/Player/Player.cpp | 3 +-- src/server/game/Entities/Player/Player.h | 2 +- src/server/game/Globals/ObjectMgr.cpp | 16 ++++++++-------- src/server/game/Globals/ObjectMgr.h | 6 +++--- src/server/game/Handlers/CharacterHandler.cpp | 8 ++++---- src/server/game/Spells/SpellMgr.cpp | 4 ++-- src/server/game/Spells/SpellMgr.h | 2 +- src/server/game/World/World.cpp | 3 ++- src/server/game/World/World.h | 13 ++++++++++++- 17 files changed, 54 insertions(+), 34 deletions(-) create mode 100644 sql/updates/world/master/2018_09_26_00_world.sql (limited to 'src/server/game/Entities/Player') diff --git a/sql/updates/world/master/2018_09_26_00_world.sql b/sql/updates/world/master/2018_09_26_00_world.sql new file mode 100644 index 00000000000..af7d0ed76d9 --- /dev/null +++ b/sql/updates/world/master/2018_09_26_00_world.sql @@ -0,0 +1,4 @@ +ALTER TABLE `mail_level_reward` CHANGE `raceMask` `raceMask` bigint(20) unsigned NOT NULL; +ALTER TABLE `playercreateinfo_spell_custom` CHANGE `racemask` `racemask` bigint(20) unsigned NOT NULL; +ALTER TABLE `playercreateinfo_cast_spell` CHANGE `raceMask` `raceMask` bigint(20) unsigned NOT NULL; +ALTER TABLE `spell_area` CHANGE `racemask` `racemask` bigint(20) unsigned NOT NULL; diff --git a/src/common/Configuration/Config.cpp b/src/common/Configuration/Config.cpp index df4e5fd151d..a46f1ccaccc 100644 --- a/src/common/Configuration/Config.cpp +++ b/src/common/Configuration/Config.cpp @@ -135,7 +135,12 @@ bool ConfigMgr::GetBoolDefault(std::string const& name, bool def) const return StringToBool(val); } -int ConfigMgr::GetIntDefault(std::string const& name, int def) const +int32 ConfigMgr::GetIntDefault(std::string const& name, int32 def) const +{ + return GetValueDefault(name, def); +} + +int64 ConfigMgr::GetInt64Default(std::string const& name, int64 def) const { return GetValueDefault(name, def); } diff --git a/src/common/Configuration/Config.h b/src/common/Configuration/Config.h index a6075008969..550e6db5d6e 100644 --- a/src/common/Configuration/Config.h +++ b/src/common/Configuration/Config.h @@ -40,7 +40,8 @@ public: std::string GetStringDefault(std::string const& name, const std::string& def) const; bool GetBoolDefault(std::string const& name, bool def) const; - int GetIntDefault(std::string const& name, int def) const; + int32 GetIntDefault(std::string const& name, int32 def) const; + int64 GetInt64Default(std::string const& name, int64 def) const; float GetFloatDefault(std::string const& name, float def) const; std::string const& GetFilename(); diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index a491df3254f..744b87847bc 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -107,7 +107,7 @@ bool CriteriaData::IsValid(Criteria const* criteria) criteria->ID, criteria->Entry->Type, DataType, ClassRace.Class); return false; } - if (ClassRace.Race && ((1 << (ClassRace.Race-1)) & RACEMASK_ALL_PLAYABLE) == 0) + if (ClassRace.Race && ((UI64LIT(1) << (ClassRace.Race-1)) & RACEMASK_ALL_PLAYABLE) == 0) { TC_LOG_ERROR("sql.sql", "Table `criteria_data` (Entry: %u Type: %u) for data type CRITERIA_DATA_TYPE_T_PLAYER_CLASS_RACE (%u) contains a non-existing race in value2 (%u), ignored.", criteria->ID, criteria->Entry->Type, DataType, ClassRace.Race); @@ -252,7 +252,7 @@ bool CriteriaData::IsValid(Criteria const* criteria) criteria->ID, criteria->Entry->Type, DataType, ClassRace.Class); return false; } - if (ClassRace.Race && ((1 << (ClassRace.Race-1)) & RACEMASK_ALL_PLAYABLE) == 0) + if (ClassRace.Race && ((UI64LIT(1) << (ClassRace.Race-1)) & RACEMASK_ALL_PLAYABLE) == 0) { TC_LOG_ERROR("sql.sql", "Table `criteria_data` (Entry: %u Type: %u) for data type CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE (%u) contains a non-existing race entry in value2 (%u), ignored.", criteria->ID, criteria->Entry->Type, DataType, ClassRace.Race); @@ -595,7 +595,7 @@ void CriteriaHandler::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0 for (RewardedQuestSet::const_iterator itr = rewQuests.begin(); itr != rewQuests.end(); ++itr) { Quest const* quest = sObjectMgr->GetQuestTemplate(*itr); - if (quest && quest->GetZoneOrSort() >= 0 && uint32(quest->GetZoneOrSort()) == criteria->Entry->Asset.ZoneID) + if (quest && quest->GetZoneOrSort() >= 0 && quest->GetZoneOrSort() == criteria->Entry->Asset.ZoneID) ++counter; } SetCriteriaProgress(criteria, counter, referencePlayer); diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index bad5c195667..685486fd749 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -2002,7 +2002,7 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) const } case CONDITION_CLASS: { - if (!(cond->ConditionValue1 & CLASSMASK_ALL_PLAYABLE)) + if (cond->ConditionValue1 & ~CLASSMASK_ALL_PLAYABLE) { TC_LOG_ERROR("sql.sql", "%s has non existing classmask (%u), skipped.", cond->ToString(true).c_str(), cond->ConditionValue1 & ~CLASSMASK_ALL_PLAYABLE); return false; @@ -2011,9 +2011,9 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) const } case CONDITION_RACE: { - if (!(cond->ConditionValue1 & RACEMASK_ALL_PLAYABLE)) + if (cond->ConditionValue1 & ~RACEMASK_ALL_PLAYABLE) { - TC_LOG_ERROR("sql.sql", "%s has non existing racemask (%u), skipped.", cond->ToString(true).c_str(), cond->ConditionValue1 & ~RACEMASK_ALL_PLAYABLE); + TC_LOG_ERROR("sql.sql", "%s has non existing racemask (" UI64FMTD "), skipped.", cond->ToString(true).c_str(), cond->ConditionValue1 & ~RACEMASK_ALL_PLAYABLE); return false; } break; diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index 52ae4deaa2f..0adeac47f51 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -2685,7 +2685,6 @@ void DB2Manager::Zone2MapCoordinates(uint32 areaId, float& x, float& y) const if (!areaEntry) return; - int32 uiMapId = -1; for (auto assignment : Trinity::Containers::MapEqualRange(_uiMapAssignmentByArea[UI_MAP_SYSTEM_WORLD], areaId)) { if (assignment.second->MapID >= 0 && assignment.second->MapID != areaEntry->ContinentID) diff --git a/src/server/game/Entities/Item/ItemTemplate.cpp b/src/server/game/Entities/Item/ItemTemplate.cpp index d541f70215d..43c817cde35 100644 --- a/src/server/game/Entities/Item/ItemTemplate.cpp +++ b/src/server/game/Entities/Item/ItemTemplate.cpp @@ -21,7 +21,7 @@ #include "ItemTemplate.h" #include "Player.h" -uint32 const SocketColorToGemTypeMask[19] = +int32 const SocketColorToGemTypeMask[19] = { 0, SOCKET_COLOR_META, diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h index b9ea3bd7d23..6e806f0c124 100644 --- a/src/server/game/Entities/Item/ItemTemplate.h +++ b/src/server/game/Entities/Item/ItemTemplate.h @@ -337,7 +337,7 @@ enum SocketColor SOCKET_COLOR_RELIC_HOLY = 0x10000 }; -extern uint32 const SocketColorToGemTypeMask[19]; +extern int32 const SocketColorToGemTypeMask[19]; #define SOCKET_COLOR_STANDARD (SOCKET_COLOR_RED | SOCKET_COLOR_YELLOW | SOCKET_COLOR_BLUE) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 2371a9b8a82..5bbe17cb277 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -6489,7 +6489,6 @@ void Player::AddHonorXP(uint32 xp) void Player::SetHonorLevel(uint8 level) { uint8 oldHonorLevel = GetHonorLevel(); - uint8 prestige = GetPrestigeLevel(); if (level == oldHonorLevel) return; @@ -24489,7 +24488,7 @@ Player* Player::GetTrader() const bool Player::IsSpellFitByClassAndRace(uint32 spell_id) const { - uint32 racemask = getRaceMask(); + uint64 racemask = getRaceMask(); uint32 classmask = getClassMask(); SkillLineAbilityMapBounds bounds = sSpellMgr->GetSkillLineAbilityMapBounds(spell_id); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 967d4fae3f4..177c6aaeb4d 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1502,7 +1502,7 @@ class TC_GAME_API Player : public Unit, public GridObject static bool IsValidGender(uint8 Gender) { return Gender <= GENDER_FEMALE; } static bool IsValidClass(uint8 Class) { return ((1 << (Class - 1)) & CLASSMASK_ALL_PLAYABLE) != 0; } - static bool IsValidRace(uint8 Race) { return ((1 << (Race - 1)) & RACEMASK_ALL_PLAYABLE) != 0; } + static bool IsValidRace(uint8 Race) { return ((UI64LIT(1) << (Race - 1)) & RACEMASK_ALL_PLAYABLE) != 0; } static bool ValidateAppearance(uint8 race, uint8 class_, uint8 gender, uint8 hairID, uint8 hairColor, uint8 faceID, uint8 facialHair, uint8 skinColor, std::array const& customDisplay, bool create = false); /*********************************************************/ diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 53dbcb38f33..6f562ba412e 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -3492,13 +3492,13 @@ void ObjectMgr::LoadPlayerInfo() do { Field* fields = result->Fetch(); - uint32 raceMask = fields[0].GetUInt32(); + uint64 raceMask = fields[0].GetUInt64(); uint32 classMask = fields[1].GetUInt32(); uint32 spellId = fields[2].GetUInt32(); if (raceMask != 0 && !(raceMask & RACEMASK_ALL_PLAYABLE)) { - TC_LOG_ERROR("sql.sql", "Wrong race mask %u in `playercreateinfo_spell_custom` table, ignoring.", raceMask); + TC_LOG_ERROR("sql.sql", "Wrong race mask " UI64FMTD " in `playercreateinfo_spell_custom` table, ignoring.", raceMask); continue; } @@ -3510,7 +3510,7 @@ void ObjectMgr::LoadPlayerInfo() for (uint32 raceIndex = RACE_HUMAN; raceIndex < MAX_RACES; ++raceIndex) { - if (raceMask == 0 || ((1 << (raceIndex - 1)) & raceMask)) + if (raceMask == 0 || ((UI64LIT(1) << (raceIndex - 1)) & raceMask)) { for (uint32 classIndex = CLASS_WARRIOR; classIndex < MAX_CLASSES; ++classIndex) { @@ -3552,13 +3552,13 @@ void ObjectMgr::LoadPlayerInfo() do { Field* fields = result->Fetch(); - uint32 raceMask = fields[0].GetUInt32(); + uint64 raceMask = fields[0].GetUInt64(); uint32 classMask = fields[1].GetUInt32(); uint32 spellId = fields[2].GetUInt32(); if (raceMask != 0 && !(raceMask & RACEMASK_ALL_PLAYABLE)) { - TC_LOG_ERROR("sql.sql", "Wrong race mask %u in `playercreateinfo_cast_spell` table, ignoring.", raceMask); + TC_LOG_ERROR("sql.sql", "Wrong race mask " UI64FMTD " in `playercreateinfo_cast_spell` table, ignoring.", raceMask); continue; } @@ -3570,7 +3570,7 @@ void ObjectMgr::LoadPlayerInfo() for (uint32 raceIndex = RACE_HUMAN; raceIndex < MAX_RACES; ++raceIndex) { - if (raceMask == 0 || ((1 << (raceIndex - 1)) & raceMask)) + if (raceMask == 0 || ((UI64LIT(1) << (raceIndex - 1)) & raceMask)) { for (uint32 classIndex = CLASS_WARRIOR; classIndex < MAX_CLASSES; ++classIndex) { @@ -8578,7 +8578,7 @@ void ObjectMgr::LoadMailLevelRewards() Field* fields = result->Fetch(); uint8 level = fields[0].GetUInt8(); - uint32 raceMask = fields[1].GetUInt32(); + uint64 raceMask = fields[1].GetUInt64(); uint32 mailTemplateId = fields[2].GetUInt32(); uint32 senderEntry = fields[3].GetUInt32(); @@ -8590,7 +8590,7 @@ void ObjectMgr::LoadMailLevelRewards() if (!(raceMask & RACEMASK_ALL_PLAYABLE)) { - TC_LOG_ERROR("sql.sql", "Table `mail_level_reward` has raceMask (%u) for level %u that not include any player races, ignoring.", raceMask, level); + TC_LOG_ERROR("sql.sql", "Table `mail_level_reward` has raceMask (" UI64FMTD ") for level %u that not include any player races, ignoring.", raceMask, level); continue; } diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 51cbe07bcee..4be76f3cf8c 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -609,9 +609,9 @@ struct PetLevelInfo struct MailLevelReward { MailLevelReward() : raceMask(0), mailTemplateId(0), senderEntry(0) { } - MailLevelReward(uint32 _raceMask, uint32 _mailTemplateId, uint32 _senderEntry) : raceMask(_raceMask), mailTemplateId(_mailTemplateId), senderEntry(_senderEntry) { } + MailLevelReward(uint64 _raceMask, uint32 _mailTemplateId, uint32 _senderEntry) : raceMask(_raceMask), mailTemplateId(_mailTemplateId), senderEntry(_senderEntry) { } - uint32 raceMask; + uint64 raceMask; uint32 mailTemplateId; uint32 senderEntry; }; @@ -1308,7 +1308,7 @@ class TC_GAME_API ObjectMgr ExclusiveQuestGroups mExclusiveQuestGroups; - MailLevelReward const* GetMailLevelReward(uint8 level, uint32 raceMask) + MailLevelReward const* GetMailLevelReward(uint8 level, uint64 raceMask) { MailLevelRewardContainer::const_iterator map_itr = _mailLevelRewardStore.find(level); if (map_itr == _mailLevelRewardStore.end()) diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 51e97ed1b8d..9de1bcf3f98 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -506,8 +506,8 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact if (!HasPermission(rbac::RBAC_PERM_SKIP_CHECK_CHARACTER_CREATION_RACEMASK)) { - uint32 raceMaskDisabled = sWorld->getIntConfig(CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK); - if ((1 << (charCreate.CreateInfo->Race - 1)) & raceMaskDisabled) + uint64 raceMaskDisabled = sWorld->GetUInt64Config(CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK); + if ((UI64LIT(1) << (charCreate.CreateInfo->Race - 1)) & raceMaskDisabled) { SendCharCreate(CHAR_CREATE_DISABLED); return; @@ -1834,8 +1834,8 @@ void WorldSession::HandleCharRaceOrFactionChangeCallback(std::shared_ptrgetIntConfig(CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK); - if ((1 << (factionChangeInfo->RaceID - 1)) & raceMaskDisabled) + uint64 raceMaskDisabled = sWorld->GetUInt64Config(CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK); + if ((UI64LIT(1) << (factionChangeInfo->RaceID - 1)) & raceMaskDisabled) { SendCharFactionChange(CHAR_CREATE_ERROR, factionChangeInfo.get()); return; diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index ca9bcfaf50d..483f695283f 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -2041,7 +2041,7 @@ void SpellMgr::LoadSpellAreas() spellArea.questEndStatus = fields[4].GetUInt32(); spellArea.questEnd = fields[5].GetUInt32(); spellArea.auraSpell = fields[6].GetInt32(); - spellArea.raceMask = fields[7].GetUInt32(); + spellArea.raceMask = fields[7].GetUInt64(); spellArea.gender = Gender(fields[8].GetUInt8()); spellArea.flags = fields[9].GetUInt8(); @@ -2162,7 +2162,7 @@ void SpellMgr::LoadSpellAreas() if (spellArea.raceMask && (spellArea.raceMask & RACEMASK_ALL_PLAYABLE) == 0) { - TC_LOG_ERROR("sql.sql", "The spell %u listed in `spell_area` has wrong race mask (%u) requirement.", spell, spellArea.raceMask); + TC_LOG_ERROR("sql.sql", "The spell %u listed in `spell_area` has wrong race mask (" UI64FMTD ") requirement.", spell, spellArea.raceMask); continue; } diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h index eeb0399f357..50720cb53a6 100644 --- a/src/server/game/Spells/SpellMgr.h +++ b/src/server/game/Spells/SpellMgr.h @@ -464,7 +464,7 @@ struct TC_GAME_API SpellArea uint32 questStart; // quest start (quest must be active or rewarded for spell apply) uint32 questEnd; // quest end (quest must not be rewarded for spell apply) int32 auraSpell; // spell aura must be applied for spell apply)if possitive) and it must not be applied in other case - uint32 raceMask; // can be applied only to races + uint64 raceMask; // can be applied only to races Gender gender; // can be applied only to gender uint32 questStartStatus; // QuestStatus that quest_start must have in order to keep the spell uint32 questEndStatus; // QuestStatus that the quest_end must have in order to keep the spell (if the quest_end's status is different than this, the spell will be dropped) diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 23a62783c83..da67f724864 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -145,6 +145,7 @@ World::World() memset(rate_values, 0, sizeof(rate_values)); memset(m_int_configs, 0, sizeof(m_int_configs)); + memset(m_int64_configs, 0, sizeof(m_int64_configs)); memset(m_bool_configs, 0, sizeof(m_bool_configs)); memset(m_float_configs, 0, sizeof(m_float_configs)); } @@ -805,7 +806,7 @@ void World::LoadConfigSettings(bool reload) m_int_configs[CONFIG_CHARTER_COST_ARENA_5v5] = sConfigMgr->GetIntDefault("ArenaTeam.CharterCost.5v5", 2000000); m_int_configs[CONFIG_CHARACTER_CREATING_DISABLED] = sConfigMgr->GetIntDefault("CharacterCreating.Disabled", 0); - m_int_configs[CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK] = sConfigMgr->GetIntDefault("CharacterCreating.Disabled.RaceMask", 0); + m_int64_configs[CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK] = sConfigMgr->GetInt64Default("CharacterCreating.Disabled.RaceMask", 0); m_int_configs[CONFIG_CHARACTER_CREATING_DISABLED_CLASSMASK] = sConfigMgr->GetIntDefault("CharacterCreating.Disabled.ClassMask", 0); m_int_configs[CONFIG_CHARACTERS_PER_REALM] = sConfigMgr->GetIntDefault("CharactersPerRealm", MAX_CHARACTERS_PER_REALM); diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 16850da37ae..58d4f4f35b0 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -237,7 +237,6 @@ enum WorldIntConfigs CONFIG_MIN_CHARTER_NAME, CONFIG_MIN_PET_NAME, CONFIG_CHARACTER_CREATING_DISABLED, - CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK, CONFIG_CHARACTER_CREATING_DISABLED_CLASSMASK, CONFIG_CHARACTERS_PER_ACCOUNT, CONFIG_CHARACTERS_PER_REALM, @@ -406,6 +405,12 @@ enum WorldIntConfigs INT_CONFIG_VALUE_COUNT }; +enum WorldInt64Configs +{ + CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK, + INT64_CONFIT_VALUE_COUNT +}; + /// Server rates enum Rates { @@ -743,6 +748,11 @@ class TC_GAME_API World return index < INT_CONFIG_VALUE_COUNT ? m_int_configs[index] : 0; } + uint64 GetUInt64Config(WorldInt64Configs index) const + { + return index < INT64_CONFIT_VALUE_COUNT ? m_int64_configs[index] : 0; + } + void setWorldState(uint32 index, uint32 value); uint32 getWorldState(uint32 index) const; void LoadWorldStates(); @@ -856,6 +866,7 @@ class TC_GAME_API World float rate_values[MAX_RATES]; uint32 m_int_configs[INT_CONFIG_VALUE_COUNT]; + uint64 m_int64_configs[INT64_CONFIT_VALUE_COUNT]; bool m_bool_configs[BOOL_CONFIG_VALUE_COUNT]; float m_float_configs[FLOAT_CONFIG_VALUE_COUNT]; typedef std::map WorldStatesMap; -- cgit v1.2.3 From ee682544d027c1e33dcade592422a2d5b5e57ddb Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 1 Oct 2018 21:01:10 +0200 Subject: Core/PacketIO: Updated opcode enum to 8.0 --- src/server/game/Achievements/AchievementMgr.cpp | 4 +- src/server/game/Entities/Item/Item.cpp | 8 - src/server/game/Entities/Player/Player.cpp | 34 +- src/server/game/Entities/Player/Player.h | 9 +- src/server/game/Entities/Player/RestMgr.cpp | 2 +- src/server/game/Handlers/CalendarHandler.cpp | 4 +- src/server/game/Handlers/ChannelHandler.cpp | 6 - src/server/game/Handlers/CharacterHandler.cpp | 10 - src/server/game/Handlers/ChatHandler.cpp | 35 +- src/server/game/Handlers/MiscHandler.cpp | 6 - src/server/game/Miscellaneous/SharedDefines.h | 4 +- .../game/Server/Packets/AchievementPackets.cpp | 2 +- .../game/Server/Packets/AchievementPackets.h | 4 +- src/server/game/Server/Packets/ArtifactPackets.cpp | 8 - src/server/game/Server/Packets/ArtifactPackets.h | 11 - src/server/game/Server/Packets/CalendarPackets.cpp | 2 +- src/server/game/Server/Packets/CalendarPackets.h | 4 +- src/server/game/Server/Packets/ChannelPackets.cpp | 3 - src/server/game/Server/Packets/ChatPackets.cpp | 33 +- src/server/game/Server/Packets/ChatPackets.h | 31 +- src/server/game/Server/Packets/GuildPackets.h | 3 +- src/server/game/Server/Packets/MiscPackets.h | 8 - src/server/game/Server/Protocol/Opcodes.cpp | 73 +- src/server/game/Server/Protocol/Opcodes.h | 1904 ++++++++++---------- src/server/game/Server/WorldSession.cpp | 7 +- src/server/game/Server/WorldSession.h | 14 +- src/server/game/World/World.cpp | 7 - src/server/game/World/World.h | 1 - src/server/worldserver/worldserver.conf.dist | 8 - 29 files changed, 1074 insertions(+), 1171 deletions(-) (limited to 'src/server/game/Entities/Player') diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 837f06125e2..d11e6f79b19 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -597,7 +597,7 @@ void PlayerAchievementMgr::SendAchievementEarned(AchievementEntry const* achieve if (achievement->Flags & (ACHIEVEMENT_FLAG_REALM_FIRST_KILL | ACHIEVEMENT_FLAG_REALM_FIRST_REACH)) { // broadcast realm first reached - WorldPackets::Achievement::ServerFirstAchievement serverFirstAchievement; + WorldPackets::Achievement::BroadcastAchievement serverFirstAchievement; serverFirstAchievement.Name = _owner->GetName(); serverFirstAchievement.PlayerGUID = _owner->GetGUID(); serverFirstAchievement.AchievementID = achievement->ID; @@ -945,7 +945,7 @@ void GuildAchievementMgr::SendAchievementEarned(AchievementEntry const* achievem if (achievement->Flags & (ACHIEVEMENT_FLAG_REALM_FIRST_KILL | ACHIEVEMENT_FLAG_REALM_FIRST_REACH)) { // broadcast realm first reached - WorldPackets::Achievement::ServerFirstAchievement serverFirstAchievement; + WorldPackets::Achievement::BroadcastAchievement serverFirstAchievement; serverFirstAchievement.Name = _owner->GetName(); serverFirstAchievement.PlayerGUID = _owner->GetGUID(); serverFirstAchievement.AchievementID = achievement->ID; diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index a73541e4992..d63d5246d5a 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -316,14 +316,8 @@ bool Item::Create(ObjectGuid::LowType guidlow, uint32 itemId, Player const* owne SetUInt32Value(ITEM_FIELD_DURABILITY, itemProto->MaxDurability); for (std::size_t i = 0; i < itemProto->Effects.size(); ++i) - { if (i < 5) SetSpellCharges(i, itemProto->Effects[i]->Charges); - if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(itemProto->Effects[i]->SpellID)) - if (owner && spellInfo->HasEffect(SPELL_EFFECT_GIVE_ARTIFACT_POWER)) - if (uint32 artifactKnowledgeLevel = sWorld->getIntConfig(CONFIG_CURRENCY_START_ARTIFACT_KNOWLEDGE)) - SetModifier(ITEM_MODIFIER_ARTIFACT_KNOWLEDGE_LEVEL, artifactKnowledgeLevel + 1); - } SetUInt32Value(ITEM_FIELD_DURATION, itemProto->GetDuration()); SetUInt32Value(ITEM_FIELD_CREATE_PLAYED_TIME, 0); @@ -2565,8 +2559,6 @@ void Item::GiveArtifactXp(uint64 amount, Item* sourceItem, uint32 artifactCatego uint32 artifactKnowledgeLevel = 1; if (sourceItem && sourceItem->GetModifier(ITEM_MODIFIER_ARTIFACT_KNOWLEDGE_LEVEL)) artifactKnowledgeLevel = sourceItem->GetModifier(ITEM_MODIFIER_ARTIFACT_KNOWLEDGE_LEVEL); - else if (artifactCategoryId == ARTIFACT_CATEGORY_PRIMARY) - artifactKnowledgeLevel = sWorld->getIntConfig(CONFIG_CURRENCY_START_ARTIFACT_KNOWLEDGE) + 1; if (GtArtifactKnowledgeMultiplierEntry const* artifactKnowledge = sArtifactKnowledgeMultiplierGameTable.GetRow(artifactKnowledgeLevel)) amount = uint64(amount * artifactKnowledge->Multiplier); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 5bbe17cb277..39c79abdbe0 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -6434,8 +6434,6 @@ void Player::_InitHonorLevelOnLoadFromDB(uint32 honor, uint32 honorLevel, uint32 UpdateHonorNextLevel(); AddHonorXP(honor); - if (CanPrestige()) - Prestige(); } void Player::RewardPlayerWithRewardPack(uint32 rewardPackID) @@ -6469,7 +6467,7 @@ void Player::AddHonorXP(uint32 xp) uint32 newHonorXP = currentHonorXP + xp; uint32 honorLevel = GetHonorLevel(); - if (xp < 1 || getLevel() < PLAYER_LEVEL_MIN_HONOR || IsMaxHonorLevelAndPrestige()) + if (xp < 1 || getLevel() < PLAYER_LEVEL_MIN_HONOR || IsMaxHonorLevel()) return; while (newHonorXP >= nextHonorLevelXP) @@ -6483,7 +6481,7 @@ void Player::AddHonorXP(uint32 xp) nextHonorLevelXP = GetUInt32Value(PLAYER_FIELD_HONOR_NEXT_LEVEL); } - SetUInt32Value(PLAYER_FIELD_HONOR, IsMaxHonorLevelAndPrestige() ? 0 : newHonorXP); + SetUInt32Value(PLAYER_FIELD_HONOR, IsMaxHonorLevel() ? 0 : newHonorXP); } void Player::SetHonorLevel(uint8 level) @@ -6496,34 +6494,14 @@ void Player::SetHonorLevel(uint8 level) UpdateHonorNextLevel(); UpdateCriteria(CRITERIA_TYPE_HONOR_LEVEL_REACHED); - - if (CanPrestige()) - Prestige(); -} - -void Player::Prestige() -{ - SetUInt32Value(PLAYER_FIELD_PRESTIGE, GetPrestigeLevel() + 1); - SetUInt32Value(PLAYER_FIELD_HONOR_LEVEL, 1); - UpdateHonorNextLevel(); - - UpdateCriteria(CRITERIA_TYPE_PRESTIGE_REACHED); -} - -bool Player::CanPrestige() const -{ - return false; -} - -bool Player::IsMaxPrestige() const -{ - return true; } void Player::UpdateHonorNextLevel() { - uint32 prestige = std::min(static_cast(PRESTIGE_COLUMN_COUNT - 1), GetPrestigeLevel()); - SetUInt32Value(PLAYER_FIELD_HONOR_NEXT_LEVEL, sHonorLevelGameTable.GetRow(GetHonorLevel())->Prestige[prestige]); + // 5500 at honor level 1 + // no idea what between here + // 8800 at honor level ~14 (never goes above 8800) + SetUInt32Value(PLAYER_FIELD_HONOR_NEXT_LEVEL, 8800); } void Player::_LoadCurrency(PreparedQueryResult result) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 177c6aaeb4d..548efab34c1 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1034,7 +1034,7 @@ struct PlayerDynamicFieldSpellModByLabel }; #pragma pack(pop) -uint8 constexpr PLAYER_MAX_HONOR_LEVEL = 50; +uint32 constexpr PLAYER_MAX_HONOR_LEVEL = 500; uint8 constexpr PLAYER_LEVEL_MIN_HONOR = 110; uint32 constexpr SPELL_PVP_RULES_ENABLED = 134735; @@ -1990,11 +1990,8 @@ class TC_GAME_API Player : public Unit, public GridObject uint32 GetHonorLevel() const { return GetUInt32Value(PLAYER_FIELD_HONOR_LEVEL); } void AddHonorXP(uint32 xp); void SetHonorLevel(uint8 honorLevel); - void Prestige(); - bool CanPrestige() const; - bool IsMaxPrestige() const; - bool IsMaxHonorLevelAndPrestige() const { return IsMaxPrestige() && GetHonorLevel() == PLAYER_MAX_HONOR_LEVEL; } - // Updates PLAYER_FIELD_HONOR_NEXT_LEVEL based on PLAYER_FIELD_HONOR_LEVEL and the smallest value of PLAYER_FIELD_PRESTIGE and (PRESTIGE_COLUMN_COUNT - 1) + bool IsMaxHonorLevel() const { return GetHonorLevel() == PLAYER_MAX_HONOR_LEVEL; } + // Updates PLAYER_FIELD_HONOR_NEXT_LEVEL based on PLAYER_FIELD_HONOR_LEVEL void UpdateHonorNextLevel(); //End of PvP System diff --git a/src/server/game/Entities/Player/RestMgr.cpp b/src/server/game/Entities/Player/RestMgr.cpp index ba8c11c5ee0..a4309d79d54 100644 --- a/src/server/game/Entities/Player/RestMgr.cpp +++ b/src/server/game/Entities/Player/RestMgr.cpp @@ -49,7 +49,7 @@ void RestMgr::SetRestBonus(RestTypes restType, float restBonus) break; case REST_TYPE_HONOR: // Reset restBonus (Honor only) for players with max honor level. - if (_player->IsMaxHonorLevelAndPrestige()) + if (_player->IsMaxHonorLevel()) restBonus = 0; rest_rested_offset = REST_RESTED_HONOR; diff --git a/src/server/game/Handlers/CalendarHandler.cpp b/src/server/game/Handlers/CalendarHandler.cpp index bf9ddd12b7b..887bc6b4742 100644 --- a/src/server/game/Handlers/CalendarHandler.cpp +++ b/src/server/game/Handlers/CalendarHandler.cpp @@ -124,10 +124,10 @@ void WorldSession::HandleCalendarGetEvent(WorldPackets::Calendar::CalendarGetEve sCalendarMgr->SendCalendarCommandResult(_player->GetGUID(), CALENDAR_ERROR_EVENT_INVALID); } -void WorldSession::HandleCalendarGuildFilter(WorldPackets::Calendar::CalendarGuildFilter& calendarGuildFilter) +void WorldSession::HandleCalendarCommunityFilter(WorldPackets::Calendar::CalendarCommunityFilter& calendarCommunityFilter) { if (Guild* guild = sGuildMgr->GetGuildById(_player->GetGuildId())) - guild->MassInviteToEvent(this, calendarGuildFilter.MinLevel, calendarGuildFilter.MaxLevel, calendarGuildFilter.MaxRankOrder); + guild->MassInviteToEvent(this, calendarCommunityFilter.MinLevel, calendarCommunityFilter.MaxLevel, calendarCommunityFilter.MaxRankOrder); } void WorldSession::HandleCalendarAddEvent(WorldPackets::Calendar::CalendarAddEvent& calendarAddEvent) diff --git a/src/server/game/Handlers/ChannelHandler.cpp b/src/server/game/Handlers/ChannelHandler.cpp index 90e6150a284..529bfb50fdc 100644 --- a/src/server/game/Handlers/ChannelHandler.cpp +++ b/src/server/game/Handlers/ChannelHandler.cpp @@ -146,9 +146,6 @@ void WorldSession::HandleChannelPlayerCommand(WorldPackets::Channel::ChannelPlay case CMSG_CHAT_CHANNEL_MODERATOR: channel->SetModerator(GetPlayer(), packet.Name); break; - case CMSG_CHAT_CHANNEL_MUTE: - channel->SetMute(GetPlayer(), packet.Name); - break; case CMSG_CHAT_CHANNEL_SET_OWNER: channel->SetOwner(GetPlayer(), packet.Name); break; @@ -161,9 +158,6 @@ void WorldSession::HandleChannelPlayerCommand(WorldPackets::Channel::ChannelPlay case CMSG_CHAT_CHANNEL_UNMODERATOR: channel->UnsetModerator(GetPlayer(), packet.Name); break; - case CMSG_CHAT_CHANNEL_UNMUTE: - channel->UnsetMute(GetPlayer(), packet.Name); - break; case CMSG_CHAT_CHANNEL_UNSILENCE_ALL: channel->UnsilenceAll(GetPlayer(), packet.Name); break; diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 9de1bcf3f98..1fc6af5ea00 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -972,16 +972,6 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder) WorldPackets::BattlePet::BattlePetJournalLockAcquired lock; SendPacket(lock.Write()); - WorldPackets::Artifact::ArtifactKnowledge artifactKnowledge; - artifactKnowledge.ArtifactCategoryID = ARTIFACT_CATEGORY_PRIMARY; - artifactKnowledge.KnowledgeLevel = sWorld->getIntConfig(CONFIG_CURRENCY_START_ARTIFACT_KNOWLEDGE); - SendPacket(artifactKnowledge.Write()); - - WorldPackets::Artifact::ArtifactKnowledge artifactKnowledgeFishingPole; - artifactKnowledgeFishingPole.ArtifactCategoryID = ARTIFACT_CATEGORY_FISHING; - artifactKnowledgeFishingPole.KnowledgeLevel = 0; - SendPacket(artifactKnowledgeFishingPole.Write()); - pCurrChar->SendInitialPacketsBeforeAddToMap(); //Show cinematic at the first time that player login diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index bf724ae21ff..cfafcb5427b 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -413,41 +413,12 @@ void WorldSession::HandleChatMessage(ChatMsg type, uint32 lang, std::string msg, void WorldSession::HandleChatAddonMessageOpcode(WorldPackets::Chat::ChatAddonMessage& chatAddonMessage) { - ChatMsg type; - - switch (chatAddonMessage.GetOpcode()) - { - case CMSG_CHAT_ADDON_MESSAGE_GUILD: - type = CHAT_MSG_GUILD; - break; - case CMSG_CHAT_ADDON_MESSAGE_OFFICER: - type = CHAT_MSG_OFFICER; - break; - case CMSG_CHAT_ADDON_MESSAGE_PARTY: - type = CHAT_MSG_PARTY; - break; - case CMSG_CHAT_ADDON_MESSAGE_RAID: - type = CHAT_MSG_RAID; - break; - case CMSG_CHAT_ADDON_MESSAGE_INSTANCE_CHAT: - type = CHAT_MSG_INSTANCE_CHAT; - break; - default: - TC_LOG_ERROR("network", "HandleChatAddonMessageOpcode: Unknown addon chat opcode (%u)", chatAddonMessage.GetOpcode()); - return; - } - - HandleChatAddonMessage(type, chatAddonMessage.Prefix, chatAddonMessage.Text); -} - -void WorldSession::HandleChatAddonMessageWhisperOpcode(WorldPackets::Chat::ChatAddonMessageWhisper& chatAddonMessageWhisper) -{ - HandleChatAddonMessage(CHAT_MSG_WHISPER, chatAddonMessageWhisper.Prefix, chatAddonMessageWhisper.Text, chatAddonMessageWhisper.Target); + HandleChatAddonMessage(chatAddonMessage.Params.Type, chatAddonMessage.Params.Prefix, chatAddonMessage.Params.Text); } -void WorldSession::HandleChatAddonMessageChannelOpcode(WorldPackets::Chat::ChatAddonMessageChannel& chatAddonMessageChannel) +void WorldSession::HandleChatAddonMessageTargetedOpcode(WorldPackets::Chat::ChatAddonMessageTargeted& chatAddonMessageTargeted) { - HandleChatAddonMessage(CHAT_MSG_CHANNEL, chatAddonMessageChannel.Prefix, chatAddonMessageChannel.Text, chatAddonMessageChannel.Target); + HandleChatAddonMessage(chatAddonMessageTargeted.Params.Type, chatAddonMessageTargeted.Params.Prefix, chatAddonMessageTargeted.Params.Text, chatAddonMessageTargeted.Target); } void WorldSession::HandleChatAddonMessage(ChatMsg type, std::string prefix, std::string text, std::string target /*= ""*/) diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 296cd80e323..20081bd36bf 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -1152,12 +1152,6 @@ void WorldSession::HandleMountSetFavorite(WorldPackets::Misc::MountSetFavorite& _collectionMgr->MountSetFavorite(mountSetFavorite.MountSpellID, mountSetFavorite.IsFavorite); } -void WorldSession::HandlePvpPrestigeRankUp(WorldPackets::Misc::PvpPrestigeRankUp& /*pvpPrestigeRankUp*/) -{ - if (_player->CanPrestige()) - _player->Prestige(); -} - void WorldSession::HandleCloseInteraction(WorldPackets::Misc::CloseInteraction& closeInteraction) { if (_player->PlayerTalkClass->GetInteractionData().SourceGuid == closeInteraction.SourceGuid) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index c9acbb341b8..44ad75b15af 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -4517,9 +4517,9 @@ enum WeatherType #define MAX_WEATHER_TYPE 4 -enum ChatMsg +enum ChatMsg : int32 { - CHAT_MSG_ADDON = 0xFFFFFFFF, // -1 + CHAT_MSG_ADDON = -1, CHAT_MSG_SYSTEM = 0x00, CHAT_MSG_SAY = 0x01, CHAT_MSG_PARTY = 0x02, diff --git a/src/server/game/Server/Packets/AchievementPackets.cpp b/src/server/game/Server/Packets/AchievementPackets.cpp index 87181b3006a..2c746b77ad6 100644 --- a/src/server/game/Server/Packets/AchievementPackets.cpp +++ b/src/server/game/Server/Packets/AchievementPackets.cpp @@ -111,7 +111,7 @@ WorldPacket const* WorldPackets::Achievement::AchievementEarned::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::Achievement::ServerFirstAchievement::Write() +WorldPacket const* WorldPackets::Achievement::BroadcastAchievement::Write() { _worldPacket.WriteBits(Name.length(), 7); _worldPacket.WriteBit(GuildAchievement); diff --git a/src/server/game/Server/Packets/AchievementPackets.h b/src/server/game/Server/Packets/AchievementPackets.h index 56b027d024d..b6e346aaefe 100644 --- a/src/server/game/Server/Packets/AchievementPackets.h +++ b/src/server/game/Server/Packets/AchievementPackets.h @@ -125,10 +125,10 @@ namespace WorldPackets ObjectGuid Sender; }; - class ServerFirstAchievement final : public ServerPacket + class BroadcastAchievement final : public ServerPacket { public: - ServerFirstAchievement() : ServerPacket(SMSG_SERVER_FIRST_ACHIEVEMENT) { } + BroadcastAchievement() : ServerPacket(SMSG_BROADCAST_ACHIEVEMENT) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/ArtifactPackets.cpp b/src/server/game/Server/Packets/ArtifactPackets.cpp index 8666b709cf0..2612b384f8c 100644 --- a/src/server/game/Server/Packets/ArtifactPackets.cpp +++ b/src/server/game/Server/Packets/ArtifactPackets.cpp @@ -69,11 +69,3 @@ WorldPacket const* WorldPackets::Artifact::ArtifactXpGain::Write() return &_worldPacket; } - -WorldPacket const* WorldPackets::Artifact::ArtifactKnowledge::Write() -{ - _worldPacket << int32(ArtifactCategoryID); - _worldPacket << int8(KnowledgeLevel); - - return &_worldPacket; -} diff --git a/src/server/game/Server/Packets/ArtifactPackets.h b/src/server/game/Server/Packets/ArtifactPackets.h index 25934b75c28..f208a906413 100644 --- a/src/server/game/Server/Packets/ArtifactPackets.h +++ b/src/server/game/Server/Packets/ArtifactPackets.h @@ -99,17 +99,6 @@ namespace WorldPackets ObjectGuid ArtifactGUID; uint64 Amount = 0; }; - - class ArtifactKnowledge final : public ServerPacket - { - public: - ArtifactKnowledge() : ServerPacket(SMSG_ARTIFACT_KNOWLEDGE, 1 + 4) { } - - WorldPacket const* Write() override; - - int32 ArtifactCategoryID = 0; - int8 KnowledgeLevel = 0; - }; } } diff --git a/src/server/game/Server/Packets/CalendarPackets.cpp b/src/server/game/Server/Packets/CalendarPackets.cpp index 5292bb69b99..45812c01ca6 100644 --- a/src/server/game/Server/Packets/CalendarPackets.cpp +++ b/src/server/game/Server/Packets/CalendarPackets.cpp @@ -80,7 +80,7 @@ void WorldPackets::Calendar::CalendarGetEvent::Read() _worldPacket >> EventID; } -void WorldPackets::Calendar::CalendarGuildFilter::Read() +void WorldPackets::Calendar::CalendarCommunityFilter::Read() { _worldPacket >> MinLevel; _worldPacket >> MaxLevel; diff --git a/src/server/game/Server/Packets/CalendarPackets.h b/src/server/game/Server/Packets/CalendarPackets.h index f7337386c3c..6219c1a6878 100644 --- a/src/server/game/Server/Packets/CalendarPackets.h +++ b/src/server/game/Server/Packets/CalendarPackets.h @@ -45,10 +45,10 @@ namespace WorldPackets uint64 EventID = 0; }; - class CalendarGuildFilter final : public ClientPacket + class CalendarCommunityFilter final : public ClientPacket { public: - CalendarGuildFilter(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_GUILD_FILTER, std::move(packet)) { } + CalendarCommunityFilter(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_COMMUNITY_FILTER, std::move(packet)) { } void Read() override; diff --git a/src/server/game/Server/Packets/ChannelPackets.cpp b/src/server/game/Server/Packets/ChannelPackets.cpp index fe6969d07cf..d5cb727b441 100644 --- a/src/server/game/Server/Packets/ChannelPackets.cpp +++ b/src/server/game/Server/Packets/ChannelPackets.cpp @@ -128,7 +128,6 @@ WorldPackets::Channel::ChannelCommand::ChannelCommand(WorldPacket&& packet) : Cl case CMSG_CHAT_CHANNEL_DECLINE_INVITE: case CMSG_CHAT_CHANNEL_DISPLAY_LIST: case CMSG_CHAT_CHANNEL_LIST: - case CMSG_CHAT_CHANNEL_MODERATE: case CMSG_CHAT_CHANNEL_OWNER: break; default: @@ -150,12 +149,10 @@ WorldPackets::Channel::ChannelPlayerCommand::ChannelPlayerCommand(WorldPacket&& case CMSG_CHAT_CHANNEL_INVITE: case CMSG_CHAT_CHANNEL_KICK: case CMSG_CHAT_CHANNEL_MODERATOR: - case CMSG_CHAT_CHANNEL_MUTE: case CMSG_CHAT_CHANNEL_SET_OWNER: case CMSG_CHAT_CHANNEL_SILENCE_ALL: case CMSG_CHAT_CHANNEL_UNBAN: case CMSG_CHAT_CHANNEL_UNMODERATOR: - case CMSG_CHAT_CHANNEL_UNMUTE: case CMSG_CHAT_CHANNEL_UNSILENCE_ALL: break; default: diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp index 26cbd48f7bf..1200caaa1be 100644 --- a/src/server/game/Server/Packets/ChatPackets.cpp +++ b/src/server/game/Server/Packets/ChatPackets.cpp @@ -47,32 +47,29 @@ void WorldPackets::Chat::ChatMessageChannel::Read() Text = _worldPacket.ReadString(textLen); } -void WorldPackets::Chat::ChatAddonMessage::Read() +ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Chat::ChatAddonMessageParams& params) { - uint32 prefixLen = _worldPacket.ReadBits(5); - uint32 textLen = _worldPacket.ReadBits(9); - Prefix = _worldPacket.ReadString(prefixLen); - Text = _worldPacket.ReadString(textLen); + uint32 prefixLen = data.ReadBits(5); + uint32 textLen = data.ReadBits(8); + params.IsLogged = data.ReadBit(); + params.Type = ChatMsg(data.read()); + params.Prefix = data.ReadString(prefixLen); + params.Text = data.ReadString(textLen); + + return data; } -void WorldPackets::Chat::ChatAddonMessageWhisper::Read() +void WorldPackets::Chat::ChatAddonMessage::Read() { - uint32 targetLen = _worldPacket.ReadBits(9); - uint32 prefixLen = _worldPacket.ReadBits(5); - uint32 textLen = _worldPacket.ReadBits(9); - Target = _worldPacket.ReadString(targetLen); - Prefix = _worldPacket.ReadString(prefixLen); - Text = _worldPacket.ReadString(textLen); + _worldPacket >> Params; } -void WorldPackets::Chat::ChatAddonMessageChannel::Read() +void WorldPackets::Chat::ChatAddonMessageTargeted::Read() { uint32 targetLen = _worldPacket.ReadBits(9); - uint32 prefixLen = _worldPacket.ReadBits(5); - uint32 textLen = _worldPacket.ReadBits(9); - Target = _worldPacket.ReadString(targetLen); - Prefix = _worldPacket.ReadString(prefixLen); - Text = _worldPacket.ReadString(textLen); + _worldPacket.ResetBitPos(); + + _worldPacket >> Params; } void WorldPackets::Chat::ChatMessageDND::Read() diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h index 97654aa656e..9bc47589574 100644 --- a/src/server/game/Server/Packets/ChatPackets.h +++ b/src/server/game/Server/Packets/ChatPackets.h @@ -75,46 +75,35 @@ namespace WorldPackets std::string Target; }; - // CMSG_CHAT_ADDON_MESSAGE_GUILD - // CMSG_CHAT_ADDON_MESSAGE_OFFICER - // CMSG_CHAT_ADDON_MESSAGE_PARTY - // CMSG_CHAT_ADDON_MESSAGE_RAID - // CMSG_CHAT_ADDON_MESSAGE_INSTANCE_CHAT - class ChatAddonMessage final : public ClientPacket + struct ChatAddonMessageParams { - public: - ChatAddonMessage(WorldPacket&& packet) : ClientPacket(std::move(packet)) { } - - void Read() override; - std::string Prefix; std::string Text; + ChatMsg Type = CHAT_MSG_PARTY; + bool IsLogged = false; }; - // CMSG_CHAT_ADDON_MESSAGE_WHISPER - class ChatAddonMessageWhisper final : public ClientPacket + // CMSG_CHAT_ADDON_MESSAGE + class ChatAddonMessage final : public ClientPacket { public: - ChatAddonMessageWhisper(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_ADDON_MESSAGE_WHISPER, std::move(packet)) { } + ChatAddonMessage(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_ADDON_MESSAGE, std::move(packet)) { } void Read() override; - std::string Prefix; - std::string Target; - std::string Text; + ChatAddonMessageParams Params; }; // CMSG_CHAT_ADDON_MESSAGE_CHANNEL - class ChatAddonMessageChannel final : public ClientPacket + class ChatAddonMessageTargeted final : public ClientPacket { public: - ChatAddonMessageChannel(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_ADDON_MESSAGE_CHANNEL, std::move(packet)) { } + ChatAddonMessageTargeted(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_ADDON_MESSAGE_TARGETED, std::move(packet)) { } void Read() override; - std::string Text; std::string Target; - std::string Prefix; + ChatAddonMessageParams Params; }; class ChatMessageDND final : public ClientPacket diff --git a/src/server/game/Server/Packets/GuildPackets.h b/src/server/game/Server/Packets/GuildPackets.h index 350ff772000..c68b76e5b95 100644 --- a/src/server/game/Server/Packets/GuildPackets.h +++ b/src/server/game/Server/Packets/GuildPackets.h @@ -813,10 +813,11 @@ namespace WorldPackets bool FullUpdate = false; }; + // TODO: research new guild bank opcodes class GuildBankSwapItems final : public ClientPacket { public: - GuildBankSwapItems(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_SWAP_ITEMS, std::move(packet)) { } + GuildBankSwapItems(WorldPacket&& packet) : ClientPacket(std::move(packet)) { } void Read() override; diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index d6ab86d5e2f..984e8444b3b 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -878,14 +878,6 @@ namespace WorldPackets bool IsFavorite = false; }; - class PvpPrestigeRankUp final : public ClientPacket - { - public: - PvpPrestigeRankUp(WorldPacket&& packet) : ClientPacket(CMSG_PVP_PRESTIGE_RANK_UP, std::move(packet)) { } - - void Read() override { } - }; - class CloseInteraction final : public ClientPacket { public: diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 448b277aa16..ec0efbf4446 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -156,14 +156,12 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_ADD_TOY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAddToy); DEFINE_HANDLER(CMSG_ADVENTURE_JOURNAL_OPEN_QUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_ADVENTURE_JOURNAL_START_QUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_ADVENTURE_MAP_POI_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_ALTER_APPEARANCE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAlterAppearance); DEFINE_HANDLER(CMSG_AREA_SPIRIT_HEALER_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAreaSpiritHealerQueryOpcode); DEFINE_HANDLER(CMSG_AREA_SPIRIT_HEALER_QUEUE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAreaSpiritHealerQueueOpcode); DEFINE_HANDLER(CMSG_AREA_TRIGGER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAreaTriggerOpcode); DEFINE_HANDLER(CMSG_ARTIFACT_ADD_POWER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleArtifactAddPower); - DEFINE_HANDLER(CMSG_ARTIFACT_ADD_RELIC_TALENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_ARTIFACT_ATTUNE_PREVIEW_RELIC, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_ARTIFACT_ATTUNE_SOCKETED_RELIC, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_ARTIFACT_SET_APPEARANCE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleArtifactSetAppearance); DEFINE_HANDLER(CMSG_ATTACK_STOP, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleAttackStopOpcode); DEFINE_HANDLER(CMSG_ATTACK_SWING, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleAttackSwingOpcode); @@ -185,6 +183,8 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_AUTO_EQUIP_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAutoEquipItemOpcode); DEFINE_HANDLER(CMSG_AUTO_EQUIP_ITEM_SLOT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAutoEquipItemSlotOpcode); DEFINE_HANDLER(CMSG_AUTO_STORE_BAG_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAutoStoreBagItemOpcode); + DEFINE_HANDLER(CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_AZERITE_EMPOWERED_ITEM_VIEWED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BANKER_ACTIVATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBankerActivateOpcode); DEFINE_HANDLER(CMSG_BATTLEFIELD_LEAVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlefieldLeaveOpcode); DEFINE_HANDLER(CMSG_BATTLEFIELD_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlefieldListOpcode); @@ -198,10 +198,12 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_BATTLENET_REQUEST, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlenetRequest); DEFINE_HANDLER(CMSG_BATTLENET_REQUEST_REALM_LIST_TICKET, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlenetRequestRealmListTicket); DEFINE_HANDLER(CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BATTLE_PAY_GET_PRODUCT_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BATTLE_PAY_GET_PURCHASE_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_BATTLE_PAY_OPEN_CHECKOUT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BATTLE_PAY_QUERY_CLASS_TRIAL_BOOST_RESULT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BATTLE_PAY_REQUEST_CHARACTER_BOOST_UNREVOKE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BATTLE_PAY_REQUEST_CURRENT_VAS_TRANSFER_QUEUES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); @@ -211,6 +213,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_BATTLE_PAY_START_VAS_PURCHASE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BATTLE_PAY_TRIAL_BOOST_CHARACTER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BATTLE_PAY_VALIDATE_BNET_VAS_TRANSFER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_BATTLE_PAY_VAS_PURCHASE_COMPLETE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BATTLE_PET_CLEAR_FANFARE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BATTLE_PET_DELETE_PET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlePetDeletePet); DEFINE_HANDLER(CMSG_BATTLE_PET_DELETE_PET_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); @@ -230,6 +233,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_BLACK_MARKET_BID_ON_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBlackMarketBidOnItem); DEFINE_HANDLER(CMSG_BLACK_MARKET_OPEN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBlackMarketOpen); DEFINE_HANDLER(CMSG_BLACK_MARKET_REQUEST_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBlackMarketRequestItems); + DEFINE_HANDLER(CMSG_BONUS_ROLL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BUG_REPORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBugReportOpcode); DEFINE_HANDLER(CMSG_BUSY_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBusyTradeOpcode); DEFINE_HANDLER(CMSG_BUY_BACK_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBuybackItem); @@ -240,6 +244,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_BUY_WOW_TOKEN_START, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CAGE_BATTLE_PET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCageBattlePet); DEFINE_HANDLER(CMSG_CALENDAR_ADD_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarAddEvent); + DEFINE_HANDLER(CMSG_CALENDAR_COMMUNITY_FILTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarCommunityFilter); DEFINE_HANDLER(CMSG_CALENDAR_COMPLAIN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarComplain); DEFINE_HANDLER(CMSG_CALENDAR_COPY_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarCopyEvent); DEFINE_HANDLER(CMSG_CALENDAR_EVENT_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarEventInvite); @@ -250,7 +255,6 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_CALENDAR_GET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarGetCalendar); DEFINE_HANDLER(CMSG_CALENDAR_GET_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarGetEvent); DEFINE_HANDLER(CMSG_CALENDAR_GET_NUM_PENDING, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarGetNumPending); - DEFINE_HANDLER(CMSG_CALENDAR_GUILD_FILTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarGuildFilter); DEFINE_HANDLER(CMSG_CALENDAR_REMOVE_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarRemoveEvent); DEFINE_HANDLER(CMSG_CALENDAR_REMOVE_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarEventRemoveInvite); DEFINE_HANDLER(CMSG_CALENDAR_UPDATE_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarUpdateEvent); @@ -271,19 +275,15 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_CHALLENGE_MODE_REQUEST_LEADERS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CHALLENGE_MODE_REQUEST_MAP_STATS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CHANGE_BAG_SLOT_FLAG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_CHANGE_BANK_BAG_SLOT_FLAG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CHANGE_MONUMENT_APPEARANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CHANGE_SUB_GROUP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChangeSubGroupOpcode); DEFINE_HANDLER(CMSG_CHARACTER_RENAME_REQUEST, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharRenameOpcode); DEFINE_HANDLER(CMSG_CHAR_CUSTOMIZE, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharCustomizeOpcode); DEFINE_HANDLER(CMSG_CHAR_DELETE, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharDeleteOpcode); DEFINE_HANDLER(CMSG_CHAR_RACE_OR_FACTION_CHANGE, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharRaceOrFactionChangeOpcode); - DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageChannelOpcode); - DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_GUILD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageOpcode); - DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_INSTANCE_CHAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageOpcode); - DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_OFFICER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageOpcode); - DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_PARTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageOpcode); - DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_RAID, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageOpcode); - DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_WHISPER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageWhisperOpcode); + DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageOpcode); + DEFINE_HANDLER(CMSG_CHAT_ADDON_MESSAGE_TARGETED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatAddonMessageTargetedOpcode); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_ANNOUNCEMENTS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_BAN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_DECLINE_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelCommand); @@ -291,16 +291,13 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_CHAT_CHANNEL_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_KICK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelCommand); - DEFINE_HANDLER(CMSG_CHAT_CHANNEL_MODERATE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_MODERATOR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); - DEFINE_HANDLER(CMSG_CHAT_CHANNEL_MUTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_OWNER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_PASSWORD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPassword); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_SET_OWNER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_SILENCE_ALL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_UNBAN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_UNMODERATOR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); - DEFINE_HANDLER(CMSG_CHAT_CHANNEL_UNMUTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); DEFINE_HANDLER(CMSG_CHAT_CHANNEL_UNSILENCE_ALL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChannelPlayerCommand); DEFINE_HANDLER(CMSG_CHAT_JOIN_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleJoinChannel); DEFINE_HANDLER(CMSG_CHAT_LEAVE_CHANNEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLeaveChannel); @@ -328,6 +325,8 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_CLEAR_TRADE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleClearTradeItemOpcode); DEFINE_HANDLER(CMSG_CLIENT_PORT_GRAVEYARD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePortGraveyard); DEFINE_HANDLER(CMSG_CLOSE_INTERACTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCloseInteraction); + DEFINE_HANDLER(CMSG_CLOSE_QUEST_CHOICE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_CLUB_INVITE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_COLLECTION_ITEM_SET_FAVORITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCollectionItemSetFavorite); DEFINE_HANDLER(CMSG_COMMENTATOR_ENABLE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_COMMENTATOR_ENTER_INSTANCE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); @@ -380,6 +379,8 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_ENUM_CHARACTERS, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharEnumOpcode); DEFINE_HANDLER(CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharUndeleteEnumOpcode); DEFINE_HANDLER(CMSG_FAR_SIGHT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleFarSightOpcode); + DEFINE_HANDLER(CMSG_GAME_EVENT_DEBUG_DISABLE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_GAME_EVENT_DEBUG_ENABLE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_GAME_OBJ_REPORT_USE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGameobjectReportUse); DEFINE_HANDLER(CMSG_GAME_OBJ_USE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGameObjectUseOpcode); DEFINE_HANDLER(CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); @@ -407,6 +408,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_GARRISON_START_MISSION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_GARRISON_SWAP_BUILDINGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_GENERATE_RANDOM_CHARACTER_NAME, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleRandomizeCharNameOpcode); + DEFINE_HANDLER(CMSG_GET_ACCOUNT_CHARACTER_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_GET_CHALLENGE_MODE_REWARDS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_GET_GARRISON_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGetGarrisonInfo); DEFINE_HANDLER(CMSG_GET_ITEM_PURCHASE_DATA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGetItemPurchaseData); @@ -431,7 +433,6 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_GUILD_BANK_QUERY_TAB, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankQueryTab); DEFINE_HANDLER(CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankMoneyWithdrawn); DEFINE_HANDLER(CMSG_GUILD_BANK_SET_TAB_TEXT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankSetTabText); - DEFINE_HANDLER(CMSG_GUILD_BANK_SWAP_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankSwapItems); DEFINE_HANDLER(CMSG_GUILD_BANK_TEXT_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankTextQuery); DEFINE_HANDLER(CMSG_GUILD_BANK_UPDATE_TAB, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankUpdateTab); DEFINE_HANDLER(CMSG_GUILD_BANK_WITHDRAW_MONEY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankWithdrawMoney); @@ -473,6 +474,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_INSPECT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleInspectOpcode); DEFINE_HANDLER(CMSG_INSPECT_PVP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleInspectPVP); DEFINE_HANDLER(CMSG_INSTANCE_LOCK_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleInstanceLockResponse); + DEFINE_HANDLER(CMSG_ISLAND_QUEUE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_ITEM_PURCHASE_REFUND, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleItemRefund); DEFINE_HANDLER(CMSG_ITEM_TEXT_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleItemTextQuery); DEFINE_HANDLER(CMSG_JOIN_PET_BATTLE_QUEUE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); @@ -544,6 +546,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_MOVE_FEATHER_FALL_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); DEFINE_HANDLER(CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck); DEFINE_HANDLER(CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck); + DEFINE_HANDLER(CMSG_MOVE_FORCE_MOVEMENT_FORCE_SPEED_CHANGE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck); DEFINE_HANDLER(CMSG_MOVE_FORCE_ROOT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); DEFINE_HANDLER(CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck); @@ -634,8 +637,8 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_PROTOCOL_MISMATCH, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_PUSH_QUEST_TO_PARTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePushQuestToParty); DEFINE_HANDLER(CMSG_PVP_LOG_DATA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePVPLogDataOpcode); - DEFINE_HANDLER(CMSG_PVP_PRESTIGE_RANK_UP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePvpPrestigeRankUp); DEFINE_HANDLER(CMSG_QUERY_BATTLE_PET_NAME, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_QUERY_COMMUNITY_NAME, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryCorpseLocation); DEFINE_HANDLER(CMSG_QUERY_CORPSE_TRANSPORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryCorpseTransport); DEFINE_HANDLER(CMSG_QUERY_COUNTDOWN_TIMER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); @@ -652,10 +655,10 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_QUERY_PLAYER_NAME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleNameQueryOpcode); DEFINE_HANDLER(CMSG_QUERY_QUEST_COMPLETION_NPCS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryQuestCompletionNPCs); DEFINE_HANDLER(CMSG_QUERY_QUEST_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestQueryOpcode); - DEFINE_HANDLER(CMSG_QUERY_QUEST_REWARDS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_QUERY_REALM_NAME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryRealmName); DEFINE_HANDLER(CMSG_QUERY_SCENARIO_POI, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryScenarioPOI); DEFINE_HANDLER(CMSG_QUERY_TIME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryTimeOpcode); + DEFINE_HANDLER(CMSG_QUERY_TREASURE_PICKER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_QUERY_VOID_STORAGE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleVoidStorageQuery); DEFINE_HANDLER(CMSG_QUEST_CONFIRM_ACCEPT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestConfirmAccept); DEFINE_HANDLER(CMSG_QUEST_GIVER_ACCEPT_QUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverAcceptQuestOpcode); @@ -696,6 +699,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_REQUEST_BATTLEFIELD_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestBattlefieldStatusOpcode); DEFINE_HANDLER(CMSG_REQUEST_CATEGORY_COOLDOWNS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestCategoryCooldowns); DEFINE_HANDLER(CMSG_REQUEST_CEMETERY_LIST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleRequestCemeteryList); + DEFINE_HANDLER(CMSG_REQUEST_CHALLENGE_MODE_AFFIXES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REQUEST_CONSUMPTION_CONVERSION_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_REQUEST_CROWD_CONTROL_SPELL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); @@ -748,7 +752,6 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_SET_ASSISTANT_LEADER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetAssistantLeaderOpcode); DEFINE_HANDLER(CMSG_SET_BACKPACK_AUTOSORT_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SET_BANK_AUTOSORT_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_SET_BANK_BAG_SLOT_FLAG, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SET_CONTACT_NOTES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetContactNotesOpcode); DEFINE_HANDLER(CMSG_SET_CURRENCY_FLAGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SET_DIFFICULTY_ID, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); @@ -757,6 +760,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_SET_FACTION_AT_WAR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetFactionAtWar); DEFINE_HANDLER(CMSG_SET_FACTION_INACTIVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetFactionInactiveOpcode); DEFINE_HANDLER(CMSG_SET_FACTION_NOT_AT_WAR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetFactionNotAtWar); + DEFINE_HANDLER(CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SET_LFG_BONUS_FACTION_ID, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SET_LOOT_METHOD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetLootMethodOpcode); @@ -779,6 +783,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_SET_TRADE_GOLD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTradeGoldOpcode); DEFINE_HANDLER(CMSG_SET_TRADE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetTradeItemOpcode); DEFINE_HANDLER(CMSG_SET_USING_PARTY_GARRISON, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_SET_WAR_MODE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SET_WATCHED_FACTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetWatchedFactionOpcode); DEFINE_HANDLER(CMSG_SHOW_TRADE_SKILL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SIGN_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSignPetition); @@ -850,6 +855,8 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_USE_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUseItemOpcode); DEFINE_HANDLER(CMSG_USE_TOY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUseToy); DEFINE_HANDLER(CMSG_VIOLENCE_LEVEL, STATUS_AUTHED, PROCESS_INPLACE, &WorldSession::HandleViolenceLevel); + DEFINE_HANDLER(CMSG_VOICE_CHAT_JOIN_CHANNEL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_VOICE_CHAT_LOGIN, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_VOID_STORAGE_TRANSFER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleVoidStorageTransfer); DEFINE_HANDLER(CMSG_WARDEN_DATA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleWardenData); DEFINE_HANDLER(CMSG_WHO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleWhoOpcode); @@ -878,6 +885,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_LOSS_OF_CONTROL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADD_RUNE_POWER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADJUST_SPLINE_DURATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ADVENTURE_MAP_POI_QUERY_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AE_LOOT_TARGETS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AE_LOOT_TARGET_ACK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AI_REACTION, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -895,7 +903,6 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARTIFACT_FORGE_OPENED, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARTIFACT_KNOWLEDGE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARTIFACT_RESPEC_CONFIRM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARTIFACT_TRAITS_REFUNDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARTIFACT_XP_GAIN, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -920,6 +927,8 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUTH_CHALLENGE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AUTH_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AVAILABLE_HOTFIXES, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_AZERITE_EMPOWERED_ITEM_RESPEC_OPEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_AZERITE_XP_GAIN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BAN_REASON, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BARBER_SHOP_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLEFIELD_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -942,6 +951,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLENET_REALM_LIST_TICKET, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLENET_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLENET_SET_SESSION_STATE, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLENET_UPDATE_SESSION_KEY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_ACK_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_CONFIRM_PURCHASE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -952,6 +962,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_MOUNT_DELIVERED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_OPEN_CHECKOUT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_PURCHASE_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -991,8 +1002,10 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BLACK_MARKET_WON, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BONUS_ROLL_EMPTY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_BONUS_ROLL_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BOSS_KILL_CREDIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BREAK_TARGET, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_BROADCAST_ACHIEVEMENT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BUY_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BUY_SUCCEEDED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CACHE_INFO, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1027,10 +1040,11 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAN_DUEL_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAST_FAILED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CATEGORY_COOLDOWN, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_AFFIXES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_ALL_MAP_STATS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_MAP_STATS_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_NEW_PLAYER_SEASON_RECORD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_REWARDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CHALLENGE_MODE_RESET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1085,6 +1099,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONNECT_TO, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONQUEST_FORMULA_CONSTANTS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONSOLE_WRITE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTRIBUTION_COLLECTOR_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTACT_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTROL_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_COOLDOWN_CHEAT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1121,6 +1136,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_COMPLETE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_COUNTDOWN, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_IN_BOUNDS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_OPPONENT_SELECTED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_OUT_OF_BOUNDS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_REQUESTED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_DUEL_WINNER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -1148,9 +1164,11 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_ANIM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FORCE_OBJECT_RELINK, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_FRIEND_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_EVENT_DEBUG_INITIALIZE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_CUSTOM_ANIM, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_DESPAWN, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_MULTI_TRANSITION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_OBJECT_RESET_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1170,6 +1188,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_COMPLETE_MISSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_CREATE_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_DELETE_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CATEGORIES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_ABILITIES, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_DURABILITY, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); @@ -1306,6 +1325,9 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALIDATE_PLAYER, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALID_PROMOTION_CODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVENTORY_CHANGE_FAILURE, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ISLAND_AZERITE_XP_GAIN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ISLAND_COMPLETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ISLAND_OPEN_QUEUE_NPC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_IS_QUEST_COMPLETE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_COOLDOWN, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1349,6 +1371,8 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_LF_GUILD_COMMAND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LF_GUILD_POST, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LF_GUILD_RECRUITS, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIGHTNING_STORM_END, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIGHTNING_STORM_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_CHARACTER_COPY_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1362,6 +1386,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOGOUT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOG_XP_GAIN, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOOT_ALL_PASSED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOOT_LEGACY_RULES_IN_EFFECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOOT_LIST, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOOT_MONEY_NOTIFY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LOOT_RELEASE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -1412,6 +1437,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_HOVERING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_LAND_WALK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_MOVEMENT_FORCE_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_NORMAL_FALL, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_PITCH_RATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_RUN_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -1462,6 +1488,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_FLIGHT_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_KNOCK_BACK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_MOVEMENT_FORCE_SPEED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_PITCH_RATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_RUN_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -1552,7 +1579,6 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PLAY_TIME_WARNING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PONG, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_POWER_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_PRESTIGE_AND_HONOR_INVOLUNTARILY_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PRE_RESSURECT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PRINT_NOTIFICATION, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PROC_RESIST, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1563,6 +1589,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_OPTIONS_ENABLED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_SEASON, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_BATTLE_PET_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_COMMUNITY_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_CREATURE_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GAME_OBJECT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GARRISON_CREATURE_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1574,8 +1601,8 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PET_NAME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PLAYER_NAME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_QUEST_INFO_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_QUEST_REWARD_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_TIME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_TREASURE_PICKER_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_COMPLETION_NPC_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_CONFIRM_ACCEPT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_FORCE_REMOVED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1668,7 +1695,6 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_SPELL_CHARGES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_SPELL_HISTORY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SEND_UNLEARN_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_SERVER_FIRST_ACHIEVEMENT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SERVER_FIRST_ACHIEVEMENTS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SERVER_TIME, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SETUP_CURRENCY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -1809,6 +1835,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_WAIT_QUEUE_FINISH, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WAIT_QUEUE_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARDEN_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARFRONT_COMPLETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEATHER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEEKLY_SPELL_USAGE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index c39cd5ca314..bdf5bc3b9fa 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -46,38 +46,36 @@ enum OpcodeMisc : uint16 enum OpcodeClient : uint16 { CMSG_ACCEPT_GUILD_INVITE = 0x35FC, - CMSG_ACCEPT_LEVEL_GRANT = 0x34FD, + CMSG_ACCEPT_LEVEL_GRANT = 0x34FA, CMSG_ACCEPT_TRADE = 0x315A, CMSG_ACCEPT_WARGAME_INVITE = 0x35E0, - CMSG_ACTIVATE_TAXI = 0x34AE, + CMSG_ACTIVATE_TAXI = 0x34AB, CMSG_ADDON_LIST = 0x35D8, CMSG_ADD_BATTLENET_FRIEND = 0x365A, - CMSG_ADD_FRIEND = 0x36CF, - CMSG_ADD_IGNORE = 0x36D3, - CMSG_ADD_TOY = 0x328B, - CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x31F9, - CMSG_ADVENTURE_JOURNAL_START_QUEST = 0x332E, - CMSG_ALTER_APPEARANCE = 0x34F9, - CMSG_AREA_SPIRIT_HEALER_QUERY = 0x34B3, - CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x34B4, - CMSG_AREA_TRIGGER = 0x31CD, - CMSG_ARTIFACT_ADD_POWER = 0x31A5, - CMSG_ARTIFACT_ADD_RELIC_TALENT = 0x31A8, - CMSG_ARTIFACT_ATTUNE_PREVIEW_RELIC = 0x31A9, - CMSG_ARTIFACT_ATTUNE_SOCKETED_RELIC = 0x31AA, - CMSG_ARTIFACT_SET_APPEARANCE = 0x31A7, - CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3200, - CMSG_ATTACK_STOP = 0x324D, - CMSG_ATTACK_SWING = 0x324C, - CMSG_AUCTION_HELLO_REQUEST = 0x34CF, - CMSG_AUCTION_LIST_BIDDER_ITEMS = 0x34D5, - CMSG_AUCTION_LIST_ITEMS = 0x34D2, - CMSG_AUCTION_LIST_OWNER_ITEMS = 0x34D4, - CMSG_AUCTION_LIST_PENDING_SALES = 0x34D7, - CMSG_AUCTION_PLACE_BID = 0x34D6, - CMSG_AUCTION_REMOVE_ITEM = 0x34D1, - CMSG_AUCTION_REPLICATE_ITEMS = 0x34D3, - CMSG_AUCTION_SELL_ITEM = 0x34D0, + CMSG_ADD_FRIEND = 0x36D0, + CMSG_ADD_IGNORE = 0x36D4, + CMSG_ADD_TOY = 0x3298, + CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3201, + CMSG_ADVENTURE_JOURNAL_START_QUEST = 0x333D, + CMSG_ADVENTURE_MAP_POI_QUERY = 0x3244, + CMSG_ALTER_APPEARANCE = 0x34F6, + CMSG_AREA_SPIRIT_HEALER_QUERY = 0x34B0, + CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x34B1, + CMSG_AREA_TRIGGER = 0x31D5, + CMSG_ARTIFACT_ADD_POWER = 0x31A9, + CMSG_ARTIFACT_SET_APPEARANCE = 0x31AB, + CMSG_ASSIGN_EQUIPMENT_SET_SPEC = 0x3209, + CMSG_ATTACK_STOP = 0x3256, + CMSG_ATTACK_SWING = 0x3255, + CMSG_AUCTION_HELLO_REQUEST = 0x34CB, + CMSG_AUCTION_LIST_BIDDER_ITEMS = 0x34D1, + CMSG_AUCTION_LIST_ITEMS = 0x34CE, + CMSG_AUCTION_LIST_OWNER_ITEMS = 0x34D0, + CMSG_AUCTION_LIST_PENDING_SALES = 0x34D3, + CMSG_AUCTION_PLACE_BID = 0x34D2, + CMSG_AUCTION_REMOVE_ITEM = 0x34CD, + CMSG_AUCTION_REPLICATE_ITEMS = 0x34CF, + CMSG_AUCTION_SELL_ITEM = 0x34CC, CMSG_AUTH_CONTINUED_SESSION = 0x3766, CMSG_AUTH_SESSION = 0x3765, CMSG_AUTOBANK_ITEM = 0x3996, @@ -87,32 +85,37 @@ enum OpcodeClient : uint16 CMSG_AUTO_EQUIP_ITEM = 0x399A, CMSG_AUTO_EQUIP_ITEM_SLOT = 0x399F, CMSG_AUTO_STORE_BAG_ITEM = 0x399B, - CMSG_BANKER_ACTIVATE = 0x34B6, - CMSG_BATTLEFIELD_LEAVE = 0x3171, - CMSG_BATTLEFIELD_LIST = 0x317D, - CMSG_BATTLEFIELD_PORT = 0x3529, - CMSG_BATTLEMASTER_HELLO = 0x32A1, - CMSG_BATTLEMASTER_JOIN = 0x3524, - CMSG_BATTLEMASTER_JOIN_ARENA = 0x3525, - CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3527, - CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3526, - CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D2, - CMSG_BATTLENET_REQUEST = 0x36F6, - CMSG_BATTLENET_REQUEST_REALM_LIST_TICKET = 0x36F7, - CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CA, - CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36C9, - CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C0, - CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36BA, - CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36BB, - CMSG_BATTLE_PAY_QUERY_CLASS_TRIAL_BOOST_RESULT = 0x36C3, - CMSG_BATTLE_PAY_REQUEST_CHARACTER_BOOST_UNREVOKE = 0x36C1, - CMSG_BATTLE_PAY_REQUEST_CURRENT_VAS_TRANSFER_QUEUES = 0x3708, - CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x3707, - CMSG_BATTLE_PAY_REQUEST_VAS_CHARACTER_QUEUE_TIME = 0x3709, - CMSG_BATTLE_PAY_START_PURCHASE = 0x36F2, - CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36F3, - CMSG_BATTLE_PAY_TRIAL_BOOST_CHARACTER = 0x36C2, - CMSG_BATTLE_PAY_VALIDATE_BNET_VAS_TRANSFER = 0x370A, + CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x335B, + CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3347, + CMSG_BANKER_ACTIVATE = 0x34B3, + CMSG_BATTLEFIELD_LEAVE = 0x3172, + CMSG_BATTLEFIELD_LIST = 0x317E, + CMSG_BATTLEFIELD_PORT = 0x3527, + CMSG_BATTLEMASTER_HELLO = 0x32B0, + CMSG_BATTLEMASTER_JOIN = 0x3522, + CMSG_BATTLEMASTER_JOIN_ARENA = 0x3523, + CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3525, + CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3524, + CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x36D3, + CMSG_BATTLENET_REQUEST = 0x36F7, + CMSG_BATTLENET_REQUEST_REALM_LIST_TICKET = 0x36FB, + CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x36CB, + CMSG_BATTLE_PAY_CANCEL_OPEN_CHECKOUT = 0x3716, + CMSG_BATTLE_PAY_CONFIRM_PURCHASE_RESPONSE = 0x36CA, + CMSG_BATTLE_PAY_DISTRIBUTION_ASSIGN_TO_TARGET = 0x36C1, + CMSG_BATTLE_PAY_GET_PRODUCT_LIST = 0x36BB, + CMSG_BATTLE_PAY_GET_PURCHASE_LIST = 0x36BC, + CMSG_BATTLE_PAY_OPEN_CHECKOUT = 0x370F, + CMSG_BATTLE_PAY_QUERY_CLASS_TRIAL_BOOST_RESULT = 0x36C4, + CMSG_BATTLE_PAY_REQUEST_CHARACTER_BOOST_UNREVOKE = 0x36C2, + CMSG_BATTLE_PAY_REQUEST_CURRENT_VAS_TRANSFER_QUEUES = 0x370C, + CMSG_BATTLE_PAY_REQUEST_PRICE_INFO = 0x370B, + CMSG_BATTLE_PAY_REQUEST_VAS_CHARACTER_QUEUE_TIME = 0x370D, + CMSG_BATTLE_PAY_START_PURCHASE = 0x36F3, + CMSG_BATTLE_PAY_START_VAS_PURCHASE = 0x36F4, + CMSG_BATTLE_PAY_TRIAL_BOOST_CHARACTER = 0x36C3, + CMSG_BATTLE_PAY_VALIDATE_BNET_VAS_TRANSFER = 0x370E, + CMSG_BATTLE_PAY_VAS_PURCHASE_COMPLETE = 0x36F2, CMSG_BATTLE_PET_CLEAR_FANFARE = 0x312C, CMSG_BATTLE_PET_DELETE_PET = 0x3624, CMSG_BATTLE_PET_DELETE_PET_CHEAT = 0x3625, @@ -122,23 +125,25 @@ enum OpcodeClient : uint16 CMSG_BATTLE_PET_SET_BATTLE_SLOT = 0x362B, CMSG_BATTLE_PET_SET_FLAGS = 0x362F, CMSG_BATTLE_PET_SUMMON = 0x3628, - CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31D7, - CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31D6, + CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x31DF, + CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x31DE, CMSG_BEGIN_TRADE = 0x3157, - CMSG_BINDER_ACTIVATE = 0x34B5, - CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3531, - CMSG_BLACK_MARKET_OPEN = 0x352F, - CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x3530, + CMSG_BINDER_ACTIVATE = 0x34B2, + CMSG_BLACK_MARKET_BID_ON_ITEM = 0x352F, + CMSG_BLACK_MARKET_OPEN = 0x352D, + CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x352E, + CMSG_BONUS_ROLL = 0x335C, CMSG_BUG_REPORT = 0x3686, CMSG_BUSY_TRADE = 0x3158, - CMSG_BUY_BACK_ITEM = 0x34A7, - CMSG_BUY_BANK_SLOT = 0x34B7, - CMSG_BUY_ITEM = 0x34A6, - CMSG_BUY_REAGENT_BANK = 0x34B8, - CMSG_BUY_WOW_TOKEN_CONFIRM = 0x36EB, - CMSG_BUY_WOW_TOKEN_START = 0x36EA, - CMSG_CAGE_BATTLE_PET = 0x31E8, + CMSG_BUY_BACK_ITEM = 0x34A4, + CMSG_BUY_BANK_SLOT = 0x34B4, + CMSG_BUY_ITEM = 0x34A3, + CMSG_BUY_REAGENT_BANK = 0x34B5, + CMSG_BUY_WOW_TOKEN_CONFIRM = 0x36EC, + CMSG_BUY_WOW_TOKEN_START = 0x36EB, + CMSG_CAGE_BATTLE_PET = 0x31F0, CMSG_CALENDAR_ADD_EVENT = 0x367D, + CMSG_CALENDAR_COMMUNITY_FILTER = 0x3671, CMSG_CALENDAR_COMPLAIN = 0x3679, CMSG_CALENDAR_COPY_EVENT = 0x3678, CMSG_CALENDAR_EVENT_INVITE = 0x3672, @@ -149,84 +154,78 @@ enum OpcodeClient : uint16 CMSG_CALENDAR_GET = 0x366F, CMSG_CALENDAR_GET_EVENT = 0x3670, CMSG_CALENDAR_GET_NUM_PENDING = 0x367A, - CMSG_CALENDAR_GUILD_FILTER = 0x3671, CMSG_CALENDAR_REMOVE_EVENT = 0x3677, CMSG_CALENDAR_REMOVE_INVITE = 0x3673, CMSG_CALENDAR_UPDATE_EVENT = 0x367E, - CMSG_CANCEL_AURA = 0x31AC, - CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34EB, - CMSG_CANCEL_CAST = 0x3291, - CMSG_CANCEL_CHANNELLING = 0x325C, - CMSG_CANCEL_GROWTH_AURA = 0x3261, - CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3208, - CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AB, - CMSG_CANCEL_MOUNT_AURA = 0x3272, - CMSG_CANCEL_QUEUED_SPELL = 0x317E, - CMSG_CANCEL_TEMP_ENCHANTMENT = 0x34F6, + CMSG_CANCEL_AURA = 0x31AD, + CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x34E8, + CMSG_CANCEL_CAST = 0x329E, + CMSG_CANCEL_CHANNELLING = 0x326A, + CMSG_CANCEL_GROWTH_AURA = 0x326F, + CMSG_CANCEL_MASTER_LOOT_ROLL = 0x3211, + CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x31AC, + CMSG_CANCEL_MOUNT_AURA = 0x3280, + CMSG_CANCEL_QUEUED_SPELL = 0x317F, + CMSG_CANCEL_TEMP_ENCHANTMENT = 0x34F3, CMSG_CANCEL_TRADE = 0x315C, CMSG_CAN_DUEL = 0x3662, - CMSG_CAN_REDEEM_WOW_TOKEN_FOR_BALANCE = 0x3706, - CMSG_CAST_SPELL = 0x328E, + CMSG_CAN_REDEEM_WOW_TOKEN_FOR_BALANCE = 0x370A, + CMSG_CAST_SPELL = 0x329B, CMSG_CHALLENGE_MODE_REQUEST_LEADERS = 0x308F, CMSG_CHALLENGE_MODE_REQUEST_MAP_STATS = 0x308E, - CMSG_CHANGE_BAG_SLOT_FLAG = 0x3312, - CMSG_CHANGE_MONUMENT_APPEARANCE = 0x32F4, + CMSG_CHANGE_BAG_SLOT_FLAG = 0x3321, + CMSG_CHANGE_BANK_BAG_SLOT_FLAG = 0x3322, + CMSG_CHANGE_MONUMENT_APPEARANCE = 0x3303, CMSG_CHANGE_SUB_GROUP = 0x364C, - CMSG_CHARACTER_RENAME_REQUEST = 0x36BE, - CMSG_CHAR_CUSTOMIZE = 0x368E, - CMSG_CHAR_DELETE = 0x369B, - CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3694, - CMSG_CHAT_ADDON_MESSAGE_CHANNEL = 0x37D0, - CMSG_CHAT_ADDON_MESSAGE_GUILD = 0x37D4, - CMSG_CHAT_ADDON_MESSAGE_INSTANCE_CHAT = 0x37F3, - CMSG_CHAT_ADDON_MESSAGE_OFFICER = 0x37D6, - CMSG_CHAT_ADDON_MESSAGE_PARTY = 0x37EF, - CMSG_CHAT_ADDON_MESSAGE_RAID = 0x37F1, - CMSG_CHAT_ADDON_MESSAGE_WHISPER = 0x37D2, - CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x37E7, - CMSG_CHAT_CHANNEL_BAN = 0x37E5, - CMSG_CHAT_CHANNEL_DECLINE_INVITE = 0x37EA, - CMSG_CHAT_CHANNEL_DISPLAY_LIST = 0x37DA, - CMSG_CHAT_CHANNEL_INVITE = 0x37E3, - CMSG_CHAT_CHANNEL_KICK = 0x37E4, - CMSG_CHAT_CHANNEL_LIST = 0x37D9, - CMSG_CHAT_CHANNEL_MODERATE = 0x37DE, - CMSG_CHAT_CHANNEL_MODERATOR = 0x37DF, - CMSG_CHAT_CHANNEL_MUTE = 0x37E1, - CMSG_CHAT_CHANNEL_OWNER = 0x37DD, - CMSG_CHAT_CHANNEL_PASSWORD = 0x37DB, - CMSG_CHAT_CHANNEL_SET_OWNER = 0x37DC, - CMSG_CHAT_CHANNEL_SILENCE_ALL = 0x37E8, - CMSG_CHAT_CHANNEL_UNBAN = 0x37E6, - CMSG_CHAT_CHANNEL_UNMODERATOR = 0x37E0, - CMSG_CHAT_CHANNEL_UNMUTE = 0x37E2, - CMSG_CHAT_CHANNEL_UNSILENCE_ALL = 0x37E9, + CMSG_CHARACTER_RENAME_REQUEST = 0x36BF, + CMSG_CHAR_CUSTOMIZE = 0x368F, + CMSG_CHAR_DELETE = 0x369C, + CMSG_CHAR_RACE_OR_FACTION_CHANGE = 0x3695, + CMSG_CHAT_ADDON_MESSAGE = 0x37EE, + CMSG_CHAT_ADDON_MESSAGE_TARGETED = 0x37EF, + CMSG_CHAT_CHANNEL_ANNOUNCEMENTS = 0x37E3, + CMSG_CHAT_CHANNEL_BAN = 0x37E1, + CMSG_CHAT_CHANNEL_DECLINE_INVITE = 0x37E6, + CMSG_CHAT_CHANNEL_DISPLAY_LIST = 0x37D6, + CMSG_CHAT_CHANNEL_INVITE = 0x37DF, + CMSG_CHAT_CHANNEL_KICK = 0x37E0, + CMSG_CHAT_CHANNEL_LIST = 0x37D5, + CMSG_CHAT_CHANNEL_MODERATOR = 0x37DB, + CMSG_CHAT_CHANNEL_OWNER = 0x37D9, + CMSG_CHAT_CHANNEL_PASSWORD = 0x37D7, + CMSG_CHAT_CHANNEL_SET_OWNER = 0x37D8, + CMSG_CHAT_CHANNEL_SILENCE_ALL = 0x37E4, + CMSG_CHAT_CHANNEL_UNBAN = 0x37E2, + CMSG_CHAT_CHANNEL_UNMODERATOR = 0x37DC, + CMSG_CHAT_CHANNEL_UNSILENCE_ALL = 0x37E5, CMSG_CHAT_JOIN_CHANNEL = 0x37C8, CMSG_CHAT_LEAVE_CHANNEL = 0x37C9, - CMSG_CHAT_MESSAGE_AFK = 0x37D7, + CMSG_CHAT_MESSAGE_AFK = 0x37D3, CMSG_CHAT_MESSAGE_CHANNEL = 0x37CF, - CMSG_CHAT_MESSAGE_DND = 0x37D8, - CMSG_CHAT_MESSAGE_EMOTE = 0x37EC, - CMSG_CHAT_MESSAGE_GUILD = 0x37D3, - CMSG_CHAT_MESSAGE_INSTANCE_CHAT = 0x37F2, - CMSG_CHAT_MESSAGE_OFFICER = 0x37D5, - CMSG_CHAT_MESSAGE_PARTY = 0x37EE, - CMSG_CHAT_MESSAGE_RAID = 0x37F0, - CMSG_CHAT_MESSAGE_RAID_WARNING = 0x37F4, - CMSG_CHAT_MESSAGE_SAY = 0x37EB, - CMSG_CHAT_MESSAGE_WHISPER = 0x37D1, - CMSG_CHAT_MESSAGE_YELL = 0x37ED, + CMSG_CHAT_MESSAGE_DND = 0x37D4, + CMSG_CHAT_MESSAGE_EMOTE = 0x37E8, + CMSG_CHAT_MESSAGE_GUILD = 0x37D1, + CMSG_CHAT_MESSAGE_INSTANCE_CHAT = 0x37EC, + CMSG_CHAT_MESSAGE_OFFICER = 0x37D2, + CMSG_CHAT_MESSAGE_PARTY = 0x37EA, + CMSG_CHAT_MESSAGE_RAID = 0x37EB, + CMSG_CHAT_MESSAGE_RAID_WARNING = 0x37ED, + CMSG_CHAT_MESSAGE_SAY = 0x37E7, + CMSG_CHAT_MESSAGE_WHISPER = 0x37D0, + CMSG_CHAT_MESSAGE_YELL = 0x37E9, CMSG_CHAT_REGISTER_ADDON_PREFIXES = 0x37CD, CMSG_CHAT_REPORT_FILTERED = 0x37CC, CMSG_CHAT_REPORT_IGNORED = 0x37CB, CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES = 0x37CE, - CMSG_CHECK_RAF_EMAIL_ENABLED = 0x36CB, - CMSG_CHECK_WOW_TOKEN_VETERAN_ELIGIBILITY = 0x36E9, - CMSG_CHOICE_RESPONSE = 0x3293, - CMSG_CLEAR_RAID_MARKER = 0x31A1, + CMSG_CHECK_RAF_EMAIL_ENABLED = 0x36CC, + CMSG_CHECK_WOW_TOKEN_VETERAN_ELIGIBILITY = 0x36EA, + CMSG_CHOICE_RESPONSE = 0x32A0, + CMSG_CLEAR_RAID_MARKER = 0x31A5, CMSG_CLEAR_TRADE_ITEM = 0x315E, - CMSG_CLIENT_PORT_GRAVEYARD = 0x352B, - CMSG_CLOSE_INTERACTION = 0x3496, + CMSG_CLIENT_PORT_GRAVEYARD = 0x3529, + CMSG_CLOSE_INTERACTION = 0x3493, + CMSG_CLOSE_QUEST_CHOICE = 0x32A1, + CMSG_CLUB_INVITE = 0x36FA, CMSG_COLLECTION_ITEM_SET_FAVORITE = 0x3632, CMSG_COMMENTATOR_ENABLE = 0x35F0, CMSG_COMMENTATOR_ENTER_INSTANCE = 0x35F4, @@ -236,26 +235,26 @@ enum OpcodeClient : uint16 CMSG_COMMENTATOR_GET_PLAYER_INFO = 0x35F2, CMSG_COMMENTATOR_START_WARGAME = 0x35EF, CMSG_COMPLAINT = 0x366C, - CMSG_COMPLETE_CINEMATIC = 0x3549, - CMSG_COMPLETE_MOVIE = 0x34E1, - CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31A6, - CMSG_CONFIRM_RESPEC_WIPE = 0x3202, + CMSG_COMPLETE_CINEMATIC = 0x3547, + CMSG_COMPLETE_MOVIE = 0x34DE, + CMSG_CONFIRM_ARTIFACT_RESPEC = 0x31AA, + CMSG_CONFIRM_RESPEC_WIPE = 0x320B, CMSG_CONNECT_TO_FAILED = 0x35D4, - CMSG_CONTRIBUTION_CONTRIBUTE = 0x3558, - CMSG_CONTRIBUTION_GET_STATE = 0x3559, - CMSG_CONVERSATION_LINE_STARTED = 0x354A, - CMSG_CONVERT_CONSUMPTION_TIME = 0x36F9, + CMSG_CONTRIBUTION_CONTRIBUTE = 0x3557, + CMSG_CONTRIBUTION_GET_STATE = 0x3558, + CMSG_CONVERSATION_LINE_STARTED = 0x3548, + CMSG_CONVERT_CONSUMPTION_TIME = 0x36FD, CMSG_CONVERT_RAID = 0x364E, CMSG_CREATE_CHARACTER = 0x3643, - CMSG_CREATE_SHIPMENT = 0x32E0, + CMSG_CREATE_SHIPMENT = 0x32EF, CMSG_DB_QUERY_BULK = 0x35E4, - CMSG_DECLINE_GUILD_INVITES = 0x3522, - CMSG_DECLINE_PETITION = 0x3538, - CMSG_DELETE_EQUIPMENT_SET = 0x3510, - CMSG_DEL_FRIEND = 0x36D0, - CMSG_DEL_IGNORE = 0x36D4, - CMSG_DEPOSIT_REAGENT_BANK = 0x331B, - CMSG_DESTROY_ITEM = 0x3285, + CMSG_DECLINE_GUILD_INVITES = 0x3520, + CMSG_DECLINE_PETITION = 0x3536, + CMSG_DELETE_EQUIPMENT_SET = 0x350D, + CMSG_DEL_FRIEND = 0x36D1, + CMSG_DEL_IGNORE = 0x36D5, + CMSG_DEPOSIT_REAGENT_BANK = 0x332A, + CMSG_DESTROY_ITEM = 0x3292, CMSG_DF_BOOT_PLAYER_VOTE = 0x3615, CMSG_DF_GET_JOIN_STATUS = 0x3613, CMSG_DF_GET_SYSTEM_INFO = 0x3612, @@ -266,74 +265,76 @@ enum OpcodeClient : uint16 CMSG_DF_SET_ROLES = 0x3614, CMSG_DF_TELEPORT = 0x3616, CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3A3C, - CMSG_DISMISS_CRITTER = 0x34FF, - CMSG_DO_MASTER_LOOT_ROLL = 0x3207, + CMSG_DISMISS_CRITTER = 0x34FC, + CMSG_DO_MASTER_LOOT_ROLL = 0x3210, CMSG_DO_READY_CHECK = 0x3633, - CMSG_DUEL_RESPONSE = 0x34E6, - CMSG_EJECT_PASSENGER = 0x3230, - CMSG_EMOTE = 0x3545, + CMSG_DUEL_RESPONSE = 0x34E3, + CMSG_EJECT_PASSENGER = 0x3239, + CMSG_EMOTE = 0x3543, CMSG_ENABLE_ENCRYPTION_ACK = 0x3767, CMSG_ENABLE_NAGLE = 0x376B, - CMSG_ENABLE_TAXI_NODE = 0x34AC, - CMSG_ENGINE_SURVEY = 0x36E3, + CMSG_ENABLE_TAXI_NODE = 0x34A9, + CMSG_ENGINE_SURVEY = 0x36E4, CMSG_ENUM_CHARACTERS = 0x35E8, - CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36DD, - CMSG_FAR_SIGHT = 0x34EC, - CMSG_GAME_OBJ_REPORT_USE = 0x34F3, - CMSG_GAME_OBJ_USE = 0x34F2, - CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32CB, - CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32BC, - CMSG_GARRISON_CHECK_UPGRADEABLE = 0x330E, - CMSG_GARRISON_COMPLETE_MISSION = 0x3301, - CMSG_GARRISON_GENERATE_RECRUITS = 0x32CE, - CMSG_GARRISON_GET_BUILDING_LANDMARKS = 0x32DC, - CMSG_GARRISON_GET_MISSION_REWARD = 0x3334, - CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3303, - CMSG_GARRISON_PURCHASE_BUILDING = 0x32B8, - CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32D0, - CMSG_GARRISON_REMOVE_FOLLOWER = 0x32F8, - CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32CC, - CMSG_GARRISON_RENAME_FOLLOWER = 0x32CD, - CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32B7, - CMSG_GARRISON_REQUEST_CLASS_SPEC_CATEGORY_INFO = 0x32D5, - CMSG_GARRISON_REQUEST_LANDING_PAGE_SHIPMENT_INFO = 0x32DF, - CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x32DE, - CMSG_GARRISON_RESEARCH_TALENT = 0x32D1, - CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32B9, - CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32C9, - CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32C5, - CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32CF, - CMSG_GARRISON_START_MISSION = 0x3300, - CMSG_GARRISON_SWAP_BUILDINGS = 0x32BD, + CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x36DE, + CMSG_FAR_SIGHT = 0x34E9, + CMSG_GAME_EVENT_DEBUG_DISABLE = 0x31B0, + CMSG_GAME_EVENT_DEBUG_ENABLE = 0x31AF, + CMSG_GAME_OBJ_REPORT_USE = 0x34F0, + CMSG_GAME_OBJ_USE = 0x34EF, + CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x32DA, + CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x32CB, + CMSG_GARRISON_CHECK_UPGRADEABLE = 0x331D, + CMSG_GARRISON_COMPLETE_MISSION = 0x3310, + CMSG_GARRISON_GENERATE_RECRUITS = 0x32DD, + CMSG_GARRISON_GET_BUILDING_LANDMARKS = 0x32EB, + CMSG_GARRISON_GET_MISSION_REWARD = 0x3341, + CMSG_GARRISON_MISSION_BONUS_ROLL = 0x3312, + CMSG_GARRISON_PURCHASE_BUILDING = 0x32C7, + CMSG_GARRISON_RECRUIT_FOLLOWER = 0x32DF, + CMSG_GARRISON_REMOVE_FOLLOWER = 0x3307, + CMSG_GARRISON_REMOVE_FOLLOWER_FROM_BUILDING = 0x32DB, + CMSG_GARRISON_RENAME_FOLLOWER = 0x32DC, + CMSG_GARRISON_REQUEST_BLUEPRINT_AND_SPECIALIZATION_DATA = 0x32C6, + CMSG_GARRISON_REQUEST_CLASS_SPEC_CATEGORY_INFO = 0x32E4, + CMSG_GARRISON_REQUEST_LANDING_PAGE_SHIPMENT_INFO = 0x32EE, + CMSG_GARRISON_REQUEST_SHIPMENT_INFO = 0x32ED, + CMSG_GARRISON_RESEARCH_TALENT = 0x32E0, + CMSG_GARRISON_SET_BUILDING_ACTIVE = 0x32C8, + CMSG_GARRISON_SET_FOLLOWER_FAVORITE = 0x32D8, + CMSG_GARRISON_SET_FOLLOWER_INACTIVE = 0x32D4, + CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES = 0x32DE, + CMSG_GARRISON_START_MISSION = 0x330F, + CMSG_GARRISON_SWAP_BUILDINGS = 0x32CC, CMSG_GENERATE_RANDOM_CHARACTER_NAME = 0x35E7, + CMSG_GET_ACCOUNT_CHARACTER_LIST = 0x36B7, CMSG_GET_CHALLENGE_MODE_REWARDS = 0x3683, - CMSG_GET_GARRISON_INFO = 0x32B2, - CMSG_GET_ITEM_PURCHASE_DATA = 0x3533, - CMSG_GET_MIRROR_IMAGE_DATA = 0x3289, + CMSG_GET_GARRISON_INFO = 0x32C1, + CMSG_GET_ITEM_PURCHASE_DATA = 0x3531, + CMSG_GET_MIRROR_IMAGE_DATA = 0x3296, CMSG_GET_PVP_OPTIONS_ENABLED = 0x35EE, - CMSG_GET_REMAINING_GAME_TIME = 0x36EC, - CMSG_GET_TROPHY_LIST = 0x32F1, - CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36DF, - CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3692, - CMSG_GM_TICKET_GET_CASE_STATUS = 0x3691, - CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x3690, - CMSG_GOSSIP_SELECT_OPTION = 0x3497, - CMSG_GRANT_LEVEL = 0x34FB, + CMSG_GET_REMAINING_GAME_TIME = 0x36ED, + CMSG_GET_TROPHY_LIST = 0x3300, + CMSG_GET_UNDELETE_CHARACTER_COOLDOWN_STATUS = 0x36E0, + CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x3693, + CMSG_GM_TICKET_GET_CASE_STATUS = 0x3692, + CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x3691, + CMSG_GOSSIP_SELECT_OPTION = 0x3494, + CMSG_GRANT_LEVEL = 0x34F8, CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x308D, CMSG_GUILD_ADD_RANK = 0x3064, CMSG_GUILD_ASSIGN_MEMBER_RANK = 0x305F, CMSG_GUILD_AUTO_DECLINE_INVITATION = 0x3061, - CMSG_GUILD_BANK_ACTIVATE = 0x34B9, - CMSG_GUILD_BANK_BUY_TAB = 0x34C8, - CMSG_GUILD_BANK_DEPOSIT_MONEY = 0x34CA, + CMSG_GUILD_BANK_ACTIVATE = 0x34B6, + CMSG_GUILD_BANK_BUY_TAB = 0x34C4, + CMSG_GUILD_BANK_DEPOSIT_MONEY = 0x34C6, CMSG_GUILD_BANK_LOG_QUERY = 0x3082, - CMSG_GUILD_BANK_QUERY_TAB = 0x34C7, + CMSG_GUILD_BANK_QUERY_TAB = 0x34C3, CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY = 0x3083, CMSG_GUILD_BANK_SET_TAB_TEXT = 0x3086, - CMSG_GUILD_BANK_SWAP_ITEMS = 0x34BA, CMSG_GUILD_BANK_TEXT_QUERY = 0x3087, - CMSG_GUILD_BANK_UPDATE_TAB = 0x34C9, - CMSG_GUILD_BANK_WITHDRAW_MONEY = 0x34CB, + CMSG_GUILD_BANK_UPDATE_TAB = 0x34C5, + CMSG_GUILD_BANK_WITHDRAW_MONEY = 0x34C7, CMSG_GUILD_CHALLENGE_UPDATE_REQUEST = 0x307B, CMSG_GUILD_CHANGE_NAME_REQUEST = 0x307E, CMSG_GUILD_DECLINE_INVITATION = 0x3060, @@ -358,40 +359,41 @@ enum OpcodeClient : uint16 CMSG_GUILD_REPLACE_GUILD_MASTER = 0x3088, CMSG_GUILD_SET_ACHIEVEMENT_TRACKING = 0x306F, CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT = 0x3070, - CMSG_GUILD_SET_GUILD_MASTER = 0x36C5, + CMSG_GUILD_SET_GUILD_MASTER = 0x36C6, CMSG_GUILD_SET_MEMBER_NOTE = 0x3072, CMSG_GUILD_SET_RANK_PERMISSIONS = 0x3067, CMSG_GUILD_SHIFT_RANK = 0x3066, CMSG_GUILD_UPDATE_INFO_TEXT = 0x3075, CMSG_GUILD_UPDATE_MOTD_TEXT = 0x3074, - CMSG_HEARTH_AND_RESURRECT = 0x350C, + CMSG_HEARTH_AND_RESURRECT = 0x3509, CMSG_HOTFIX_REQUEST = 0x35E5, CMSG_IGNORE_TRADE = 0x3159, CMSG_INITIATE_ROLE_POLL = 0x35DA, CMSG_INITIATE_TRADE = 0x3156, - CMSG_INSPECT = 0x352D, - CMSG_INSPECT_PVP = 0x36A1, - CMSG_INSTANCE_LOCK_RESPONSE = 0x3511, - CMSG_ITEM_PURCHASE_REFUND = 0x3534, - CMSG_ITEM_TEXT_QUERY = 0x330F, - CMSG_JOIN_PET_BATTLE_QUEUE = 0x31D4, - CMSG_JOIN_RATED_BATTLEGROUND = 0x3176, + CMSG_INSPECT = 0x352B, + CMSG_INSPECT_PVP = 0x36A2, + CMSG_INSTANCE_LOCK_RESPONSE = 0x350E, + CMSG_ISLAND_QUEUE = 0x3387, + CMSG_ITEM_PURCHASE_REFUND = 0x3532, + CMSG_ITEM_TEXT_QUERY = 0x331E, + CMSG_JOIN_PET_BATTLE_QUEUE = 0x31DC, + CMSG_JOIN_RATED_BATTLEGROUND = 0x3177, CMSG_KEEP_ALIVE = 0x367F, - CMSG_KEYBOUND_OVERRIDE = 0x3219, - CMSG_LEARN_PVP_TALENTS = 0x3557, - CMSG_LEARN_TALENTS = 0x3556, + CMSG_KEYBOUND_OVERRIDE = 0x3222, + CMSG_LEARN_PVP_TALENTS = 0x3556, + CMSG_LEARN_TALENTS = 0x3554, CMSG_LEAVE_GROUP = 0x3649, - CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31D5, + CMSG_LEAVE_PET_BATTLE_QUEUE = 0x31DD, CMSG_LFG_LIST_APPLY_TO_GROUP = 0x360C, CMSG_LFG_LIST_CANCEL_APPLICATION = 0x360D, CMSG_LFG_LIST_DECLINE_APPLICANT = 0x360E, CMSG_LFG_LIST_GET_STATUS = 0x360A, CMSG_LFG_LIST_INVITE_APPLICANT = 0x360F, CMSG_LFG_LIST_INVITE_RESPONSE = 0x3610, - CMSG_LFG_LIST_JOIN = 0x3345, + CMSG_LFG_LIST_JOIN = 0x3359, CMSG_LFG_LIST_LEAVE = 0x3609, CMSG_LFG_LIST_SEARCH = 0x360B, - CMSG_LFG_LIST_UPDATE_REQUEST = 0x3346, + CMSG_LFG_LIST_UPDATE_REQUEST = 0x335A, CMSG_LF_GUILD_ADD_RECRUIT = 0x361B, CMSG_LF_GUILD_BROWSE = 0x361D, CMSG_LF_GUILD_DECLINE_RECRUIT = 0x3078, @@ -400,37 +402,38 @@ enum OpcodeClient : uint16 CMSG_LF_GUILD_GET_RECRUITS = 0x3077, CMSG_LF_GUILD_REMOVE_RECRUIT = 0x307A, CMSG_LF_GUILD_SET_GUILD_POST = 0x361C, - CMSG_LIST_INVENTORY = 0x34A4, - CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36B9, - CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B8, - CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B7, + CMSG_LIST_INVENTORY = 0x34A1, + CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x36BA, + CMSG_LIVE_REGION_CHARACTER_COPY = 0x36B9, + CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x36B8, CMSG_LOADING_SCREEN_NOTIFY = 0x35F8, - CMSG_LOAD_SELECTED_TROPHY = 0x32F2, - CMSG_LOGOUT_CANCEL = 0x34DC, - CMSG_LOGOUT_INSTANT = 0x34DD, - CMSG_LOGOUT_REQUEST = 0x34DB, + CMSG_LOAD_SELECTED_TROPHY = 0x3301, + CMSG_LOGOUT_CANCEL = 0x34D9, + CMSG_LOGOUT_INSTANT = 0x34DA, + CMSG_LOGOUT_REQUEST = 0x34D7, CMSG_LOG_DISCONNECT = 0x3769, CMSG_LOG_STREAMING_ERROR = 0x376D, - CMSG_LOOT_ITEM = 0x3205, - CMSG_LOOT_MONEY = 0x3204, - CMSG_LOOT_RELEASE = 0x3209, - CMSG_LOOT_ROLL = 0x320A, - CMSG_LOOT_UNIT = 0x3203, - CMSG_LOW_LEVEL_RAID1 = 0x369F, - CMSG_LOW_LEVEL_RAID2 = 0x3518, - CMSG_MAIL_CREATE_TEXT_ITEM = 0x353F, - CMSG_MAIL_DELETE = 0x321B, - CMSG_MAIL_GET_LIST = 0x353A, - CMSG_MAIL_MARK_AS_READ = 0x353E, + CMSG_LOOT_ITEM = 0x320E, + CMSG_LOOT_MONEY = 0x320D, + CMSG_LOOT_RELEASE = 0x3212, + CMSG_LOOT_ROLL = 0x3213, + CMSG_LOOT_UNIT = 0x320C, + CMSG_LOW_LEVEL_RAID1 = 0x36A0, + CMSG_LOW_LEVEL_RAID2 = 0x3515, + CMSG_MAIL_CREATE_TEXT_ITEM = 0x353D, + CMSG_MAIL_DELETE = 0x3224, + CMSG_MAIL_GET_LIST = 0x3538, + CMSG_MAIL_MARK_AS_READ = 0x353C, CMSG_MAIL_RETURN_TO_SENDER = 0x3655, - CMSG_MAIL_TAKE_ITEM = 0x353C, - CMSG_MAIL_TAKE_MONEY = 0x353B, - CMSG_MASTER_LOOT_ITEM = 0x3206, + CMSG_MAIL_TAKE_ITEM = 0x353A, + CMSG_MAIL_TAKE_MONEY = 0x3539, + CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3227, + CMSG_MASTER_LOOT_ITEM = 0x320F, CMSG_MINIMAP_PING = 0x364B, - CMSG_MISSILE_TRAJECTORY_COLLISION = 0x3189, + CMSG_MISSILE_TRAJECTORY_COLLISION = 0x318A, CMSG_MOUNT_CLEAR_FANFARE = 0x312D, CMSG_MOUNT_SET_FAVORITE = 0x3631, - CMSG_MOUNT_SPECIAL_ANIM = 0x3273, + CMSG_MOUNT_SPECIAL_ANIM = 0x3281, CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x3A12, CMSG_MOVE_CHANGE_TRANSPORT = 0x3A2C, CMSG_MOVE_CHANGE_VEHICLE_SEATS = 0x3A31, @@ -443,6 +446,7 @@ enum OpcodeClient : uint16 CMSG_MOVE_FEATHER_FALL_ACK = 0x3A19, CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK = 0x3A2B, CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK = 0x3A2A, + CMSG_MOVE_FORCE_MOVEMENT_FORCE_SPEED_CHANGE_ACK = 0x3A3D, CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK = 0x3A2F, CMSG_MOVE_FORCE_ROOT_ACK = 0x3A0B, CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK = 0x3A09, @@ -492,264 +496,268 @@ enum OpcodeClient : uint16 CMSG_MOVE_TIME_SKIPPED = 0x3A18, CMSG_MOVE_TOGGLE_COLLISION_CHEAT = 0x3A05, CMSG_MOVE_WATER_WALK_ACK = 0x3A1A, - CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31CA, - CMSG_NEXT_CINEMATIC_CAMERA = 0x3548, - CMSG_OBJECT_UPDATE_FAILED = 0x317F, - CMSG_OBJECT_UPDATE_RESCUED = 0x3180, - CMSG_OFFER_PETITION = 0x36AF, - CMSG_OPENING_CINEMATIC = 0x3547, - CMSG_OPEN_ITEM = 0x3310, - CMSG_OPEN_MISSION_NPC = 0x32D7, - CMSG_OPEN_SHIPMENT_NPC = 0x32DD, - CMSG_OPEN_TRADESKILL_NPC = 0x32E8, - CMSG_OPT_OUT_OF_LOOT = 0x34FA, + CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x31D2, + CMSG_NEXT_CINEMATIC_CAMERA = 0x3546, + CMSG_OBJECT_UPDATE_FAILED = 0x3180, + CMSG_OBJECT_UPDATE_RESCUED = 0x3181, + CMSG_OFFER_PETITION = 0x36B0, + CMSG_OPENING_CINEMATIC = 0x3545, + CMSG_OPEN_ITEM = 0x331F, + CMSG_OPEN_MISSION_NPC = 0x32E6, + CMSG_OPEN_SHIPMENT_NPC = 0x32EC, + CMSG_OPEN_TRADESKILL_NPC = 0x32F7, + CMSG_OPT_OUT_OF_LOOT = 0x34F7, CMSG_PARTY_INVITE = 0x3602, CMSG_PARTY_INVITE_RESPONSE = 0x3603, CMSG_PARTY_UNINVITE = 0x3647, - CMSG_PETITION_BUY = 0x34CD, - CMSG_PETITION_RENAME_GUILD = 0x36C6, - CMSG_PETITION_SHOW_LIST = 0x34CC, - CMSG_PETITION_SHOW_SIGNATURES = 0x34CE, - CMSG_PET_ABANDON = 0x3490, - CMSG_PET_ACTION = 0x348E, - CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31D9, + CMSG_PETITION_BUY = 0x34C9, + CMSG_PETITION_RENAME_GUILD = 0x36C7, + CMSG_PETITION_SHOW_LIST = 0x34C8, + CMSG_PETITION_SHOW_SIGNATURES = 0x34CA, + CMSG_PET_ABANDON = 0x348D, + CMSG_PET_ACTION = 0x348B, + CMSG_PET_BATTLE_FINAL_NOTIFY = 0x31E1, CMSG_PET_BATTLE_INPUT = 0x3640, - CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x321A, - CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31D8, + CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3223, + CMSG_PET_BATTLE_QUIT_NOTIFY = 0x31E0, CMSG_PET_BATTLE_REPLACE_FRONT_PET = 0x3641, - CMSG_PET_BATTLE_REQUEST_PVP = 0x31D2, - CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31D3, - CMSG_PET_BATTLE_REQUEST_WILD = 0x31D0, - CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31DA, - CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31D1, - CMSG_PET_CANCEL_AURA = 0x3491, - CMSG_PET_CAST_SPELL = 0x328D, + CMSG_PET_BATTLE_REQUEST_PVP = 0x31DA, + CMSG_PET_BATTLE_REQUEST_UPDATE = 0x31DB, + CMSG_PET_BATTLE_REQUEST_WILD = 0x31D8, + CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x31E2, + CMSG_PET_BATTLE_WILD_LOCATION_FAIL = 0x31D9, + CMSG_PET_CANCEL_AURA = 0x348E, + CMSG_PET_CAST_SPELL = 0x329A, CMSG_PET_RENAME = 0x3685, - CMSG_PET_SET_ACTION = 0x348D, - CMSG_PET_SPELL_AUTOCAST = 0x3492, - CMSG_PET_STOP_ATTACK = 0x348F, + CMSG_PET_SET_ACTION = 0x348A, + CMSG_PET_SPELL_AUTOCAST = 0x348F, + CMSG_PET_STOP_ATTACK = 0x348C, CMSG_PING = 0x3768, CMSG_PLAYER_LOGIN = 0x35EA, CMSG_PROTOCOL_MISMATCH = 0x376E, - CMSG_PUSH_QUEST_TO_PARTY = 0x34A2, - CMSG_PVP_LOG_DATA = 0x317A, - CMSG_PVP_PRESTIGE_RANK_UP = 0x3332, - CMSG_QUERY_BATTLE_PET_NAME = 0x3268, + CMSG_PUSH_QUEST_TO_PARTY = 0x349F, + CMSG_PVP_LOG_DATA = 0x317B, + CMSG_QUERY_BATTLE_PET_NAME = 0x3276, + CMSG_QUERY_COMMUNITY_NAME = 0x368C, CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x3660, CMSG_QUERY_CORPSE_TRANSPORT = 0x3661, - CMSG_QUERY_COUNTDOWN_TIMER = 0x31A4, - CMSG_QUERY_CREATURE = 0x3262, - CMSG_QUERY_GAME_OBJECT = 0x3263, - CMSG_QUERY_GARRISON_CREATURE_NAME = 0x3269, - CMSG_QUERY_GUILD_INFO = 0x368D, - CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x3506, - CMSG_QUERY_NEXT_MAIL_TIME = 0x353D, - CMSG_QUERY_NPC_TEXT = 0x3264, - CMSG_QUERY_PAGE_TEXT = 0x3266, - CMSG_QUERY_PETITION = 0x326A, - CMSG_QUERY_PET_NAME = 0x3267, + CMSG_QUERY_COUNTDOWN_TIMER = 0x31A8, + CMSG_QUERY_CREATURE = 0x3270, + CMSG_QUERY_GAME_OBJECT = 0x3271, + CMSG_QUERY_GARRISON_CREATURE_NAME = 0x3277, + CMSG_QUERY_GUILD_INFO = 0x368E, + CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x3503, + CMSG_QUERY_NEXT_MAIL_TIME = 0x353B, + CMSG_QUERY_NPC_TEXT = 0x3272, + CMSG_QUERY_PAGE_TEXT = 0x3274, + CMSG_QUERY_PETITION = 0x3278, + CMSG_QUERY_PET_NAME = 0x3275, CMSG_QUERY_PLAYER_NAME = 0x368B, - CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3173, - CMSG_QUERY_QUEST_INFO = 0x3265, - CMSG_QUERY_QUEST_REWARDS = 0x3336, - CMSG_QUERY_REALM_NAME = 0x368C, + CMSG_QUERY_QUEST_COMPLETION_NPCS = 0x3174, + CMSG_QUERY_QUEST_INFO = 0x3273, + CMSG_QUERY_REALM_NAME = 0x368D, CMSG_QUERY_SCENARIO_POI = 0x3656, - CMSG_QUERY_TIME = 0x34DA, - CMSG_QUERY_VOID_STORAGE = 0x319D, - CMSG_QUEST_CONFIRM_ACCEPT = 0x34A1, - CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x349B, - CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x349D, - CMSG_QUEST_GIVER_COMPLETE_QUEST = 0x349C, - CMSG_QUEST_GIVER_HELLO = 0x3499, - CMSG_QUEST_GIVER_QUERY_QUEST = 0x349A, - CMSG_QUEST_GIVER_REQUEST_REWARD = 0x349E, - CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x34A0, - CMSG_QUEST_GIVER_STATUS_QUERY = 0x349F, - CMSG_QUEST_LOG_REMOVE_QUEST = 0x3532, - CMSG_QUEST_POI_QUERY = 0x36B0, - CMSG_QUEST_PUSH_RESULT = 0x34A3, + CMSG_QUERY_TIME = 0x34D6, + CMSG_QUERY_TREASURE_PICKER = 0x3343, + CMSG_QUERY_VOID_STORAGE = 0x31A1, + CMSG_QUEST_CONFIRM_ACCEPT = 0x349E, + CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x3498, + CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x349A, + CMSG_QUEST_GIVER_COMPLETE_QUEST = 0x3499, + CMSG_QUEST_GIVER_HELLO = 0x3496, + CMSG_QUEST_GIVER_QUERY_QUEST = 0x3497, + CMSG_QUEST_GIVER_REQUEST_REWARD = 0x349B, + CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x349D, + CMSG_QUEST_GIVER_STATUS_QUERY = 0x349C, + CMSG_QUEST_LOG_REMOVE_QUEST = 0x3530, + CMSG_QUEST_POI_QUERY = 0x36B1, + CMSG_QUEST_PUSH_RESULT = 0x34A0, CMSG_QUEUED_MESSAGES_END = 0x376C, - CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3705, - CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3704, - CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3703, - CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3702, - CMSG_RAID_OR_BATTLEGROUND_ENGINE_SURVEY = 0x36E4, + CMSG_QUICK_JOIN_AUTO_ACCEPT_REQUESTS = 0x3709, + CMSG_QUICK_JOIN_REQUEST_INVITE = 0x3708, + CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x3707, + CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x3706, + CMSG_RAID_OR_BATTLEGROUND_ENGINE_SURVEY = 0x36E5, CMSG_RANDOM_ROLL = 0x3654, CMSG_READY_CHECK_RESPONSE = 0x3634, - CMSG_READ_ITEM = 0x3311, - CMSG_RECLAIM_CORPSE = 0x34DF, - CMSG_RECRUIT_A_FRIEND = 0x36CC, - CMSG_REDEEM_WOW_TOKEN_CONFIRM = 0x36EE, - CMSG_REDEEM_WOW_TOKEN_START = 0x36ED, - CMSG_REMOVE_NEW_ITEM = 0x3339, + CMSG_READ_ITEM = 0x3320, + CMSG_RECLAIM_CORPSE = 0x34DC, + CMSG_RECRUIT_A_FRIEND = 0x36CD, + CMSG_REDEEM_WOW_TOKEN_CONFIRM = 0x36EF, + CMSG_REDEEM_WOW_TOKEN_START = 0x36EE, + CMSG_REMOVE_NEW_ITEM = 0x3346, CMSG_REORDER_CHARACTERS = 0x35E9, - CMSG_REPAIR_ITEM = 0x34F0, - CMSG_REPLACE_TROPHY = 0x32F3, - CMSG_REPOP_REQUEST = 0x352A, - CMSG_REPORT_CLIENT_VARIABLES = 0x36FF, - CMSG_REPORT_ENABLED_ADDONS = 0x36FE, - CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x3700, - CMSG_REPORT_PVP_PLAYER_AFK = 0x34F8, - CMSG_REQUEST_ACCOUNT_DATA = 0x3695, - CMSG_REQUEST_AREA_POI_UPDATE = 0x3338, + CMSG_REPAIR_ITEM = 0x34ED, + CMSG_REPLACE_TROPHY = 0x3302, + CMSG_REPOP_REQUEST = 0x3528, + CMSG_REPORT_CLIENT_VARIABLES = 0x3703, + CMSG_REPORT_ENABLED_ADDONS = 0x3702, + CMSG_REPORT_KEYBINDING_EXECUTION_COUNTS = 0x3704, + CMSG_REPORT_PVP_PLAYER_AFK = 0x34F5, + CMSG_REQUEST_ACCOUNT_DATA = 0x3696, + CMSG_REQUEST_AREA_POI_UPDATE = 0x3345, CMSG_REQUEST_BATTLEFIELD_STATUS = 0x35DC, - CMSG_REQUEST_CATEGORY_COOLDOWNS = 0x317C, - CMSG_REQUEST_CEMETERY_LIST = 0x3174, - CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32A4, - CMSG_REQUEST_CONSUMPTION_CONVERSION_INFO = 0x36F8, - CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x352E, - CMSG_REQUEST_FORCED_REACTIONS = 0x31FE, - CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A3, - CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A2, - CMSG_REQUEST_HONOR_STATS = 0x3179, - CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x3295, + CMSG_REQUEST_CATEGORY_COOLDOWNS = 0x317D, + CMSG_REQUEST_CEMETERY_LIST = 0x3175, + CMSG_REQUEST_CHALLENGE_MODE_AFFIXES = 0x3205, + CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS = 0x32B3, + CMSG_REQUEST_CONSUMPTION_CONVERSION_INFO = 0x36FC, + CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x352C, + CMSG_REQUEST_FORCED_REACTIONS = 0x3207, + CMSG_REQUEST_GUILD_PARTY_STATE = 0x31A7, + CMSG_REQUEST_GUILD_REWARDS_LIST = 0x31A6, + CMSG_REQUEST_HONOR_STATS = 0x317A, + CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x32A3, CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x35F7, CMSG_REQUEST_PARTY_MEMBER_STATS = 0x3653, - CMSG_REQUEST_PET_INFO = 0x3493, - CMSG_REQUEST_PLAYED_TIME = 0x326D, - CMSG_REQUEST_PVP_BRAWL_INFO = 0x3191, - CMSG_REQUEST_PVP_REWARDS = 0x3190, - CMSG_REQUEST_RAID_INFO = 0x36C7, + CMSG_REQUEST_PET_INFO = 0x3490, + CMSG_REQUEST_PLAYED_TIME = 0x327B, + CMSG_REQUEST_PVP_BRAWL_INFO = 0x3195, + CMSG_REQUEST_PVP_REWARDS = 0x3194, + CMSG_REQUEST_RAID_INFO = 0x36C8, CMSG_REQUEST_RATED_BATTLEFIELD_INFO = 0x35E3, CMSG_REQUEST_RESEARCH_HISTORY = 0x3167, - CMSG_REQUEST_STABLED_PETS = 0x3494, - CMSG_REQUEST_VEHICLE_EXIT = 0x322B, - CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x322D, - CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x322C, - CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x322E, - CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3337, - CMSG_REQUEST_WOW_TOKEN_MARKET_PRICE = 0x36E6, - CMSG_RESET_CHALLENGE_MODE = 0x31FB, - CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x31FC, + CMSG_REQUEST_STABLED_PETS = 0x3491, + CMSG_REQUEST_VEHICLE_EXIT = 0x3234, + CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3236, + CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3235, + CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x3237, + CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3344, + CMSG_REQUEST_WOW_TOKEN_MARKET_PRICE = 0x36E7, + CMSG_RESET_CHALLENGE_MODE = 0x3203, + CMSG_RESET_CHALLENGE_MODE_CHEAT = 0x3204, CMSG_RESET_INSTANCES = 0x3668, CMSG_RESURRECT_RESPONSE = 0x3684, - CMSG_REVERT_MONUMENT_APPEARANCE = 0x32F5, - CMSG_RIDE_VEHICLE_INTERACT = 0x322F, - CMSG_SAVE_CUF_PROFILES = 0x318A, - CMSG_SAVE_EQUIPMENT_SET = 0x350F, - CMSG_SAVE_GUILD_EMBLEM = 0x3299, - CMSG_SCENE_PLAYBACK_CANCELED = 0x3216, - CMSG_SCENE_PLAYBACK_COMPLETE = 0x3215, - CMSG_SCENE_TRIGGER_EVENT = 0x3217, - CMSG_SELF_RES = 0x3535, - CMSG_SELL_ITEM = 0x34A5, - CMSG_SELL_WOW_TOKEN_CONFIRM = 0x36E8, - CMSG_SELL_WOW_TOKEN_START = 0x36E7, - CMSG_SEND_CONTACT_LIST = 0x36CE, + CMSG_REVERT_MONUMENT_APPEARANCE = 0x3304, + CMSG_RIDE_VEHICLE_INTERACT = 0x3238, + CMSG_SAVE_CUF_PROFILES = 0x318B, + CMSG_SAVE_EQUIPMENT_SET = 0x350C, + CMSG_SAVE_GUILD_EMBLEM = 0x32A7, + CMSG_SCENE_PLAYBACK_CANCELED = 0x321F, + CMSG_SCENE_PLAYBACK_COMPLETE = 0x321E, + CMSG_SCENE_TRIGGER_EVENT = 0x3220, + CMSG_SELF_RES = 0x3533, + CMSG_SELL_ITEM = 0x34A2, + CMSG_SELL_WOW_TOKEN_CONFIRM = 0x36E9, + CMSG_SELL_WOW_TOKEN_START = 0x36E8, + CMSG_SEND_CONTACT_LIST = 0x36CF, CMSG_SEND_MAIL = 0x35FA, CMSG_SEND_SOR_REQUEST_VIA_ADDRESS = 0x3620, - CMSG_SEND_TEXT_EMOTE = 0x348A, - CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x321C, - CMSG_SET_ACTION_BAR_TOGGLES = 0x3536, + CMSG_SEND_TEXT_EMOTE = 0x3488, + CMSG_SET_ACHIEVEMENTS_HIDDEN = 0x3225, + CMSG_SET_ACTION_BAR_TOGGLES = 0x3534, CMSG_SET_ACTION_BUTTON = 0x3635, CMSG_SET_ACTIVE_MOVER = 0x3A37, - CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32A5, + CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x32B4, CMSG_SET_ASSISTANT_LEADER = 0x364F, - CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3314, - CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3315, - CMSG_SET_BANK_BAG_SLOT_FLAG = 0x3313, - CMSG_SET_CONTACT_NOTES = 0x36D1, + CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3323, + CMSG_SET_BANK_AUTOSORT_DISABLED = 0x3324, + CMSG_SET_CONTACT_NOTES = 0x36D2, CMSG_SET_CURRENCY_FLAGS = 0x3169, - CMSG_SET_DIFFICULTY_ID = 0x3218, + CMSG_SET_DIFFICULTY_ID = 0x3221, CMSG_SET_DUNGEON_DIFFICULTY = 0x3682, CMSG_SET_EVERYONE_IS_ASSISTANT = 0x3617, - CMSG_SET_FACTION_AT_WAR = 0x34E2, - CMSG_SET_FACTION_INACTIVE = 0x34E4, - CMSG_SET_FACTION_NOT_AT_WAR = 0x34E3, - CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3317, - CMSG_SET_LFG_BONUS_FACTION_ID = 0x3294, + CMSG_SET_FACTION_AT_WAR = 0x34DF, + CMSG_SET_FACTION_INACTIVE = 0x34E1, + CMSG_SET_FACTION_NOT_AT_WAR = 0x34E0, + CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x31B8, + CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3326, + CMSG_SET_LFG_BONUS_FACTION_ID = 0x32A2, CMSG_SET_LOOT_METHOD = 0x3648, - CMSG_SET_LOOT_SPECIALIZATION = 0x3543, + CMSG_SET_LOOT_SPECIALIZATION = 0x3541, CMSG_SET_PARTY_ASSIGNMENT = 0x3651, CMSG_SET_PARTY_LEADER = 0x364A, CMSG_SET_PET_SLOT = 0x3168, CMSG_SET_PLAYER_DECLINED_NAMES = 0x368A, - CMSG_SET_PREFERRED_CEMETERY = 0x3175, - CMSG_SET_PVP = 0x329D, - CMSG_SET_RAID_DIFFICULTY = 0x36DB, + CMSG_SET_PREFERRED_CEMETERY = 0x3176, + CMSG_SET_PVP = 0x32AB, + CMSG_SET_RAID_DIFFICULTY = 0x36DC, CMSG_SET_ROLE = 0x35D9, CMSG_SET_SAVED_INSTANCE_EXTEND = 0x3688, - CMSG_SET_SELECTION = 0x352C, - CMSG_SET_SHEATHED = 0x348B, - CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3316, - CMSG_SET_TAXI_BENCHMARK_MODE = 0x34F7, - CMSG_SET_TITLE = 0x3271, + CMSG_SET_SELECTION = 0x352A, + CMSG_SET_SHEATHED = 0x3489, + CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3325, + CMSG_SET_TAXI_BENCHMARK_MODE = 0x34F4, + CMSG_SET_TITLE = 0x327F, CMSG_SET_TRADE_CURRENCY = 0x3160, CMSG_SET_TRADE_GOLD = 0x315F, CMSG_SET_TRADE_ITEM = 0x315D, - CMSG_SET_USING_PARTY_GARRISON = 0x32D9, - CMSG_SET_WATCHED_FACTION = 0x34E5, - CMSG_SHOW_TRADE_SKILL = 0x36BF, - CMSG_SIGN_PETITION = 0x3537, + CMSG_SET_USING_PARTY_GARRISON = 0x32E8, + CMSG_SET_WAR_MODE = 0x32AC, + CMSG_SET_WATCHED_FACTION = 0x34E2, + CMSG_SHOW_TRADE_SKILL = 0x36C0, + CMSG_SIGN_PETITION = 0x3535, CMSG_SILENCE_PARTY_TALKER = 0x3652, - CMSG_SOCKET_GEMS = 0x34EF, - CMSG_SORT_BAGS = 0x3318, - CMSG_SORT_BANK_BAGS = 0x3319, - CMSG_SORT_REAGENT_BANK_BAGS = 0x331A, - CMSG_SPELL_CLICK = 0x3498, - CMSG_SPIRIT_HEALER_ACTIVATE = 0x34B2, + CMSG_SOCKET_GEMS = 0x34EC, + CMSG_SORT_BAGS = 0x3327, + CMSG_SORT_BANK_BAGS = 0x3328, + CMSG_SORT_REAGENT_BANK_BAGS = 0x3329, + CMSG_SPELL_CLICK = 0x3495, + CMSG_SPIRIT_HEALER_ACTIVATE = 0x34AF, CMSG_SPLIT_ITEM = 0x399E, - CMSG_STAND_STATE_CHANGE = 0x3188, - CMSG_START_CHALLENGE_MODE = 0x354E, + CMSG_STAND_STATE_CHANGE = 0x3189, + CMSG_START_CHALLENGE_MODE = 0x354C, CMSG_START_SPECTATOR_WAR_GAME = 0x35DF, CMSG_START_WAR_GAME = 0x35DE, CMSG_SUMMON_RESPONSE = 0x366A, CMSG_SUPPORT_TICKET_SUBMIT_BUG = 0x3645, CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT = 0x3644, CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION = 0x3646, - CMSG_SURRENDER_ARENA = 0x3172, + CMSG_SURRENDER_ARENA = 0x3173, CMSG_SUSPEND_COMMS_ACK = 0x3764, CMSG_SUSPEND_TOKEN_RESPONSE = 0x376A, CMSG_SWAP_INV_ITEM = 0x399D, CMSG_SWAP_ITEM = 0x399C, CMSG_SWAP_SUB_GROUPS = 0x364D, - CMSG_SWAP_VOID_ITEM = 0x319F, - CMSG_TABARD_VENDOR_ACTIVATE = 0x329A, - CMSG_TALK_TO_GOSSIP = 0x3495, - CMSG_TAXI_NODE_STATUS_QUERY = 0x34AB, - CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x34AD, - CMSG_TAXI_REQUEST_EARLY_LANDING = 0x34AF, + CMSG_SWAP_VOID_ITEM = 0x31A3, + CMSG_TABARD_VENDOR_ACTIVATE = 0x32A8, + CMSG_TALK_TO_GOSSIP = 0x3492, + CMSG_TAXI_NODE_STATUS_QUERY = 0x34A8, + CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x34AA, + CMSG_TAXI_REQUEST_EARLY_LANDING = 0x34AC, CMSG_TIME_ADJUSTMENT_RESPONSE = 0x3A3B, CMSG_TIME_SYNC_RESPONSE = 0x3A38, CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3A3A, CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3A39, CMSG_TOGGLE_DIFFICULTY = 0x3657, - CMSG_TOGGLE_PVP = 0x329C, - CMSG_TOTEM_DESTROYED = 0x34FE, - CMSG_TRADE_SKILL_SET_FAVORITE = 0x3335, - CMSG_TRAINER_BUY_SPELL = 0x34B1, - CMSG_TRAINER_LIST = 0x34B0, - CMSG_TRANSMOGRIFY_ITEMS = 0x3192, - CMSG_TURN_IN_PETITION = 0x3539, - CMSG_TUTORIAL = 0x36DC, + CMSG_TOGGLE_PVP = 0x32AA, + CMSG_TOTEM_DESTROYED = 0x34FB, + CMSG_TRADE_SKILL_SET_FAVORITE = 0x3342, + CMSG_TRAINER_BUY_SPELL = 0x34AE, + CMSG_TRAINER_LIST = 0x34AD, + CMSG_TRANSMOGRIFY_ITEMS = 0x3196, + CMSG_TURN_IN_PETITION = 0x3537, + CMSG_TUTORIAL = 0x36DD, CMSG_TWITTER_CHECK_STATUS = 0x312A, CMSG_TWITTER_CONNECT = 0x3127, CMSG_TWITTER_DISCONNECT = 0x312B, - CMSG_TWITTER_POST = 0x331C, - CMSG_UI_TIME_REQUEST = 0x369A, + CMSG_TWITTER_POST = 0x332B, + CMSG_UI_TIME_REQUEST = 0x369B, CMSG_UNACCEPT_TRADE = 0x315B, - CMSG_UNDELETE_CHARACTER = 0x36DE, - CMSG_UNLEARN_SKILL = 0x34E9, - CMSG_UNLEARN_SPECIALIZATION = 0x31A0, - CMSG_UNLOCK_VOID_STORAGE = 0x319C, - CMSG_UPDATE_ACCOUNT_DATA = 0x3696, - CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x3290, + CMSG_UNDELETE_CHARACTER = 0x36DF, + CMSG_UNLEARN_SKILL = 0x34E6, + CMSG_UNLEARN_SPECIALIZATION = 0x31A4, + CMSG_UNLOCK_VOID_STORAGE = 0x31A0, + CMSG_UPDATE_ACCOUNT_DATA = 0x3697, + CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x329D, CMSG_UPDATE_CLIENT_SETTINGS = 0x3664, CMSG_UPDATE_MISSILE_TRAJECTORY = 0x3A3E, CMSG_UPDATE_RAID_TARGET = 0x3650, - CMSG_UPDATE_SPELL_VISUAL = 0x328F, - CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F4, - CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST = 0x36EF, - CMSG_UPDATE_WOW_TOKEN_COUNT = 0x36E5, - CMSG_UPGRADE_GARRISON = 0x32AD, - CMSG_UPGRADE_ITEM = 0x321D, - CMSG_USED_FOLLOW = 0x3185, - CMSG_USE_CRITTER_ITEM = 0x3235, + CMSG_UPDATE_SPELL_VISUAL = 0x329C, + CMSG_UPDATE_VAS_PURCHASE_STATES = 0x36F5, + CMSG_UPDATE_WOW_TOKEN_AUCTIONABLE_LIST = 0x36F0, + CMSG_UPDATE_WOW_TOKEN_COUNT = 0x36E6, + CMSG_UPGRADE_GARRISON = 0x32BC, + CMSG_UPGRADE_ITEM = 0x3226, + CMSG_USED_FOLLOW = 0x3186, + CMSG_USE_CRITTER_ITEM = 0x323E, CMSG_USE_EQUIPMENT_SET = 0x3995, - CMSG_USE_ITEM = 0x328A, - CMSG_USE_TOY = 0x328C, - CMSG_VIOLENCE_LEVEL = 0x3183, - CMSG_VOID_STORAGE_TRANSFER = 0x319E, + CMSG_USE_ITEM = 0x3297, + CMSG_USE_TOY = 0x3299, + CMSG_VIOLENCE_LEVEL = 0x3184, + CMSG_VOICE_CHAT_JOIN_CHANNEL = 0x3712, + CMSG_VOICE_CHAT_LOGIN = 0x3711, + CMSG_VOID_STORAGE_TRANSFER = 0x31A2, CMSG_WARDEN_DATA = 0x35EC, CMSG_WHO = 0x3681, CMSG_WHO_IS = 0x3680, @@ -764,63 +772,65 @@ enum OpcodeClient : uint16 enum OpcodeServer : uint16 { SMSG_ABORT_NEW_WORLD = 0x25AD, - SMSG_ACCOUNT_CRITERIA_UPDATE = 0x2652, - SMSG_ACCOUNT_DATA_TIMES = 0x2749, + SMSG_ACCOUNT_CRITERIA_UPDATE = 0x2654, + SMSG_ACCOUNT_DATA_TIMES = 0x2752, SMSG_ACCOUNT_MOUNT_UPDATE = 0x25C3, SMSG_ACCOUNT_TOYS_UPDATE = 0x25C4, - SMSG_ACHIEVEMENT_DELETED = 0x271E, - SMSG_ACHIEVEMENT_EARNED = 0x2660, - SMSG_ACTIVATE_TAXI_REPLY = 0x26A6, + SMSG_ACHIEVEMENT_DELETED = 0x2727, + SMSG_ACHIEVEMENT_EARNED = 0x2662, + SMSG_ACTIVATE_TAXI_REPLY = 0x26AB, SMSG_ACTIVE_GLYPHS = 0x2C53, - SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x265A, + SMSG_ADD_BATTLENET_FRIEND_RESPONSE = 0x265C, SMSG_ADD_ITEM_PASSIVE = 0x25BF, - SMSG_ADD_LOSS_OF_CONTROL = 0x2696, - SMSG_ADD_RUNE_POWER = 0x26E2, + SMSG_ADD_LOSS_OF_CONTROL = 0x269B, + SMSG_ADD_RUNE_POWER = 0x26EA, SMSG_ADJUST_SPLINE_DURATION = 0x25E8, - SMSG_AE_LOOT_TARGETS = 0x262C, - SMSG_AE_LOOT_TARGET_ACK = 0x262D, - SMSG_AI_REACTION = 0x26DF, + SMSG_ADVENTURE_MAP_POI_QUERY_RESPONSE = 0x2845, + SMSG_AE_LOOT_TARGETS = 0x262E, + SMSG_AE_LOOT_TARGET_ACK = 0x262F, + SMSG_AI_REACTION = 0x26E7, SMSG_ALL_ACCOUNT_CRITERIA = 0x2570, SMSG_ALL_ACHIEVEMENT_DATA = 0x256F, SMSG_ALL_GUILD_ACHIEVEMENTS = 0x29B8, SMSG_ARCHAEOLOGY_SURVERY_CAST = 0x2586, - SMSG_AREA_POI_UPDATE = 0x2848, - SMSG_AREA_SPIRIT_HEALER_TIME = 0x2782, - SMSG_AREA_TRIGGER_DENIED = 0x269D, - SMSG_AREA_TRIGGER_NO_CORPSE = 0x2755, - SMSG_AREA_TRIGGER_RE_PATH = 0x263F, - SMSG_AREA_TRIGGER_RE_SHAPE = 0x263C, - SMSG_ARENA_CROWD_CONTROL_SPELLS = 0x264E, - SMSG_ARENA_ERROR = 0x2711, - SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2665, - SMSG_ARTIFACT_FORGE_OPENED = 0x27E2, - SMSG_ARTIFACT_KNOWLEDGE = 0x27EA, - SMSG_ARTIFACT_RESPEC_CONFIRM = 0x27E5, - SMSG_ARTIFACT_TRAITS_REFUNDED = 0x27E6, - SMSG_ARTIFACT_XP_GAIN = 0x282D, - SMSG_ATTACKER_STATE_UPDATE = 0x27CF, - SMSG_ATTACK_START = 0x266D, - SMSG_ATTACK_STOP = 0x266E, - SMSG_ATTACK_SWING_ERROR = 0x2733, - SMSG_ATTACK_SWING_LANDED_LOG = 0x2734, - SMSG_AUCTION_CLOSED_NOTIFICATION = 0x2728, - SMSG_AUCTION_COMMAND_RESULT = 0x2725, - SMSG_AUCTION_HELLO_RESPONSE = 0x2723, - SMSG_AUCTION_LIST_BIDDER_ITEMS_RESULT = 0x272C, - SMSG_AUCTION_LIST_ITEMS_RESULT = 0x272A, - SMSG_AUCTION_LIST_OWNER_ITEMS_RESULT = 0x272B, - SMSG_AUCTION_LIST_PENDING_SALES_RESULT = 0x272D, - SMSG_AUCTION_OUTBID_NOTIFICATION = 0x2727, - SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x2729, - SMSG_AUCTION_REPLICATE_RESPONSE = 0x2724, - SMSG_AUCTION_WON_NOTIFICATION = 0x2726, + SMSG_AREA_POI_UPDATE = 0x2852, + SMSG_AREA_SPIRIT_HEALER_TIME = 0x278A, + SMSG_AREA_TRIGGER_DENIED = 0x26A2, + SMSG_AREA_TRIGGER_NO_CORPSE = 0x275E, + SMSG_AREA_TRIGGER_RE_PATH = 0x2641, + SMSG_AREA_TRIGGER_RE_SHAPE = 0x263E, + SMSG_ARENA_CROWD_CONTROL_SPELLS = 0x2650, + SMSG_ARENA_ERROR = 0x271A, + SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2667, + SMSG_ARTIFACT_FORGE_OPENED = 0x27EE, + SMSG_ARTIFACT_RESPEC_CONFIRM = 0x27F1, + SMSG_ARTIFACT_TRAITS_REFUNDED = 0x27F2, + SMSG_ARTIFACT_XP_GAIN = 0x2835, + SMSG_ATTACKER_STATE_UPDATE = 0x27DB, + SMSG_ATTACK_START = 0x266F, + SMSG_ATTACK_STOP = 0x2670, + SMSG_ATTACK_SWING_ERROR = 0x273C, + SMSG_ATTACK_SWING_LANDED_LOG = 0x273D, + SMSG_AUCTION_CLOSED_NOTIFICATION = 0x2731, + SMSG_AUCTION_COMMAND_RESULT = 0x272E, + SMSG_AUCTION_HELLO_RESPONSE = 0x272C, + SMSG_AUCTION_LIST_BIDDER_ITEMS_RESULT = 0x2735, + SMSG_AUCTION_LIST_ITEMS_RESULT = 0x2733, + SMSG_AUCTION_LIST_OWNER_ITEMS_RESULT = 0x2734, + SMSG_AUCTION_LIST_PENDING_SALES_RESULT = 0x2736, + SMSG_AUCTION_OUTBID_NOTIFICATION = 0x2730, + SMSG_AUCTION_OWNER_BID_NOTIFICATION = 0x2732, + SMSG_AUCTION_REPLICATE_RESPONSE = 0x272D, + SMSG_AUCTION_WON_NOTIFICATION = 0x272F, SMSG_AURA_POINTS_DEPLETED = 0x2C23, SMSG_AURA_UPDATE = 0x2C22, SMSG_AUTH_CHALLENGE = 0x3048, SMSG_AUTH_RESPONSE = 0x256C, SMSG_AVAILABLE_HOTFIXES = 0x25A1, - SMSG_BAN_REASON = 0x26B2, - SMSG_BARBER_SHOP_RESULT = 0x26E8, + SMSG_AZERITE_EMPOWERED_ITEM_RESPEC_OPEN = 0x283F, + SMSG_AZERITE_XP_GAIN = 0x2878, + SMSG_BAN_REASON = 0x26B7, + SMSG_BARBER_SHOP_RESULT = 0x26F0, SMSG_BATTLEFIELD_LIST = 0x2594, SMSG_BATTLEFIELD_PORT_DENIED = 0x259A, SMSG_BATTLEFIELD_STATUS_ACTIVE = 0x2590, @@ -830,125 +840,130 @@ enum OpcodeServer : uint16 SMSG_BATTLEFIELD_STATUS_QUEUED = 0x2591, SMSG_BATTLEFIELD_STATUS_WAIT_FOR_GROUPS = 0x25A5, SMSG_BATTLEGROUND_INFO_THROTTLED = 0x259B, - SMSG_BATTLEGROUND_INIT = 0x27A0, + SMSG_BATTLEGROUND_INIT = 0x27A9, SMSG_BATTLEGROUND_PLAYER_JOINED = 0x2598, SMSG_BATTLEGROUND_PLAYER_LEFT = 0x2599, SMSG_BATTLEGROUND_PLAYER_POSITIONS = 0x2595, - SMSG_BATTLEGROUND_POINTS = 0x279F, - SMSG_BATTLENET_CHALLENGE_ABORT = 0x27CE, - SMSG_BATTLENET_CHALLENGE_START = 0x27CD, - SMSG_BATTLENET_NOTIFICATION = 0x2843, - SMSG_BATTLENET_REALM_LIST_TICKET = 0x2845, - SMSG_BATTLENET_RESPONSE = 0x2842, - SMSG_BATTLENET_SET_SESSION_STATE = 0x2844, - SMSG_BATTLE_PAY_ACK_FAILED = 0x27C6, - SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x27BB, - SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x27C5, - SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x27B9, - SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x27B8, - SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x27B7, - SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x27B5, - SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x27B3, - SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x27B4, - SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x27BA, - SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x27C4, - SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x27C2, - SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x27C1, - SMSG_BATTLE_PAY_SUBSCRIPTION_CHANGED = 0x2864, - SMSG_BATTLE_PAY_VAS_BNET_TRANSFER_VALIDATION_RESULT = 0x285B, - SMSG_BATTLE_PAY_VAS_BOOST_CONSUMED = 0x27B6, - SMSG_BATTLE_PAY_VAS_CHARACTER_LIST = 0x2830, - SMSG_BATTLE_PAY_VAS_CHARACTER_QUEUE_STATUS = 0x2859, - SMSG_BATTLE_PAY_VAS_PURCHASE_COMPLETE = 0x2833, - SMSG_BATTLE_PAY_VAS_PURCHASE_LIST = 0x2834, - SMSG_BATTLE_PAY_VAS_PURCHASE_STARTED = 0x2832, - SMSG_BATTLE_PAY_VAS_REALM_LIST = 0x2831, - SMSG_BATTLE_PAY_VAS_TRANSFER_QUEUE_STATUS = 0x2858, - SMSG_BATTLE_PETS_HEALED = 0x2609, - SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x26A0, - SMSG_BATTLE_PET_DELETED = 0x2606, - SMSG_BATTLE_PET_ERROR = 0x2655, - SMSG_BATTLE_PET_JOURNAL = 0x2605, - SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x2603, - SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x2604, - SMSG_BATTLE_PET_LICENSE_CHANGED = 0x260A, - SMSG_BATTLE_PET_MAX_COUNT_CHANGED = 0x2601, - SMSG_BATTLE_PET_RESTORED = 0x2608, - SMSG_BATTLE_PET_REVOKED = 0x2607, - SMSG_BATTLE_PET_TRAP_LEVEL = 0x2600, - SMSG_BATTLE_PET_UPDATES = 0x25FF, - SMSG_BINDER_CONFIRM = 0x2739, + SMSG_BATTLEGROUND_POINTS = 0x27A8, + SMSG_BATTLENET_CHALLENGE_ABORT = 0x27DA, + SMSG_BATTLENET_CHALLENGE_START = 0x27D9, + SMSG_BATTLENET_NOTIFICATION = 0x284D, + SMSG_BATTLENET_REALM_LIST_TICKET = 0x284F, + SMSG_BATTLENET_RESPONSE = 0x284C, + SMSG_BATTLENET_SET_SESSION_STATE = 0x284E, + SMSG_BATTLENET_UPDATE_SESSION_KEY = 0x2872, + SMSG_BATTLE_PAY_ACK_FAILED = 0x27D2, + SMSG_BATTLE_PAY_BATTLE_PET_DELIVERED = 0x27C7, + SMSG_BATTLE_PAY_CONFIRM_PURCHASE = 0x27D1, + SMSG_BATTLE_PAY_DELIVERY_ENDED = 0x27C5, + SMSG_BATTLE_PAY_DELIVERY_STARTED = 0x27C4, + SMSG_BATTLE_PAY_DISTRIBUTION_UPDATE = 0x27C3, + SMSG_BATTLE_PAY_GET_DISTRIBUTION_LIST_RESPONSE = 0x27C1, + SMSG_BATTLE_PAY_GET_PRODUCT_LIST_RESPONSE = 0x27BF, + SMSG_BATTLE_PAY_GET_PURCHASE_LIST_RESPONSE = 0x27C0, + SMSG_BATTLE_PAY_MOUNT_DELIVERED = 0x27C6, + SMSG_BATTLE_PAY_OPEN_CHECKOUT_RESULT = 0x286B, + SMSG_BATTLE_PAY_PURCHASE_UPDATE = 0x27D0, + SMSG_BATTLE_PAY_START_DISTRIBUTION_ASSIGN_TO_TARGET_RESPONSE = 0x27CE, + SMSG_BATTLE_PAY_START_PURCHASE_RESPONSE = 0x27CD, + SMSG_BATTLE_PAY_SUBSCRIPTION_CHANGED = 0x2874, + SMSG_BATTLE_PAY_VAS_BNET_TRANSFER_VALIDATION_RESULT = 0x2869, + SMSG_BATTLE_PAY_VAS_BOOST_CONSUMED = 0x27C2, + SMSG_BATTLE_PAY_VAS_CHARACTER_LIST = 0x2838, + SMSG_BATTLE_PAY_VAS_CHARACTER_QUEUE_STATUS = 0x2864, + SMSG_BATTLE_PAY_VAS_PURCHASE_COMPLETE = 0x283B, + SMSG_BATTLE_PAY_VAS_PURCHASE_LIST = 0x283C, + SMSG_BATTLE_PAY_VAS_PURCHASE_STARTED = 0x283A, + SMSG_BATTLE_PAY_VAS_REALM_LIST = 0x2839, + SMSG_BATTLE_PAY_VAS_TRANSFER_QUEUE_STATUS = 0x2863, + SMSG_BATTLE_PETS_HEALED = 0x260A, + SMSG_BATTLE_PET_CAGE_DATE_ERROR = 0x26A5, + SMSG_BATTLE_PET_DELETED = 0x2607, + SMSG_BATTLE_PET_ERROR = 0x2657, + SMSG_BATTLE_PET_JOURNAL = 0x2606, + SMSG_BATTLE_PET_JOURNAL_LOCK_ACQUIRED = 0x2604, + SMSG_BATTLE_PET_JOURNAL_LOCK_DENIED = 0x2605, + SMSG_BATTLE_PET_LICENSE_CHANGED = 0x260B, + SMSG_BATTLE_PET_MAX_COUNT_CHANGED = 0x2602, + SMSG_BATTLE_PET_RESTORED = 0x2609, + SMSG_BATTLE_PET_REVOKED = 0x2608, + SMSG_BATTLE_PET_TRAP_LEVEL = 0x2601, + SMSG_BATTLE_PET_UPDATES = 0x2600, + SMSG_BINDER_CONFIRM = 0x2742, SMSG_BIND_POINT_UPDATE = 0x257C, - SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2644, - SMSG_BLACK_MARKET_OPEN_RESULT = 0x2642, - SMSG_BLACK_MARKET_OUTBID = 0x2645, - SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2643, - SMSG_BLACK_MARKET_WON = 0x2646, - SMSG_BONUS_ROLL_EMPTY = 0x2662, - SMSG_BOSS_KILL_CREDIT = 0x27C0, - SMSG_BREAK_TARGET = 0x266C, - SMSG_BUY_FAILED = 0x26F1, - SMSG_BUY_SUCCEEDED = 0x26F0, - SMSG_CACHE_INFO = 0x2743, - SMSG_CACHE_VERSION = 0x2742, - SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x26C6, - SMSG_CALENDAR_COMMAND_RESULT = 0x26C7, - SMSG_CALENDAR_EVENT_INITIAL_INVITES = 0x26B6, - SMSG_CALENDAR_EVENT_INVITE = 0x26B7, - SMSG_CALENDAR_EVENT_INVITE_ALERT = 0x26B8, - SMSG_CALENDAR_EVENT_INVITE_MODERATOR_STATUS = 0x26BB, - SMSG_CALENDAR_EVENT_INVITE_NOTES = 0x26C0, - SMSG_CALENDAR_EVENT_INVITE_NOTES_ALERT = 0x26C1, - SMSG_CALENDAR_EVENT_INVITE_REMOVED = 0x26BC, - SMSG_CALENDAR_EVENT_INVITE_REMOVED_ALERT = 0x26BD, - SMSG_CALENDAR_EVENT_INVITE_STATUS = 0x26B9, - SMSG_CALENDAR_EVENT_INVITE_STATUS_ALERT = 0x26BA, - SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x26BE, - SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x26BF, - SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x26C2, - SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x26C3, - SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x26C4, - SMSG_CALENDAR_SEND_CALENDAR = 0x26B4, - SMSG_CALENDAR_SEND_EVENT = 0x26B5, - SMSG_CALENDAR_SEND_NUM_PENDING = 0x26C5, - SMSG_CAMERA_EFFECT = 0x2767, - SMSG_CANCEL_AUTO_REPEAT = 0x2712, - SMSG_CANCEL_COMBAT = 0x2731, + SMSG_BLACK_MARKET_BID_ON_ITEM_RESULT = 0x2646, + SMSG_BLACK_MARKET_OPEN_RESULT = 0x2644, + SMSG_BLACK_MARKET_OUTBID = 0x2647, + SMSG_BLACK_MARKET_REQUEST_ITEMS_RESULT = 0x2645, + SMSG_BLACK_MARKET_WON = 0x2648, + SMSG_BONUS_ROLL_EMPTY = 0x2664, + SMSG_BONUS_ROLL_FAILED = 0x287B, + SMSG_BOSS_KILL_CREDIT = 0x27CC, + SMSG_BREAK_TARGET = 0x266E, + SMSG_BROADCAST_ACHIEVEMENT = 0x2BBC, + SMSG_BUY_FAILED = 0x26F9, + SMSG_BUY_SUCCEEDED = 0x26F8, + SMSG_CACHE_INFO = 0x274C, + SMSG_CACHE_VERSION = 0x274B, + SMSG_CALENDAR_CLEAR_PENDING_ACTION = 0x26CB, + SMSG_CALENDAR_COMMAND_RESULT = 0x26CC, + SMSG_CALENDAR_EVENT_INITIAL_INVITES = 0x26BB, + SMSG_CALENDAR_EVENT_INVITE = 0x26BC, + SMSG_CALENDAR_EVENT_INVITE_ALERT = 0x26C0, + SMSG_CALENDAR_EVENT_INVITE_MODERATOR_STATUS = 0x26BF, + SMSG_CALENDAR_EVENT_INVITE_NOTES = 0x26C5, + SMSG_CALENDAR_EVENT_INVITE_NOTES_ALERT = 0x26C6, + SMSG_CALENDAR_EVENT_INVITE_REMOVED = 0x26BD, + SMSG_CALENDAR_EVENT_INVITE_REMOVED_ALERT = 0x26C2, + SMSG_CALENDAR_EVENT_INVITE_STATUS = 0x26BE, + SMSG_CALENDAR_EVENT_INVITE_STATUS_ALERT = 0x26C1, + SMSG_CALENDAR_EVENT_REMOVED_ALERT = 0x26C3, + SMSG_CALENDAR_EVENT_UPDATED_ALERT = 0x26C4, + SMSG_CALENDAR_RAID_LOCKOUT_ADDED = 0x26C7, + SMSG_CALENDAR_RAID_LOCKOUT_REMOVED = 0x26C8, + SMSG_CALENDAR_RAID_LOCKOUT_UPDATED = 0x26C9, + SMSG_CALENDAR_SEND_CALENDAR = 0x26B9, + SMSG_CALENDAR_SEND_EVENT = 0x26BA, + SMSG_CALENDAR_SEND_NUM_PENDING = 0x26CA, + SMSG_CAMERA_EFFECT = 0x276F, + SMSG_CANCEL_AUTO_REPEAT = 0x271B, + SMSG_CANCEL_COMBAT = 0x273A, SMSG_CANCEL_ORPHAN_SPELL_VISUAL = 0x2C46, - SMSG_CANCEL_SCENE = 0x2654, + SMSG_CANCEL_SCENE = 0x2656, SMSG_CANCEL_SPELL_VISUAL = 0x2C44, SMSG_CANCEL_SPELL_VISUAL_KIT = 0x2C48, - SMSG_CAN_DUEL_RESULT = 0x2676, + SMSG_CAN_DUEL_RESULT = 0x2679, SMSG_CAST_FAILED = 0x2C56, SMSG_CATEGORY_COOLDOWN = 0x2C16, - SMSG_CHALLENGE_MODE_ALL_MAP_STATS = 0x2622, - SMSG_CHALLENGE_MODE_COMPLETE = 0x2620, - SMSG_CHALLENGE_MODE_MAP_STATS_UPDATE = 0x2623, - SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD = 0x2625, - SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x2624, - SMSG_CHALLENGE_MODE_RESET = 0x261F, - SMSG_CHALLENGE_MODE_REWARDS = 0x2621, - SMSG_CHALLENGE_MODE_START = 0x261D, - SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x261E, - SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x2735, + SMSG_CHALLENGE_MODE_AFFIXES = 0x2624, + SMSG_CHALLENGE_MODE_ALL_MAP_STATS = 0x2623, + SMSG_CHALLENGE_MODE_COMPLETE = 0x2621, + SMSG_CHALLENGE_MODE_NEW_PLAYER_RECORD = 0x2626, + SMSG_CHALLENGE_MODE_NEW_PLAYER_SEASON_RECORD = 0x2627, + SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT = 0x2625, + SMSG_CHALLENGE_MODE_RESET = 0x2620, + SMSG_CHALLENGE_MODE_REWARDS = 0x2622, + SMSG_CHALLENGE_MODE_START = 0x261E, + SMSG_CHALLENGE_MODE_UPDATE_DEATH_COUNT = 0x261F, + SMSG_CHANGE_PLAYER_DIFFICULTY_RESULT = 0x273E, SMSG_CHANNEL_LIST = 0x2BC3, SMSG_CHANNEL_NOTIFY = 0x2BC0, SMSG_CHANNEL_NOTIFY_JOINED = 0x2BC1, SMSG_CHANNEL_NOTIFY_LEFT = 0x2BC2, - SMSG_CHARACTER_CLASS_TRIAL_CREATE = 0x2804, - SMSG_CHARACTER_INVENTORY_OVERFLOW_WARNING = 0x2863, - SMSG_CHARACTER_ITEM_FIXUP = 0x2854, - SMSG_CHARACTER_LOGIN_FAILED = 0x2744, - SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x27CC, - SMSG_CHARACTER_RENAME_RESULT = 0x27A5, - SMSG_CHARACTER_UPGRADE_COMPLETE = 0x2803, - SMSG_CHARACTER_UPGRADE_QUEUED = 0x2802, - SMSG_CHARACTER_UPGRADE_SPELL_TIER_SET = 0x25F4, - SMSG_CHARACTER_UPGRADE_STARTED = 0x2801, - SMSG_CHARACTER_UPGRADE_UNREVOKE_RESULT = 0x2805, - SMSG_CHAR_CUSTOMIZE = 0x2719, - SMSG_CHAR_CUSTOMIZE_FAILED = 0x2718, - SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27EE, + SMSG_CHARACTER_CLASS_TRIAL_CREATE = 0x280C, + SMSG_CHARACTER_INVENTORY_OVERFLOW_WARNING = 0x2873, + SMSG_CHARACTER_ITEM_FIXUP = 0x285F, + SMSG_CHARACTER_LOGIN_FAILED = 0x274D, + SMSG_CHARACTER_OBJECT_TEST_RESPONSE = 0x27D8, + SMSG_CHARACTER_RENAME_RESULT = 0x27B1, + SMSG_CHARACTER_UPGRADE_COMPLETE = 0x280B, + SMSG_CHARACTER_UPGRADE_QUEUED = 0x280A, + SMSG_CHARACTER_UPGRADE_SPELL_TIER_SET = 0x25F5, + SMSG_CHARACTER_UPGRADE_STARTED = 0x2809, + SMSG_CHARACTER_UPGRADE_UNREVOKE_RESULT = 0x280D, + SMSG_CHAR_CUSTOMIZE = 0x2722, + SMSG_CHAR_CUSTOMIZE_FAILED = 0x2721, + SMSG_CHAR_FACTION_CHANGE_RESULT = 0x27F6, SMSG_CHAT = 0x2BAD, SMSG_CHAT_AUTO_RESPONDED = 0x2BB8, SMSG_CHAT_DOWN = 0x2BBD, @@ -964,97 +979,101 @@ enum OpcodeServer : uint16 SMSG_CHECK_WARGAME_ENTRY = 0x259E, SMSG_CLEAR_ALL_SPELL_CHARGES = 0x2C27, SMSG_CLEAR_BOSS_EMOTES = 0x25CD, - SMSG_CLEAR_COOLDOWN = 0x26E4, + SMSG_CLEAR_COOLDOWN = 0x26EC, SMSG_CLEAR_COOLDOWNS = 0x2C26, - SMSG_CLEAR_LOSS_OF_CONTROL = 0x2698, + SMSG_CLEAR_LOSS_OF_CONTROL = 0x269D, SMSG_CLEAR_SPELL_CHARGES = 0x2C28, - SMSG_CLEAR_TARGET = 0x26DB, - SMSG_COIN_REMOVED = 0x262B, - SMSG_COMBAT_EVENT_FAILED = 0x266F, - SMSG_COMMENTATOR_MAP_INFO = 0x2746, - SMSG_COMMENTATOR_PLAYER_INFO = 0x2747, - SMSG_COMMENTATOR_STATE_CHANGED = 0x2745, - SMSG_COMPLAINT_RESULT = 0x26D3, - SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x27DE, + SMSG_CLEAR_TARGET = 0x26E3, + SMSG_COIN_REMOVED = 0x262D, + SMSG_COMBAT_EVENT_FAILED = 0x2671, + SMSG_COMMENTATOR_MAP_INFO = 0x274F, + SMSG_COMMENTATOR_PLAYER_INFO = 0x2750, + SMSG_COMMENTATOR_STATE_CHANGED = 0x274E, + SMSG_COMPLAINT_RESULT = 0x26DA, + SMSG_COMPLETE_SHIPMENT_RESPONSE = 0x27EA, SMSG_CONNECT_TO = 0x304D, - SMSG_CONQUEST_FORMULA_CONSTANTS = 0x27C7, - SMSG_CONSOLE_WRITE = 0x2651, - SMSG_CONSUMPTION_CONVERSION_INFO_RESPONSE = 0x2849, - SMSG_CONSUMPTION_CONVERSION_RESULT = 0x284A, - SMSG_CONTACT_LIST = 0x27CA, - SMSG_CONTROL_UPDATE = 0x2664, - SMSG_COOLDOWN_CHEAT = 0x277B, - SMSG_COOLDOWN_EVENT = 0x26E3, - SMSG_CORPSE_LOCATION = 0x266B, - SMSG_CORPSE_RECLAIM_DELAY = 0x278E, - SMSG_CORPSE_TRANSPORT_QUERY = 0x2751, - SMSG_CREATE_CHAR = 0x273E, - SMSG_CREATE_SHIPMENT_RESPONSE = 0x27DD, - SMSG_CRITERIA_DELETED = 0x271D, - SMSG_CRITERIA_UPDATE = 0x2717, - SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26EC, + SMSG_CONQUEST_FORMULA_CONSTANTS = 0x27D3, + SMSG_CONSOLE_WRITE = 0x2653, + SMSG_CONSUMPTION_CONVERSION_INFO_RESPONSE = 0x2853, + SMSG_CONSUMPTION_CONVERSION_RESULT = 0x2854, + SMSG_CONTACT_LIST = 0x27D6, + SMSG_CONTRIBUTION_COLLECTOR_STATE = 0x286A, + SMSG_CONTROL_UPDATE = 0x2666, + SMSG_COOLDOWN_CHEAT = 0x2783, + SMSG_COOLDOWN_EVENT = 0x26EB, + SMSG_CORPSE_LOCATION = 0x266D, + SMSG_CORPSE_RECLAIM_DELAY = 0x2796, + SMSG_CORPSE_TRANSPORT_QUERY = 0x275A, + SMSG_CREATE_CHAR = 0x2747, + SMSG_CREATE_SHIPMENT_RESPONSE = 0x27E9, + SMSG_CRITERIA_DELETED = 0x2726, + SMSG_CRITERIA_UPDATE = 0x2720, + SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x26F4, SMSG_CUSTOM_LOAD_SCREEN = 0x25E3, SMSG_DAILY_QUESTS_RESET = 0x2A80, - SMSG_DAMAGE_CALC_LOG = 0x280C, + SMSG_DAMAGE_CALC_LOG = 0x2814, SMSG_DB_REPLY = 0x25A0, - SMSG_DEATH_RELEASE_LOC = 0x2705, + SMSG_DEATH_RELEASE_LOC = 0x270E, SMSG_DEFENSE_MESSAGE = 0x2BB6, - SMSG_DELETE_CHAR = 0x273F, - SMSG_DESTROY_ARENA_UNIT = 0x2784, - SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x2732, + SMSG_DELETE_CHAR = 0x2748, + SMSG_DESTROY_ARENA_UNIT = 0x278C, + SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x273B, SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x258A, SMSG_DISENCHANT_CREDIT = 0x25BC, - SMSG_DISMOUNT = 0x26DA, + SMSG_DISMOUNT = 0x26E2, SMSG_DISMOUNT_RESULT = 0x257B, SMSG_DISPEL_FAILED = 0x2C30, SMSG_DISPLAY_GAME_ERROR = 0x25B5, - SMSG_DISPLAY_PLAYER_CHOICE = 0x26A1, - SMSG_DISPLAY_PROMOTION = 0x2668, + SMSG_DISPLAY_PLAYER_CHOICE = 0x26A6, + SMSG_DISPLAY_PROMOTION = 0x266A, SMSG_DISPLAY_QUEST_POPUP = 0x2A9D, - SMSG_DISPLAY_TOAST = 0x2638, - SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25F6, + SMSG_DISPLAY_TOAST = 0x263A, + SMSG_DONT_AUTO_PUSH_SPELLS_TO_ACTION_BAR = 0x25F7, SMSG_DROP_NEW_CONNECTION = 0x304C, - SMSG_DUEL_COMPLETE = 0x2674, - SMSG_DUEL_COUNTDOWN = 0x2673, - SMSG_DUEL_IN_BOUNDS = 0x2672, - SMSG_DUEL_OUT_OF_BOUNDS = 0x2671, - SMSG_DUEL_REQUESTED = 0x2670, - SMSG_DUEL_WINNER = 0x2675, - SMSG_DURABILITY_DAMAGE_DEATH = 0x278A, - SMSG_EMOTE = 0x280D, - SMSG_ENABLE_BARBER_SHOP = 0x26E7, + SMSG_DUEL_COMPLETE = 0x2677, + SMSG_DUEL_COUNTDOWN = 0x2676, + SMSG_DUEL_IN_BOUNDS = 0x2675, + SMSG_DUEL_OPPONENT_SELECTED = 0x2673, + SMSG_DUEL_OUT_OF_BOUNDS = 0x2674, + SMSG_DUEL_REQUESTED = 0x2672, + SMSG_DUEL_WINNER = 0x2678, + SMSG_DURABILITY_DAMAGE_DEATH = 0x2792, + SMSG_EMOTE = 0x2815, + SMSG_ENABLE_BARBER_SHOP = 0x26EF, SMSG_ENABLE_ENCRYPTION = 0x3049, - SMSG_ENCHANTMENT_LOG = 0x2752, - SMSG_ENCOUNTER_END = 0x27BF, - SMSG_ENCOUNTER_START = 0x27BE, + SMSG_ENCHANTMENT_LOG = 0x275B, + SMSG_ENCOUNTER_END = 0x27CB, + SMSG_ENCOUNTER_START = 0x27CA, SMSG_ENUM_CHARACTERS_RESULT = 0x2582, SMSG_ENVIRONMENTAL_DAMAGE_LOG = 0x2C21, - SMSG_EQUIPMENT_SET_ID = 0x26DC, + SMSG_EQUIPMENT_SET_ID = 0x26E4, SMSG_EXPECTED_SPAM_RECORDS = 0x2BB1, - SMSG_EXPLORATION_EXPERIENCE = 0x27A2, - SMSG_FACTION_BONUS_INFO = 0x2766, + SMSG_EXPLORATION_EXPERIENCE = 0x27AE, + SMSG_FACTION_BONUS_INFO = 0x276E, SMSG_FAILED_PLAYER_CONDITION = 0x25E2, SMSG_FEATURE_SYSTEM_STATUS = 0x25D1, SMSG_FEATURE_SYSTEM_STATUS_GLUE_SCREEN = 0x25D2, - SMSG_FEIGN_DEATH_RESISTED = 0x2787, - SMSG_FISH_ESCAPED = 0x26F9, - SMSG_FISH_NOT_HOOKED = 0x26F8, + SMSG_FEIGN_DEATH_RESISTED = 0x278F, + SMSG_FISH_ESCAPED = 0x2701, + SMSG_FISH_NOT_HOOKED = 0x2700, SMSG_FLIGHT_SPLINE_SYNC = 0x2DF7, - SMSG_FORCED_DEATH_UPDATE = 0x2706, - SMSG_FORCE_ANIM = 0x2794, - SMSG_FORCE_OBJECT_RELINK = 0x2667, - SMSG_FRIEND_STATUS = 0x27CB, + SMSG_FORCED_DEATH_UPDATE = 0x270F, + SMSG_FORCE_ANIM = 0x279D, + SMSG_FORCE_OBJECT_RELINK = 0x2669, + SMSG_FRIEND_STATUS = 0x27D7, + SMSG_GAME_EVENT_DEBUG_INITIALIZE = 0x267F, SMSG_GAME_OBJECT_ACTIVATE_ANIM_KIT = 0x25D6, SMSG_GAME_OBJECT_CUSTOM_ANIM = 0x25D7, SMSG_GAME_OBJECT_DESPAWN = 0x25D8, + SMSG_GAME_OBJECT_MULTI_TRANSITION = 0x2879, SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL = 0x2C4B, SMSG_GAME_OBJECT_PLAY_SPELL_VISUAL_KIT = 0x2C4A, - SMSG_GAME_OBJECT_RESET_STATE = 0x275D, - SMSG_GAME_OBJECT_SET_STATE = 0x2841, - SMSG_GAME_OBJECT_UI_ACTION = 0x275A, - SMSG_GAME_SPEED_SET = 0x26AA, - SMSG_GAME_TIME_SET = 0x274B, - SMSG_GAME_TIME_UPDATE = 0x274A, + SMSG_GAME_OBJECT_RESET_STATE = 0x2765, + SMSG_GAME_OBJECT_SET_STATE = 0x284B, + SMSG_GAME_OBJECT_UI_ACTION = 0x2762, + SMSG_GAME_SPEED_SET = 0x26AF, + SMSG_GAME_TIME_SET = 0x2754, + SMSG_GAME_TIME_UPDATE = 0x2753, SMSG_GARRISON_ADD_FOLLOWER_RESULT = 0x2902, SMSG_GARRISON_ADD_MISSION_RESULT = 0x2906, SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT = 0x2918, @@ -1063,16 +1082,17 @@ enum OpcodeServer : uint16 SMSG_GARRISON_BUILDING_REMOVED = 0x28F4, SMSG_GARRISON_BUILDING_SET_ACTIVE_SPECIALIZATION_RESULT = 0x28F6, SMSG_GARRISON_CLEAR_ALL_FOLLOWERS_EXHAUSTION = 0x2916, - SMSG_GARRISON_COMPLETE_MISSION_RESULT = 0x2909, + SMSG_GARRISON_COMPLETE_MISSION_RESULT = 0x2908, SMSG_GARRISON_CREATE_RESULT = 0x28FC, SMSG_GARRISON_DELETE_RESULT = 0x2920, + SMSG_GARRISON_FOLLOWER_CATEGORIES = 0x2901, SMSG_GARRISON_FOLLOWER_CHANGED_ABILITIES = 0x2914, SMSG_GARRISON_FOLLOWER_CHANGED_DURABILITY = 0x2904, SMSG_GARRISON_FOLLOWER_CHANGED_ITEM_LEVEL = 0x2913, SMSG_GARRISON_FOLLOWER_CHANGED_STATUS = 0x2915, SMSG_GARRISON_FOLLOWER_CHANGED_XP = 0x2912, SMSG_GARRISON_IS_UPGRADEABLE_RESULT = 0x2929, - SMSG_GARRISON_LANDING_PAGE_SHIPMENT_INFO = 0x27E0, + SMSG_GARRISON_LANDING_PAGE_SHIPMENT_INFO = 0x27EC, SMSG_GARRISON_LEARN_BLUEPRINT_RESULT = 0x28F7, SMSG_GARRISON_LEARN_SPECIALIZATION_RESULT = 0x28F5, SMSG_GARRISON_LIST_FOLLOWERS_CHEAT_RESULT = 0x2905, @@ -1102,26 +1122,26 @@ enum OpcodeServer : uint16 SMSG_GARRISON_UNLEARN_BLUEPRINT_RESULT = 0x28F8, SMSG_GARRISON_UPGRADE_RESULT = 0x28FD, SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x2583, - SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27A3, + SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27AF, SMSG_GET_DISPLAYED_TROPHY_LIST_RESPONSE = 0x2928, SMSG_GET_GARRISON_INFO_RESULT = 0x28F0, - SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x27DF, - SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x27DB, - SMSG_GET_TROPHY_LIST_RESPONSE = 0x2808, - SMSG_GM_PLAYER_INFO = 0x277A, - SMSG_GM_REQUEST_PLAYER_INFO = 0x25ED, - SMSG_GM_TICKET_CASE_STATUS = 0x26CC, - SMSG_GM_TICKET_SYSTEM_STATUS = 0x26CB, - SMSG_GOD_MODE = 0x2738, + SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x27EB, + SMSG_GET_SHIPMENT_INFO_RESPONSE = 0x27E7, + SMSG_GET_TROPHY_LIST_RESPONSE = 0x2810, + SMSG_GM_PLAYER_INFO = 0x2782, + SMSG_GM_REQUEST_PLAYER_INFO = 0x25EE, + SMSG_GM_TICKET_CASE_STATUS = 0x26D1, + SMSG_GM_TICKET_SYSTEM_STATUS = 0x26D0, + SMSG_GOD_MODE = 0x2741, SMSG_GOSSIP_COMPLETE = 0x2A96, SMSG_GOSSIP_MESSAGE = 0x2A97, - SMSG_GOSSIP_POI = 0x27D8, + SMSG_GOSSIP_POI = 0x27E4, SMSG_GROUP_ACTION_THROTTLED = 0x259C, - SMSG_GROUP_DECLINE = 0x27D3, - SMSG_GROUP_DESTROYED = 0x27D5, - SMSG_GROUP_INVITE_CONFIRMATION = 0x2855, - SMSG_GROUP_NEW_LEADER = 0x2649, - SMSG_GROUP_UNINVITE = 0x27D4, + SMSG_GROUP_DECLINE = 0x27DF, + SMSG_GROUP_DESTROYED = 0x27E1, + SMSG_GROUP_INVITE_CONFIRMATION = 0x2860, + SMSG_GROUP_NEW_LEADER = 0x264B, + SMSG_GROUP_UNINVITE = 0x27E0, SMSG_GUILD_ACHIEVEMENT_DELETED = 0x29C5, SMSG_GUILD_ACHIEVEMENT_EARNED = 0x29C4, SMSG_GUILD_ACHIEVEMENT_MEMBERS = 0x29C7, @@ -1174,53 +1194,56 @@ enum OpcodeServer : uint16 SMSG_GUILD_ROSTER = 0x29BB, SMSG_GUILD_ROSTER_UPDATE = 0x29BC, SMSG_GUILD_SEND_RANK_CHANGE = 0x29B9, - SMSG_HEALTH_UPDATE = 0x26FC, - SMSG_HIGHEST_THREAT_UPDATE = 0x270C, + SMSG_HEALTH_UPDATE = 0x2704, + SMSG_HIGHEST_THREAT_UPDATE = 0x2715, SMSG_HOTFIX_MESSAGE = 0x25A2, SMSG_HOTFIX_RESPONSE = 0x25A3, - SMSG_INITIALIZE_FACTIONS = 0x2765, + SMSG_INITIALIZE_FACTIONS = 0x276D, SMSG_INITIAL_SETUP = 0x257F, - SMSG_INIT_WORLD_STATES = 0x278B, + SMSG_INIT_WORLD_STATES = 0x2793, SMSG_INSPECT_HONOR_STATS = 0x25B2, - SMSG_INSPECT_PVP = 0x2761, - SMSG_INSPECT_RESULT = 0x264D, - SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27F4, - SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27F3, - SMSG_INSTANCE_ENCOUNTER_END = 0x27FC, - SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27F2, - SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x27FE, - SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x27FD, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27F7, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27F6, - SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x27FB, - SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x27FF, - SMSG_INSTANCE_ENCOUNTER_SET_ALLOWING_RELEASE = 0x27FA, - SMSG_INSTANCE_ENCOUNTER_SET_SUPPRESSING_RELEASE = 0x27F9, - SMSG_INSTANCE_ENCOUNTER_START = 0x27F8, - SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27F5, - SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x2736, - SMSG_INSTANCE_INFO = 0x2650, - SMSG_INSTANCE_RESET = 0x26AF, - SMSG_INSTANCE_RESET_FAILED = 0x26B0, - SMSG_INSTANCE_SAVE_CREATED = 0x27BD, - SMSG_INVALIDATE_PAGE_TEXT = 0x2701, - SMSG_INVALIDATE_PLAYER = 0x26D2, - SMSG_INVALID_PROMOTION_CODE = 0x2795, - SMSG_INVENTORY_CHANGE_FAILURE = 0x2763, + SMSG_INSPECT_PVP = 0x2769, + SMSG_INSPECT_RESULT = 0x264F, + SMSG_INSTANCE_ENCOUNTER_CHANGE_PRIORITY = 0x27FC, + SMSG_INSTANCE_ENCOUNTER_DISENGAGE_UNIT = 0x27FB, + SMSG_INSTANCE_ENCOUNTER_END = 0x2804, + SMSG_INSTANCE_ENCOUNTER_ENGAGE_UNIT = 0x27FA, + SMSG_INSTANCE_ENCOUNTER_GAIN_COMBAT_RESURRECTION_CHARGE = 0x2806, + SMSG_INSTANCE_ENCOUNTER_IN_COMBAT_RESURRECTION = 0x2805, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_COMPLETE = 0x27FF, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_START = 0x27FE, + SMSG_INSTANCE_ENCOUNTER_OBJECTIVE_UPDATE = 0x2803, + SMSG_INSTANCE_ENCOUNTER_PHASE_SHIFT_CHANGED = 0x2807, + SMSG_INSTANCE_ENCOUNTER_SET_ALLOWING_RELEASE = 0x2802, + SMSG_INSTANCE_ENCOUNTER_SET_SUPPRESSING_RELEASE = 0x2801, + SMSG_INSTANCE_ENCOUNTER_START = 0x2800, + SMSG_INSTANCE_ENCOUNTER_TIMER_START = 0x27FD, + SMSG_INSTANCE_GROUP_SIZE_CHANGED = 0x273F, + SMSG_INSTANCE_INFO = 0x2652, + SMSG_INSTANCE_RESET = 0x26B4, + SMSG_INSTANCE_RESET_FAILED = 0x26B5, + SMSG_INSTANCE_SAVE_CREATED = 0x27C9, + SMSG_INVALIDATE_PAGE_TEXT = 0x270A, + SMSG_INVALIDATE_PLAYER = 0x26D9, + SMSG_INVALID_PROMOTION_CODE = 0x279E, + SMSG_INVENTORY_CHANGE_FAILURE = 0x276B, + SMSG_ISLAND_AZERITE_XP_GAIN = 0x27AB, + SMSG_ISLAND_COMPLETED = 0x27AC, + SMSG_ISLAND_OPEN_QUEUE_NPC = 0x2840, SMSG_IS_QUEST_COMPLETE_RESPONSE = 0x2A83, - SMSG_ITEM_CHANGED = 0x2720, - SMSG_ITEM_COOLDOWN = 0x280B, - SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x2797, + SMSG_ITEM_CHANGED = 0x2729, + SMSG_ITEM_COOLDOWN = 0x2813, + SMSG_ITEM_ENCHANT_TIME_UPDATE = 0x27A0, SMSG_ITEM_EXPIRE_PURCHASE_REFUND = 0x25B1, SMSG_ITEM_PURCHASE_REFUND_RESULT = 0x25AF, - SMSG_ITEM_PUSH_RESULT = 0x2637, - SMSG_ITEM_TIME_UPDATE = 0x2796, - SMSG_KICK_REASON = 0x282F, + SMSG_ITEM_PUSH_RESULT = 0x2639, + SMSG_ITEM_TIME_UPDATE = 0x279F, + SMSG_KICK_REASON = 0x2837, SMSG_LEARNED_SPELLS = 0x2C4D, SMSG_LEARN_PVP_TALENTS_FAILED = 0x25EA, SMSG_LEARN_TALENTS_FAILED = 0x25E9, SMSG_LEVEL_UPDATE = 0x2587, - SMSG_LEVEL_UP_INFO = 0x271F, + SMSG_LEVEL_UP_INFO = 0x2728, SMSG_LFG_BOOT_PLAYER = 0x2A35, SMSG_LFG_DISABLED = 0x2A33, SMSG_LFG_INSTANCE_SHUTDOWN_COUNTDOWN = 0x2A25, @@ -1249,44 +1272,47 @@ enum OpcodeServer : uint16 SMSG_LF_GUILD_COMMAND_RESULT = 0x29D0, SMSG_LF_GUILD_POST = 0x29CD, SMSG_LF_GUILD_RECRUITS = 0x29CF, - SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x27B1, - SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x27AF, - SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27A4, + SMSG_LIGHTNING_STORM_END = 0x26D6, + SMSG_LIGHTNING_STORM_START = 0x26D5, + SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x27BD, + SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x27BB, + SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x27B0, SMSG_LOAD_CUF_PROFILES = 0x25CE, - SMSG_LOAD_EQUIPMENT_SET = 0x274D, - SMSG_LOAD_SELECTED_TROPHY_RESULT = 0x2809, - SMSG_LOGIN_SET_TIME_SPEED = 0x274C, + SMSG_LOAD_EQUIPMENT_SET = 0x2756, + SMSG_LOAD_SELECTED_TROPHY_RESULT = 0x2811, + SMSG_LOGIN_SET_TIME_SPEED = 0x2755, SMSG_LOGIN_VERIFY_WORLD = 0x25AC, - SMSG_LOGOUT_CANCEL_ACK = 0x26AE, - SMSG_LOGOUT_COMPLETE = 0x26AD, - SMSG_LOGOUT_RESPONSE = 0x26AC, - SMSG_LOG_XP_GAIN = 0x271B, - SMSG_LOOT_ALL_PASSED = 0x2635, - SMSG_LOOT_LIST = 0x2783, - SMSG_LOOT_MONEY_NOTIFY = 0x2630, - SMSG_LOOT_RELEASE = 0x262F, - SMSG_LOOT_RELEASE_ALL = 0x262E, - SMSG_LOOT_REMOVED = 0x2629, - SMSG_LOOT_RESPONSE = 0x2628, - SMSG_LOOT_ROLL = 0x2632, - SMSG_LOOT_ROLLS_COMPLETE = 0x2634, - SMSG_LOOT_ROLL_WON = 0x2636, - SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x2695, - SMSG_MAIL_COMMAND_RESULT = 0x2658, - SMSG_MAIL_LIST_RESULT = 0x2798, - SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x2799, - SMSG_MAP_OBJECTIVES_INIT = 0x27A1, + SMSG_LOGOUT_CANCEL_ACK = 0x26B3, + SMSG_LOGOUT_COMPLETE = 0x26B2, + SMSG_LOGOUT_RESPONSE = 0x26B1, + SMSG_LOG_XP_GAIN = 0x2724, + SMSG_LOOT_ALL_PASSED = 0x2637, + SMSG_LOOT_LEGACY_RULES_IN_EFFECT = 0x287A, + SMSG_LOOT_LIST = 0x278B, + SMSG_LOOT_MONEY_NOTIFY = 0x2632, + SMSG_LOOT_RELEASE = 0x2631, + SMSG_LOOT_RELEASE_ALL = 0x2630, + SMSG_LOOT_REMOVED = 0x262B, + SMSG_LOOT_RESPONSE = 0x262A, + SMSG_LOOT_ROLL = 0x2634, + SMSG_LOOT_ROLLS_COMPLETE = 0x2636, + SMSG_LOOT_ROLL_WON = 0x2638, + SMSG_LOSS_OF_CONTROL_AURA_UPDATE = 0x269A, + SMSG_MAIL_COMMAND_RESULT = 0x265A, + SMSG_MAIL_LIST_RESULT = 0x27A1, + SMSG_MAIL_QUERY_NEXT_TIME_RESULT = 0x27A2, + SMSG_MAP_OBJECTIVES_INIT = 0x27AA, SMSG_MAP_OBJ_EVENTS = 0x25D9, - SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x2633, + SMSG_MASTER_LOOT_CANDIDATE_LIST = 0x2635, SMSG_MESSAGE_BOX = 0x2575, - SMSG_MINIMAP_PING = 0x26F7, + SMSG_MINIMAP_PING = 0x26FF, SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x2C14, SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x2C13, SMSG_MISSILE_CANCEL = 0x25DA, - SMSG_MODIFY_CHARGE_RECOVERY_SPEED = 0x27A8, - SMSG_MODIFY_COOLDOWN = 0x27A6, - SMSG_MODIFY_COOLDOWN_RECOVERY_SPEED = 0x27A7, - SMSG_MODIFY_PARTY_RANGE = 0x2786, + SMSG_MODIFY_CHARGE_RECOVERY_SPEED = 0x27B4, + SMSG_MODIFY_COOLDOWN = 0x27B2, + SMSG_MODIFY_COOLDOWN_RECOVERY_SPEED = 0x27B3, + SMSG_MODIFY_PARTY_RANGE = 0x278E, SMSG_MOTD = 0x2BAF, SMSG_MOUNT_RESULT = 0x257A, SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x2DE1, @@ -1312,6 +1338,7 @@ enum OpcodeServer : uint16 SMSG_MOVE_SET_HOVERING = 0x2DCF, SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES = 0x2DD7, SMSG_MOVE_SET_LAND_WALK = 0x2DCC, + SMSG_MOVE_SET_MOVEMENT_FORCE_SPEED = 0x2DB4, SMSG_MOVE_SET_NORMAL_FALL = 0x2DCE, SMSG_MOVE_SET_PITCH_RATE = 0x2DC6, SMSG_MOVE_SET_RUN_BACK_SPEED = 0x2DBF, @@ -1362,6 +1389,7 @@ enum OpcodeServer : uint16 SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED = 0x2DAA, SMSG_MOVE_UPDATE_FLIGHT_SPEED = 0x2DA9, SMSG_MOVE_UPDATE_KNOCK_BACK = 0x2DB0, + SMSG_MOVE_UPDATE_MOVEMENT_FORCE_SPEED = 0x2DB1, SMSG_MOVE_UPDATE_PITCH_RATE = 0x2DAC, SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE = 0x2DB3, SMSG_MOVE_UPDATE_RUN_BACK_SPEED = 0x2DA5, @@ -1371,111 +1399,111 @@ enum OpcodeServer : uint16 SMSG_MOVE_UPDATE_TELEPORT = 0x2DAF, SMSG_MOVE_UPDATE_TURN_RATE = 0x2DAB, SMSG_MOVE_UPDATE_WALK_SPEED = 0x2DA6, - SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25F1, - SMSG_NEW_TAXI_PATH = 0x26A7, + SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x25F2, + SMSG_NEW_TAXI_PATH = 0x26AC, SMSG_NEW_WORLD = 0x25AB, SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x2C43, - SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26D1, + SMSG_NOTIFY_MISSILE_TRAJECTORY_COLLISION = 0x26D8, SMSG_NOTIFY_MONEY = 0x25AE, - SMSG_NOTIFY_RECEIVED_MAIL = 0x2659, - SMSG_OFFER_PETITION_ERROR = 0x26E0, - SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x271C, + SMSG_NOTIFY_RECEIVED_MAIL = 0x265B, + SMSG_OFFER_PETITION_ERROR = 0x26E8, + SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA = 0x2725, SMSG_ON_MONSTER_MOVE = 0x2DA2, - SMSG_OPEN_ALLIED_RACE_DETAILS_GIVER = 0x2837, - SMSG_OPEN_CONTAINER = 0x2764, + SMSG_OPEN_ALLIED_RACE_DETAILS_GIVER = 0x2841, + SMSG_OPEN_CONTAINER = 0x276C, SMSG_OPEN_LFG_DUNGEON_FINDER = 0x2A31, - SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x27DA, - SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x27DC, - SMSG_OPEN_TRANSMOGRIFIER = 0x2836, - SMSG_OVERRIDE_LIGHT = 0x26E6, - SMSG_PAGE_TEXT = 0x2759, - SMSG_PARTY_COMMAND_RESULT = 0x27D7, + SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP = 0x27E6, + SMSG_OPEN_SHIPMENT_NPC_RESULT = 0x27E8, + SMSG_OPEN_TRANSMOGRIFIER = 0x283E, + SMSG_OVERRIDE_LIGHT = 0x26EE, + SMSG_PAGE_TEXT = 0x2761, + SMSG_PARTY_COMMAND_RESULT = 0x27E3, SMSG_PARTY_INVITE = 0x25CF, - SMSG_PARTY_KILL_LOG = 0x279D, - SMSG_PARTY_MEMBER_STATE = 0x279B, - SMSG_PARTY_MEMBER_STATE_UPDATE = 0x279A, - SMSG_PARTY_UPDATE = 0x260B, - SMSG_PAUSE_MIRROR_TIMER = 0x274F, - SMSG_PENDING_RAID_LOCK = 0x2730, + SMSG_PARTY_KILL_LOG = 0x27A6, + SMSG_PARTY_MEMBER_STATE = 0x27A4, + SMSG_PARTY_MEMBER_STATE_UPDATE = 0x27A3, + SMSG_PARTY_UPDATE = 0x260C, + SMSG_PAUSE_MIRROR_TIMER = 0x2758, + SMSG_PENDING_RAID_LOCK = 0x2739, SMSG_PETITION_ALREADY_SIGNED = 0x25B8, SMSG_PETITION_RENAME_GUILD_RESPONSE = 0x29F7, - SMSG_PETITION_SHOW_LIST = 0x26E9, - SMSG_PETITION_SHOW_SIGNATURES = 0x26EA, - SMSG_PETITION_SIGN_RESULTS = 0x278F, - SMSG_PET_ACTION_FEEDBACK = 0x278D, - SMSG_PET_ACTION_SOUND = 0x26C9, + SMSG_PETITION_SHOW_LIST = 0x26F1, + SMSG_PETITION_SHOW_SIGNATURES = 0x26F2, + SMSG_PETITION_SIGN_RESULTS = 0x2798, + SMSG_PET_ACTION_FEEDBACK = 0x2795, + SMSG_PET_ACTION_SOUND = 0x26CE, SMSG_PET_ADDED = 0x25A8, - SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2618, - SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x269C, - SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x2611, - SMSG_PET_BATTLE_FINAL_ROUND = 0x2616, - SMSG_PET_BATTLE_FINISHED = 0x2617, - SMSG_PET_BATTLE_FIRST_ROUND = 0x2613, - SMSG_PET_BATTLE_INITIAL_UPDATE = 0x2612, - SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x2619, - SMSG_PET_BATTLE_PVP_CHALLENGE = 0x2610, - SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2656, - SMSG_PET_BATTLE_QUEUE_STATUS = 0x2657, - SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x2615, - SMSG_PET_BATTLE_REQUEST_FAILED = 0x260F, - SMSG_PET_BATTLE_ROUND_RESULT = 0x2614, - SMSG_PET_BATTLE_SLOT_UPDATES = 0x2602, + SMSG_PET_BATTLE_CHAT_RESTRICTED = 0x2619, + SMSG_PET_BATTLE_DEBUG_QUEUE_DUMP_RESPONSE = 0x26A1, + SMSG_PET_BATTLE_FINALIZE_LOCATION = 0x2612, + SMSG_PET_BATTLE_FINAL_ROUND = 0x2617, + SMSG_PET_BATTLE_FINISHED = 0x2618, + SMSG_PET_BATTLE_FIRST_ROUND = 0x2614, + SMSG_PET_BATTLE_INITIAL_UPDATE = 0x2613, + SMSG_PET_BATTLE_MAX_GAME_LENGTH_WARNING = 0x261A, + SMSG_PET_BATTLE_PVP_CHALLENGE = 0x2611, + SMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH = 0x2658, + SMSG_PET_BATTLE_QUEUE_STATUS = 0x2659, + SMSG_PET_BATTLE_REPLACEMENTS_MADE = 0x2616, + SMSG_PET_BATTLE_REQUEST_FAILED = 0x2610, + SMSG_PET_BATTLE_ROUND_RESULT = 0x2615, + SMSG_PET_BATTLE_SLOT_UPDATES = 0x2603, SMSG_PET_CAST_FAILED = 0x2C57, SMSG_PET_CLEAR_SPELLS = 0x2C24, - SMSG_PET_DISMISS_SOUND = 0x26CA, - SMSG_PET_GOD_MODE = 0x26A4, - SMSG_PET_GUIDS = 0x2741, + SMSG_PET_DISMISS_SOUND = 0x26CF, + SMSG_PET_GOD_MODE = 0x26A9, + SMSG_PET_GUIDS = 0x274A, SMSG_PET_LEARNED_SPELLS = 0x2C4F, SMSG_PET_MODE = 0x2589, - SMSG_PET_NAME_INVALID = 0x26EE, + SMSG_PET_NAME_INVALID = 0x26F6, SMSG_PET_SLOT_UPDATED = 0x2588, SMSG_PET_SPELLS_MESSAGE = 0x2C25, SMSG_PET_STABLE_LIST = 0x25A9, SMSG_PET_STABLE_RESULT = 0x25AA, - SMSG_PET_TAME_FAILURE = 0x26DD, + SMSG_PET_TAME_FAILURE = 0x26E5, SMSG_PET_UNLEARNED_SPELLS = 0x2C50, SMSG_PHASE_SHIFT_CHANGE = 0x2577, - SMSG_PLAYED_TIME = 0x2708, + SMSG_PLAYED_TIME = 0x2711, SMSG_PLAYER_BOUND = 0x257D, SMSG_PLAYER_SAVE_GUILD_EMBLEM = 0x29F6, - SMSG_PLAYER_SKINNED = 0x2788, - SMSG_PLAYER_TABARD_VENDOR_ACTIVATE = 0x279C, - SMSG_PLAY_MUSIC = 0x27AB, - SMSG_PLAY_OBJECT_SOUND = 0x27AC, - SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x2772, + SMSG_PLAYER_SKINNED = 0x2790, + SMSG_PLAYER_TABARD_VENDOR_ACTIVATE = 0x27A5, + SMSG_PLAY_MUSIC = 0x27B7, + SMSG_PLAY_OBJECT_SOUND = 0x27B8, + SMSG_PLAY_ONE_SHOT_ANIM_KIT = 0x277A, SMSG_PLAY_ORPHAN_SPELL_VISUAL = 0x2C47, - SMSG_PLAY_SCENE = 0x2653, - SMSG_PLAY_SOUND = 0x27AA, - SMSG_PLAY_SPEAKERBOT_SOUND = 0x27AD, + SMSG_PLAY_SCENE = 0x2655, + SMSG_PLAY_SOUND = 0x27B6, + SMSG_PLAY_SPEAKERBOT_SOUND = 0x27B9, SMSG_PLAY_SPELL_VISUAL = 0x2C45, SMSG_PLAY_SPELL_VISUAL_KIT = 0x2C49, - SMSG_PLAY_TIME_WARNING = 0x273A, + SMSG_PLAY_TIME_WARNING = 0x2743, SMSG_PONG = 0x304E, - SMSG_POWER_UPDATE = 0x26FD, - SMSG_PRESTIGE_AND_HONOR_INVOLUNTARILY_CHANGED = 0x2758, - SMSG_PRE_RESSURECT = 0x27A9, + SMSG_POWER_UPDATE = 0x2705, + SMSG_PRE_RESSURECT = 0x27B5, SMSG_PRINT_NOTIFICATION = 0x25E1, - SMSG_PROC_RESIST = 0x279E, - SMSG_PROPOSE_LEVEL_GRANT = 0x2710, + SMSG_PROC_RESIST = 0x27A7, + SMSG_PROPOSE_LEVEL_GRANT = 0x2719, SMSG_PUSH_SPELL_TO_ACTION_BAR = 0x2C51, - SMSG_PVP_CREDIT = 0x2716, + SMSG_PVP_CREDIT = 0x271F, SMSG_PVP_LOG_DATA = 0x25B3, SMSG_PVP_OPTIONS_ENABLED = 0x25B6, SMSG_PVP_SEASON = 0x25D3, - SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x2703, - SMSG_QUERY_CREATURE_RESPONSE = 0x26FA, - SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x26FB, + SMSG_QUERY_BATTLE_PET_NAME_RESPONSE = 0x270C, + SMSG_QUERY_COMMUNITY_NAME_RESPONSE = 0x2708, + SMSG_QUERY_CREATURE_RESPONSE = 0x2702, + SMSG_QUERY_GAME_OBJECT_RESPONSE = 0x2703, SMSG_QUERY_GARRISON_CREATURE_NAME_RESPONSE = 0x292B, SMSG_QUERY_GUILD_INFO_RESPONSE = 0x29E5, - SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x280A, - SMSG_QUERY_NPC_TEXT_RESPONSE = 0x26FE, - SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x2700, - SMSG_QUERY_PETITION_RESPONSE = 0x2704, - SMSG_QUERY_PET_NAME_RESPONSE = 0x2702, - SMSG_QUERY_PLAYER_NAME_RESPONSE = 0x26FF, + SMSG_QUERY_ITEM_TEXT_RESPONSE = 0x2812, + SMSG_QUERY_NPC_TEXT_RESPONSE = 0x2706, + SMSG_QUERY_PAGE_TEXT_RESPONSE = 0x2709, + SMSG_QUERY_PETITION_RESPONSE = 0x270D, + SMSG_QUERY_PET_NAME_RESPONSE = 0x270B, + SMSG_QUERY_PLAYER_NAME_RESPONSE = 0x2707, SMSG_QUERY_QUEST_INFO_RESPONSE = 0x2A95, - SMSG_QUERY_QUEST_REWARD_RESPONSE = 0x2846, - SMSG_QUERY_TIME_RESPONSE = 0x271A, + SMSG_QUERY_TIME_RESPONSE = 0x2723, + SMSG_QUERY_TREASURE_PICKER_RESPONSE = 0x2850, SMSG_QUEST_COMPLETION_NPC_RESPONSE = 0x2A81, SMSG_QUEST_CONFIRM_ACCEPT = 0x2A8E, SMSG_QUEST_FORCE_REMOVED = 0x2A9B, @@ -1485,7 +1513,7 @@ enum OpcodeServer : uint16 SMSG_QUEST_GIVER_QUEST_DETAILS = 0x2A91, SMSG_QUEST_GIVER_QUEST_FAILED = 0x2A85, SMSG_QUEST_GIVER_QUEST_LIST_MESSAGE = 0x2A99, - SMSG_QUEST_GIVER_QUEST_TURN_IN_FAILURE = 0x2852, + SMSG_QUEST_GIVER_QUEST_TURN_IN_FAILURE = 0x285D, SMSG_QUEST_GIVER_REQUEST_ITEMS = 0x2A92, SMSG_QUEST_GIVER_STATUS = 0x2A9A, SMSG_QUEST_GIVER_STATUS_MULTIPLE = 0x2A90, @@ -1501,117 +1529,116 @@ enum OpcodeServer : uint16 SMSG_QUEST_UPDATE_COMPLETE_BY_SPELL = 0x2A87, SMSG_QUEST_UPDATE_FAILED = 0x2A89, SMSG_QUEST_UPDATE_FAILED_TIMER = 0x2A8A, - SMSG_RAF_EMAIL_ENABLED_RESPONSE = 0x27C8, - SMSG_RAID_DIFFICULTY_SET = 0x27EF, - SMSG_RAID_GROUP_ONLY = 0x27F1, + SMSG_RAF_EMAIL_ENABLED_RESPONSE = 0x27D4, + SMSG_RAID_DIFFICULTY_SET = 0x27F7, + SMSG_RAID_GROUP_ONLY = 0x27F9, SMSG_RAID_INSTANCE_MESSAGE = 0x2BB4, SMSG_RAID_MARKERS_CHANGED = 0x25B9, - SMSG_RANDOM_ROLL = 0x264C, + SMSG_RANDOM_ROLL = 0x264E, SMSG_RATED_BATTLEFIELD_INFO = 0x25A6, - SMSG_READY_CHECK_COMPLETED = 0x260E, - SMSG_READY_CHECK_RESPONSE = 0x260D, - SMSG_READY_CHECK_STARTED = 0x260C, - SMSG_READ_ITEM_RESULT_FAILED = 0x27EB, - SMSG_READ_ITEM_RESULT_OK = 0x27E1, - SMSG_REALM_LOOKUP_INFORMATION = 0x2810, - SMSG_REALM_QUERY_RESPONSE = 0x26E5, - SMSG_RECRUIT_A_FRIEND_RESPONSE = 0x27C9, - SMSG_REFER_A_FRIEND_EXPIRED = 0x2762, - SMSG_REFER_A_FRIEND_FAILURE = 0x26EB, - SMSG_REFRESH_COMPONENT = 0x2678, + SMSG_READY_CHECK_COMPLETED = 0x260F, + SMSG_READY_CHECK_RESPONSE = 0x260E, + SMSG_READY_CHECK_STARTED = 0x260D, + SMSG_READ_ITEM_RESULT_FAILED = 0x27F3, + SMSG_READ_ITEM_RESULT_OK = 0x27ED, + SMSG_REALM_LOOKUP_INFORMATION = 0x2818, + SMSG_REALM_QUERY_RESPONSE = 0x26ED, + SMSG_RECRUIT_A_FRIEND_RESPONSE = 0x27D5, + SMSG_REFER_A_FRIEND_EXPIRED = 0x276A, + SMSG_REFER_A_FRIEND_FAILURE = 0x26F3, + SMSG_REFRESH_COMPONENT = 0x267B, SMSG_REFRESH_SPELL_HISTORY = 0x2C2C, SMSG_REMOVE_ITEM_PASSIVE = 0x25C0, - SMSG_REMOVE_LOSS_OF_CONTROL = 0x2697, - SMSG_REPLACE_TROPHY_RESPONSE = 0x2807, - SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x26D9, - SMSG_REQUEST_ADDON_LIST = 0x265F, + SMSG_REMOVE_LOSS_OF_CONTROL = 0x269C, + SMSG_REPLACE_TROPHY_RESPONSE = 0x280F, + SMSG_REPORT_PVP_PLAYER_AFK_RESULT = 0x26E1, + SMSG_REQUEST_ADDON_LIST = 0x2661, SMSG_REQUEST_CEMETERY_LIST_RESPONSE = 0x259D, SMSG_REQUEST_PVP_BRAWL_INFO_RESPONSE = 0x25D5, SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x25D4, SMSG_RESEARCH_COMPLETE = 0x2585, - SMSG_RESET_AREA_TRIGGER = 0x2640, + SMSG_RESET_AREA_TRIGGER = 0x2642, SMSG_RESET_COMPRESSION_CONTEXT = 0x304F, - SMSG_RESET_FAILED_NOTIFY = 0x26E1, - SMSG_RESET_RANGED_COMBAT_TIMER = 0x2713, + SMSG_RESET_FAILED_NOTIFY = 0x26E9, + SMSG_RESET_RANGED_COMBAT_TIMER = 0x271C, SMSG_RESET_WEEKLY_CURRENCY = 0x2574, - SMSG_RESPEC_WIPE_CONFIRM = 0x2626, + SMSG_RESPEC_WIPE_CONFIRM = 0x2628, SMSG_RESPOND_INSPECT_ACHIEVEMENTS = 0x2571, SMSG_RESUME_CAST_BAR = 0x2C3E, SMSG_RESUME_COMMS = 0x304B, SMSG_RESUME_TOKEN = 0x25BE, SMSG_RESURRECT_REQUEST = 0x257E, - SMSG_RESYNC_RUNES = 0x273D, + SMSG_RESYNC_RUNES = 0x2746, SMSG_ROLE_CHANGED_INFORM = 0x258C, SMSG_ROLE_CHOSEN = 0x2A39, SMSG_ROLE_POLL_INFORM = 0x258D, SMSG_RUNE_REGEN_DEBUG = 0x25C8, - SMSG_SCENARIO_BOOT = 0x27EC, - SMSG_SCENARIO_COMPLETED = 0x282C, - SMSG_SCENARIO_POIS = 0x264F, - SMSG_SCENARIO_PROGRESS_UPDATE = 0x2648, - SMSG_SCENARIO_SET_SHOULD_SHOW_CRITERIA = 0x283A, - SMSG_SCENARIO_SPELL_UPDATE = 0x2839, - SMSG_SCENARIO_STATE = 0x2647, - SMSG_SCENE_OBJECT_EVENT = 0x25F7, - SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25FC, - SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25FD, - SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25F9, - SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25F8, - SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25FB, - SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25FA, + SMSG_SCENARIO_BOOT = 0x27F4, + SMSG_SCENARIO_COMPLETED = 0x2834, + SMSG_SCENARIO_POIS = 0x2651, + SMSG_SCENARIO_PROGRESS_UPDATE = 0x264A, + SMSG_SCENARIO_SET_SHOULD_SHOW_CRITERIA = 0x2844, + SMSG_SCENARIO_SPELL_UPDATE = 0x2843, + SMSG_SCENARIO_STATE = 0x2649, + SMSG_SCENE_OBJECT_EVENT = 0x25F8, + SMSG_SCENE_OBJECT_PET_BATTLE_FINAL_ROUND = 0x25FD, + SMSG_SCENE_OBJECT_PET_BATTLE_FINISHED = 0x25FE, + SMSG_SCENE_OBJECT_PET_BATTLE_FIRST_ROUND = 0x25FA, + SMSG_SCENE_OBJECT_PET_BATTLE_INITIAL_UPDATE = 0x25F9, + SMSG_SCENE_OBJECT_PET_BATTLE_REPLACEMENTS_MADE = 0x25FC, + SMSG_SCENE_OBJECT_PET_BATTLE_ROUND_RESULT = 0x25FB, SMSG_SCRIPT_CAST = 0x2C55, - SMSG_SELL_RESPONSE = 0x26EF, + SMSG_SELL_RESPONSE = 0x26F7, SMSG_SEND_ITEM_PASSIVES = 0x25C1, SMSG_SEND_KNOWN_SPELLS = 0x2C2A, - SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x264A, - SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x264B, + SMSG_SEND_RAID_TARGET_UPDATE_ALL = 0x264C, + SMSG_SEND_RAID_TARGET_UPDATE_SINGLE = 0x264D, SMSG_SEND_SPELL_CHARGES = 0x2C2D, SMSG_SEND_SPELL_HISTORY = 0x2C2B, SMSG_SEND_UNLEARN_SPELLS = 0x2C2E, - SMSG_SERVER_FIRST_ACHIEVEMENT = 0x2BBC, - SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x266A, - SMSG_SERVER_TIME = 0x26AB, + SMSG_SERVER_FIRST_ACHIEVEMENTS = 0x266C, + SMSG_SERVER_TIME = 0x26B0, SMSG_SETUP_CURRENCY = 0x2572, SMSG_SETUP_RESEARCH_HISTORY = 0x2584, - SMSG_SET_AI_ANIM_KIT = 0x2771, - SMSG_SET_ALL_TASK_PROGRESS = 0x27D1, - SMSG_SET_ANIM_TIER = 0x2775, + SMSG_SET_AI_ANIM_KIT = 0x2779, + SMSG_SET_ALL_TASK_PROGRESS = 0x27DD, + SMSG_SET_ANIM_TIER = 0x277D, SMSG_SET_CURRENCY = 0x2573, SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x2A2E, - SMSG_SET_DUNGEON_DIFFICULTY = 0x26CD, - SMSG_SET_FACTION_AT_WAR = 0x273C, - SMSG_SET_FACTION_NOT_VISIBLE = 0x276C, - SMSG_SET_FACTION_STANDING = 0x276D, - SMSG_SET_FACTION_VISIBLE = 0x276B, + SMSG_SET_DUNGEON_DIFFICULTY = 0x26D2, + SMSG_SET_FACTION_AT_WAR = 0x2745, + SMSG_SET_FACTION_NOT_VISIBLE = 0x2774, + SMSG_SET_FACTION_STANDING = 0x2775, + SMSG_SET_FACTION_VISIBLE = 0x2773, SMSG_SET_FLAT_SPELL_MODIFIER = 0x2C36, - SMSG_SET_FORCED_REACTIONS = 0x275C, + SMSG_SET_FORCED_REACTIONS = 0x2764, SMSG_SET_ITEM_PURCHASE_DATA = 0x25B0, - SMSG_SET_LOOT_METHOD_FAILED = 0x2816, + SMSG_SET_LOOT_METHOD_FAILED = 0x281E, SMSG_SET_MAX_WEEKLY_QUANTITY = 0x25B7, - SMSG_SET_MELEE_ANIM_KIT = 0x2774, - SMSG_SET_MOVEMENT_ANIM_KIT = 0x2773, + SMSG_SET_MELEE_ANIM_KIT = 0x277C, + SMSG_SET_MOVEMENT_ANIM_KIT = 0x277B, SMSG_SET_PCT_SPELL_MODIFIER = 0x2C37, - SMSG_SET_PET_SPECIALIZATION = 0x2641, - SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x2707, + SMSG_SET_PET_SPECIALIZATION = 0x2643, + SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x2710, SMSG_SET_PLAY_HOVER_ANIM = 0x25CC, - SMSG_SET_PROFICIENCY = 0x2776, + SMSG_SET_PROFICIENCY = 0x277E, SMSG_SET_SPELL_CHARGES = 0x2C29, - SMSG_SET_TASK_COMPLETE = 0x27D2, - SMSG_SET_TIME_ZONE_INFORMATION = 0x269F, - SMSG_SET_VEHICLE_REC_ID = 0x272F, - SMSG_SHOW_ADVENTURE_MAP = 0x2835, - SMSG_SHOW_BANK = 0x26A8, - SMSG_SHOW_MAILBOX = 0x27ED, - SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25F0, - SMSG_SHOW_TAXI_NODES = 0x26F6, - SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x27B2, - SMSG_SOCKET_GEMS = 0x2768, - SMSG_SOCKET_GEMS_FAILURE = 0x2769, - SMSG_SORT_BAGS_RESULT = 0x2824, - SMSG_SOR_START_EXPERIENCE_INCOMPLETE = 0x25F2, - SMSG_SPECIALIZATION_CHANGED = 0x25EC, - SMSG_SPECIAL_MOUNT_ANIM = 0x26C8, - SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2757, + SMSG_SET_TASK_COMPLETE = 0x27DE, + SMSG_SET_TIME_ZONE_INFORMATION = 0x26A4, + SMSG_SET_VEHICLE_REC_ID = 0x2738, + SMSG_SHOW_ADVENTURE_MAP = 0x283D, + SMSG_SHOW_BANK = 0x26AD, + SMSG_SHOW_MAILBOX = 0x27F5, + SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x25F1, + SMSG_SHOW_TAXI_NODES = 0x26FE, + SMSG_SHOW_TRADE_SKILL_RESPONSE = 0x27BE, + SMSG_SOCKET_GEMS = 0x2770, + SMSG_SOCKET_GEMS_FAILURE = 0x2771, + SMSG_SORT_BAGS_RESULT = 0x282C, + SMSG_SOR_START_EXPERIENCE_INCOMPLETE = 0x25F3, + SMSG_SPECIALIZATION_CHANGED = 0x25ED, + SMSG_SPECIAL_MOUNT_ANIM = 0x26CD, + SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x2760, SMSG_SPELL_ABSORB_LOG = 0x2C1F, SMSG_SPELL_CATEGORY_COOLDOWN = 0x2C17, SMSG_SPELL_CHANNEL_START = 0x2C34, @@ -1636,73 +1663,73 @@ enum OpcodeServer : uint16 SMSG_SPELL_PERIODIC_AURA_LOG = 0x2C1B, SMSG_SPELL_PREPARE = 0x2C38, SMSG_SPELL_START = 0x2C3A, - SMSG_SPIRIT_HEALER_CONFIRM = 0x2754, - SMSG_STAND_STATE_UPDATE = 0x275B, - SMSG_START_ELAPSED_TIMER = 0x261A, - SMSG_START_ELAPSED_TIMERS = 0x261C, - SMSG_START_LOOT_ROLL = 0x2631, - SMSG_START_MIRROR_TIMER = 0x274E, + SMSG_SPIRIT_HEALER_CONFIRM = 0x275D, + SMSG_STAND_STATE_UPDATE = 0x2763, + SMSG_START_ELAPSED_TIMER = 0x261B, + SMSG_START_ELAPSED_TIMERS = 0x261D, + SMSG_START_LOOT_ROLL = 0x2633, + SMSG_START_MIRROR_TIMER = 0x2757, SMSG_START_TIMER = 0x25BB, - SMSG_STOP_ELAPSED_TIMER = 0x261B, - SMSG_STOP_MIRROR_TIMER = 0x2750, - SMSG_STOP_SPEAKERBOT_SOUND = 0x27AE, + SMSG_STOP_ELAPSED_TIMER = 0x261C, + SMSG_STOP_MIRROR_TIMER = 0x2759, + SMSG_STOP_SPEAKERBOT_SOUND = 0x27BA, SMSG_STREAMING_MOVIES = 0x25BA, - SMSG_SUMMON_CANCEL = 0x26D8, + SMSG_SUMMON_CANCEL = 0x26E0, SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x258E, - SMSG_SUMMON_REQUEST = 0x2760, + SMSG_SUMMON_REQUEST = 0x2768, SMSG_SUPERCEDED_SPELLS = 0x2C4C, SMSG_SUSPEND_COMMS = 0x304A, SMSG_SUSPEND_TOKEN = 0x25BD, - SMSG_TALENTS_INVOLUNTARILY_RESET = 0x2756, - SMSG_TAXI_NODE_STATUS = 0x26A5, - SMSG_TEXT_EMOTE = 0x26A3, - SMSG_THREAT_CLEAR = 0x270F, - SMSG_THREAT_REMOVE = 0x270E, - SMSG_THREAT_UPDATE = 0x270D, + SMSG_TALENTS_INVOLUNTARILY_RESET = 0x275F, + SMSG_TAXI_NODE_STATUS = 0x26AA, + SMSG_TEXT_EMOTE = 0x26A8, + SMSG_THREAT_CLEAR = 0x2718, + SMSG_THREAT_REMOVE = 0x2717, + SMSG_THREAT_UPDATE = 0x2716, SMSG_TIME_ADJUSTMENT = 0x2DA1, SMSG_TIME_SYNC_REQUEST = 0x2DA0, - SMSG_TITLE_EARNED = 0x270A, - SMSG_TITLE_LOST = 0x270B, - SMSG_TOTEM_CREATED = 0x26F2, - SMSG_TOTEM_MOVED = 0x26F3, + SMSG_TITLE_EARNED = 0x2713, + SMSG_TITLE_LOST = 0x2714, + SMSG_TOTEM_CREATED = 0x26FA, + SMSG_TOTEM_MOVED = 0x26FB, SMSG_TRADE_STATUS = 0x2581, SMSG_TRADE_UPDATED = 0x2580, - SMSG_TRAINER_BUY_FAILED = 0x2715, - SMSG_TRAINER_LIST = 0x2714, - SMSG_TRANSFER_ABORTED = 0x2740, + SMSG_TRAINER_BUY_FAILED = 0x271E, + SMSG_TRAINER_LIST = 0x271D, + SMSG_TRANSFER_ABORTED = 0x2749, SMSG_TRANSFER_PENDING = 0x25E5, SMSG_TRANSMOG_COLLECTION_UPDATE = 0x25C6, SMSG_TRANSMOG_SET_COLLECTION_UPDATE = 0x25C7, - SMSG_TRIGGER_CINEMATIC = 0x280E, - SMSG_TRIGGER_MOVIE = 0x26F4, - SMSG_TURN_IN_PETITION_RESULT = 0x2791, - SMSG_TUTORIAL_FLAGS = 0x2800, - SMSG_TUTORIAL_HIGHLIGHT_SPELL = 0x2840, - SMSG_TUTORIAL_UNHIGHLIGHT_SPELL = 0x283F, + SMSG_TRIGGER_CINEMATIC = 0x2816, + SMSG_TRIGGER_MOVIE = 0x26FC, + SMSG_TURN_IN_PETITION_RESULT = 0x279A, + SMSG_TUTORIAL_FLAGS = 0x2808, + SMSG_TUTORIAL_HIGHLIGHT_SPELL = 0x284A, + SMSG_TUTORIAL_UNHIGHLIGHT_SPELL = 0x2849, SMSG_TWITTER_STATUS = 0x2FFD, - SMSG_UI_TIME = 0x2753, - SMSG_UNDELETE_CHARACTER_RESPONSE = 0x2811, - SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x2812, + SMSG_UI_TIME = 0x275C, + SMSG_UNDELETE_CHARACTER_RESPONSE = 0x2819, + SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x281A, SMSG_UNLEARNED_SPELLS = 0x2C4E, - SMSG_UPDATE_ACCOUNT_DATA = 0x2748, - SMSG_UPDATE_ACTION_BUTTONS = 0x25F5, - SMSG_UPDATE_CELESTIAL_BODY = 0x285E, - SMSG_UPDATE_CHARACTER_FLAGS = 0x2806, - SMSG_UPDATE_EXPANSION_LEVEL = 0x2663, - SMSG_UPDATE_GAME_TIME_STATE = 0x2865, - SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26D0, - SMSG_UPDATE_LAST_INSTANCE = 0x26B1, - SMSG_UPDATE_OBJECT = 0x280F, - SMSG_UPDATE_TALENT_DATA = 0x25EB, - SMSG_UPDATE_TASK_PROGRESS = 0x27D0, + SMSG_UPDATE_ACCOUNT_DATA = 0x2751, + SMSG_UPDATE_ACTION_BUTTONS = 0x25F6, + SMSG_UPDATE_CELESTIAL_BODY = 0x286E, + SMSG_UPDATE_CHARACTER_FLAGS = 0x280E, + SMSG_UPDATE_EXPANSION_LEVEL = 0x2665, + SMSG_UPDATE_GAME_TIME_STATE = 0x2875, + SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26D7, + SMSG_UPDATE_LAST_INSTANCE = 0x26B6, + SMSG_UPDATE_OBJECT = 0x2817, + SMSG_UPDATE_TALENT_DATA = 0x25EC, + SMSG_UPDATE_TASK_PROGRESS = 0x27DC, SMSG_UPDATE_WEEKLY_SPELL_USAGE = 0x2C19, - SMSG_UPDATE_WORLD_STATE = 0x278C, + SMSG_UPDATE_WORLD_STATE = 0x2794, SMSG_USERLIST_ADD = 0x2BB9, SMSG_USERLIST_REMOVE = 0x2BBA, SMSG_USERLIST_UPDATE = 0x2BBB, - SMSG_USE_EQUIPMENT_SET_RESULT = 0x2792, + SMSG_USE_EQUIPMENT_SET_RESULT = 0x279B, SMSG_VENDOR_INVENTORY = 0x25CA, - SMSG_VIGNETTE_UPDATE = 0x27B0, + SMSG_VIGNETTE_UPDATE = 0x27BC, SMSG_VOID_ITEM_SWAP_RESPONSE = 0x25DF, SMSG_VOID_STORAGE_CONTENTS = 0x25DC, SMSG_VOID_STORAGE_FAILED = 0x25DB, @@ -1711,30 +1738,31 @@ enum OpcodeServer : uint16 SMSG_WAIT_QUEUE_FINISH = 0x256E, SMSG_WAIT_QUEUE_UPDATE = 0x256D, SMSG_WARDEN_DATA = 0x2576, + SMSG_WARFRONT_COMPLETED = 0x27AD, SMSG_WARGAME_REQUEST_SUCCESSFULLY_SENT_TO_OPPONENT = 0x25B4, - SMSG_WEATHER = 0x26CF, + SMSG_WEATHER = 0x26D4, SMSG_WEEKLY_SPELL_USAGE = 0x2C18, SMSG_WHO = 0x2BAE, - SMSG_WHO_IS = 0x26CE, - SMSG_WORLD_QUEST_UPDATE = 0x2847, + SMSG_WHO_IS = 0x26D3, + SMSG_WORLD_QUEST_UPDATE = 0x2851, SMSG_WORLD_SERVER_INFO = 0x25C2, - SMSG_WORLD_TEXT = 0x282E, - SMSG_WOW_TOKEN_AUCTION_SOLD = 0x281C, - SMSG_WOW_TOKEN_BUY_REQUEST_CONFIRMATION = 0x281E, - SMSG_WOW_TOKEN_BUY_RESULT_CONFIRMATION = 0x281F, - SMSG_WOW_TOKEN_CAN_REDEEM_FOR_BALANCE_RESULT = 0x2856, - SMSG_WOW_TOKEN_CAN_VETERAN_BUY_RESULT = 0x281D, - SMSG_WOW_TOKEN_DISTRIBUTION_GLUE_UPDATE = 0x2817, - SMSG_WOW_TOKEN_DISTRIBUTION_UPDATE = 0x2818, - SMSG_WOW_TOKEN_MARKET_PRICE_RESPONSE = 0x2819, - SMSG_WOW_TOKEN_REDEEM_GAME_TIME_UPDATED = 0x2820, - SMSG_WOW_TOKEN_REDEEM_REQUEST_CONFIRMATION = 0x2821, - SMSG_WOW_TOKEN_REDEEM_RESULT = 0x2822, - SMSG_WOW_TOKEN_SELL_REQUEST_CONFIRMATION = 0x281A, - SMSG_WOW_TOKEN_SELL_RESULT_CONFIRMATION = 0x281B, - SMSG_WOW_TOKEN_UPDATE_AUCTIONABLE_LIST_RESPONSE = 0x2823, + SMSG_WORLD_TEXT = 0x2836, + SMSG_WOW_TOKEN_AUCTION_SOLD = 0x2824, + SMSG_WOW_TOKEN_BUY_REQUEST_CONFIRMATION = 0x2826, + SMSG_WOW_TOKEN_BUY_RESULT_CONFIRMATION = 0x2827, + SMSG_WOW_TOKEN_CAN_REDEEM_FOR_BALANCE_RESULT = 0x2861, + SMSG_WOW_TOKEN_CAN_VETERAN_BUY_RESULT = 0x2825, + SMSG_WOW_TOKEN_DISTRIBUTION_GLUE_UPDATE = 0x281F, + SMSG_WOW_TOKEN_DISTRIBUTION_UPDATE = 0x2820, + SMSG_WOW_TOKEN_MARKET_PRICE_RESPONSE = 0x2821, + SMSG_WOW_TOKEN_REDEEM_GAME_TIME_UPDATED = 0x2828, + SMSG_WOW_TOKEN_REDEEM_REQUEST_CONFIRMATION = 0x2829, + SMSG_WOW_TOKEN_REDEEM_RESULT = 0x282A, + SMSG_WOW_TOKEN_SELL_REQUEST_CONFIRMATION = 0x2822, + SMSG_WOW_TOKEN_SELL_RESULT_CONFIRMATION = 0x2823, + SMSG_WOW_TOKEN_UPDATE_AUCTIONABLE_LIST_RESPONSE = 0x282B, SMSG_XP_GAIN_ABORTED = 0x25E0, - SMSG_XP_GAIN_ENABLED = 0x27F0, + SMSG_XP_GAIN_ENABLED = 0x27F8, SMSG_ZONE_UNDER_ATTACK = 0x2BB5, // Opcodes that are not generated automatically diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index acadaf0d64a..0197441f0b5 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -1228,11 +1228,8 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co case CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY: // 0 2.5 case CMSG_BEGIN_TRADE: // 0 2.5 case CMSG_INITIATE_TRADE: // 0 3 - case CMSG_CHAT_ADDON_MESSAGE_GUILD: // 0 3.5 - case CMSG_CHAT_ADDON_MESSAGE_OFFICER: // 0 3.5 - case CMSG_CHAT_ADDON_MESSAGE_PARTY: // 0 3.5 - case CMSG_CHAT_ADDON_MESSAGE_RAID: // 0 3.5 - case CMSG_CHAT_ADDON_MESSAGE_WHISPER: // 0 3.5 + case CMSG_CHAT_ADDON_MESSAGE: // 0 3.5 + case CMSG_CHAT_ADDON_MESSAGE_TARGETED: // 0 3.5 case CMSG_CHAT_MESSAGE_AFK: // 0 3.5 case CMSG_CHAT_MESSAGE_CHANNEL: // 0 3.5 case CMSG_CHAT_MESSAGE_DND: // 0 3.5 diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index bba6b5ce039..4442a41a0a2 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -178,7 +178,7 @@ namespace WorldPackets class CalendarGetCalendar; class CalendarGetEvent; class CalendarGetNumPending; - class CalendarGuildFilter; + class CalendarCommunityFilter; class CalendarRemoveEvent; class CalendarRemoveInvite; class CalendarUpdateEvent; @@ -243,8 +243,7 @@ namespace WorldPackets class ChatMessageWhisper; class ChatMessageChannel; class ChatAddonMessage; - class ChatAddonMessageWhisper; - class ChatAddonMessageChannel; + class ChatAddonMessageTargeted; class ChatMessageAFK; class ChatMessageDND; class ChatMessageEmote; @@ -466,7 +465,6 @@ namespace WorldPackets class MountSpecial; class SetTaxiBenchmarkMode; class MountSetFavorite; - class PvpPrestigeRankUp; class CloseInteraction; } @@ -1454,8 +1452,7 @@ class TC_GAME_API WorldSession void HandleChatMessageChannelOpcode(WorldPackets::Chat::ChatMessageChannel& chatMessageChannel); void HandleChatMessage(ChatMsg type, uint32 lang, std::string msg, std::string target = ""); void HandleChatAddonMessageOpcode(WorldPackets::Chat::ChatAddonMessage& chatAddonMessage); - void HandleChatAddonMessageWhisperOpcode(WorldPackets::Chat::ChatAddonMessageWhisper& chatAddonMessageWhisper); - void HandleChatAddonMessageChannelOpcode(WorldPackets::Chat::ChatAddonMessageChannel& chatAddonMessageChannel); + void HandleChatAddonMessageTargetedOpcode(WorldPackets::Chat::ChatAddonMessageTargeted& chatAddonMessageTargeted); void HandleChatAddonMessage(ChatMsg type, std::string prefix, std::string text, std::string target = ""); void HandleChatMessageAFKOpcode(WorldPackets::Chat::ChatMessageAFK& chatMessageAFK); void HandleChatMessageDNDOpcode(WorldPackets::Chat::ChatMessageDND& chatMessageDND); @@ -1608,7 +1605,7 @@ class TC_GAME_API WorldSession // Calendar void HandleCalendarGetCalendar(WorldPackets::Calendar::CalendarGetCalendar& calendarGetCalendar); void HandleCalendarGetEvent(WorldPackets::Calendar::CalendarGetEvent& calendarGetEvent); - void HandleCalendarGuildFilter(WorldPackets::Calendar::CalendarGuildFilter& calendarGuildFilter); + void HandleCalendarCommunityFilter(WorldPackets::Calendar::CalendarCommunityFilter& calendarCommunityFilter); void HandleCalendarAddEvent(WorldPackets::Calendar::CalendarAddEvent& calendarAddEvent); void HandleCalendarUpdateEvent(WorldPackets::Calendar::CalendarUpdateEvent& calendarUpdateEvent); void HandleCalendarRemoveEvent(WorldPackets::Calendar::CalendarRemoveEvent& calendarRemoveEvent); @@ -1717,9 +1714,6 @@ class TC_GAME_API WorldSession // Scenario void HandleQueryScenarioPOI(WorldPackets::Scenario::QueryScenarioPOI& queryScenarioPOI); - // Honor - void HandlePvpPrestigeRankUp(WorldPackets::Misc::PvpPrestigeRankUp& /*pvpPrestigeRankUp*/); - union ConnectToKey { struct diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index da67f724864..e65eee8a787 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -957,13 +957,6 @@ void World::LoadConfigSettings(bool reload) } m_int_configs[CONFIG_CURRENCY_MAX_JUSTICE_POINTS] *= 100; //precision mod - m_int_configs[CONFIG_CURRENCY_START_ARTIFACT_KNOWLEDGE] = sConfigMgr->GetIntDefault("Currency.StartArtifactKnowledge", 55); - if (int32(m_int_configs[CONFIG_CURRENCY_START_ARTIFACT_KNOWLEDGE]) < 0) - { - TC_LOG_ERROR("server.loading", "Currency.StartArtifactKnowledge (%i) must be >= 0, set to default 0.", m_int_configs[CONFIG_CURRENCY_START_ARTIFACT_KNOWLEDGE]); - m_int_configs[CONFIG_CURRENCY_START_ARTIFACT_KNOWLEDGE] = 0; - } - m_int_configs[CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL] = sConfigMgr->GetIntDefault("RecruitAFriend.MaxLevel", 85); if (m_int_configs[CONFIG_MAX_RECRUIT_A_FRIEND_BONUS_PLAYER_LEVEL] > m_int_configs[CONFIG_MAX_PLAYER_LEVEL]) { diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 58d4f4f35b0..972da5bfa89 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -252,7 +252,6 @@ enum WorldIntConfigs CONFIG_CURRENCY_START_APEXIS_CRYSTALS, CONFIG_CURRENCY_MAX_APEXIS_CRYSTALS, CONFIG_CURRENCY_START_JUSTICE_POINTS, - CONFIG_CURRENCY_START_ARTIFACT_KNOWLEDGE, CONFIG_CURRENCY_MAX_JUSTICE_POINTS, CONFIG_CURRENCY_RESET_HOUR, CONFIG_CURRENCY_RESET_DAY, diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index 6fddde26c31..a99a85394c6 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -3947,14 +3947,6 @@ Currency.StartJusticePoints = 0 Currency.MaxJusticePoints = 4000 -# -# Currency.StartArtifactKnowledge -# Amount artifact knowledge that new players will start with -# Default: 55 (max) -# - -Currency.StartArtifactKnowledge = 55 - # ################################################################################################### -- cgit v1.2.3 From 7512ffb0587eccd8fbb2a2841900d572056dbae3 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 10 Oct 2018 22:11:02 +0200 Subject: Core/Entities: Update updatefields to 8.0.1.27980 --- sql/base/characters_database.sql | 4 +- .../characters/master/2018_10_10_00_characters.sql | 32 + .../Database/Implementation/CharacterDatabase.cpp | 4 +- src/server/game/Achievements/CriteriaHandler.cpp | 4 +- src/server/game/BattlePets/BattlePetMgr.cpp | 6 +- src/server/game/Conditions/ConditionMgr.cpp | 8 +- src/server/game/DataStores/GameTables.cpp | 2 - src/server/game/DataStores/GameTables.h | 7 - src/server/game/Entities/Creature/Creature.cpp | 2 +- src/server/game/Entities/Creature/Creature.h | 1 - src/server/game/Entities/Item/ItemTemplate.cpp | 2 +- src/server/game/Entities/Object/Object.cpp | 5 +- .../Entities/Object/Updates/UpdateFieldFlags.cpp | 8640 ++++++++++++-------- .../Entities/Object/Updates/UpdateFieldFlags.h | 8 +- .../game/Entities/Object/Updates/UpdateFields.h | 515 +- src/server/game/Entities/Pet/Pet.cpp | 6 +- src/server/game/Entities/Player/CollectionMgr.cpp | 38 +- src/server/game/Entities/Player/Player.cpp | 498 +- src/server/game/Entities/Player/Player.h | 49 +- src/server/game/Entities/Player/RestMgr.cpp | 20 +- src/server/game/Entities/Unit/StatSystem.cpp | 93 +- src/server/game/Entities/Unit/Unit.cpp | 77 +- src/server/game/Entities/Unit/Unit.h | 22 +- src/server/game/Handlers/BattlePetHandler.cpp | 2 +- src/server/game/Handlers/CharacterHandler.cpp | 4 +- src/server/game/Handlers/InspectHandler.cpp | 6 +- src/server/game/Handlers/ItemHandler.cpp | 2 +- src/server/game/Handlers/MiscHandler.cpp | 6 +- src/server/game/Handlers/SpellHandler.cpp | 4 +- src/server/game/Miscellaneous/SharedDefines.h | 1694 ++-- .../game/Server/Packets/CombatLogPacketsCommon.cpp | 4 +- src/server/game/Server/WorldSession.cpp | 6 +- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 75 +- src/server/game/Spells/SpellInfo.cpp | 6 +- src/server/scripts/Commands/cs_character.cpp | 2 +- src/server/scripts/Commands/cs_cheat.cpp | 4 +- src/server/scripts/Commands/cs_misc.cpp | 8 +- src/server/scripts/Commands/cs_reset.cpp | 8 +- src/server/scripts/Commands/cs_titles.cpp | 2 +- .../scripts/Northrend/Naxxramas/boss_sapphiron.cpp | 2 +- .../Outland/TempestKeep/Eye/boss_astromancer.cpp | 4 +- src/server/scripts/Spells/spell_pet.cpp | 28 +- 42 files changed, 6680 insertions(+), 5230 deletions(-) create mode 100644 sql/updates/characters/master/2018_10_10_00_characters.sql (limited to 'src/server/game/Entities/Player') diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql index 3e07e87a99c..17bf37bc811 100644 --- a/sql/base/characters_database.sql +++ b/sql/base/characters_database.sql @@ -1734,7 +1734,6 @@ CREATE TABLE `characters` ( `deleteDate` int(10) unsigned DEFAULT NULL, `honor` int(10) unsigned NOT NULL DEFAULT '0', `honorLevel` int(10) unsigned NOT NULL DEFAULT '1', - `prestigeLevel` int(10) unsigned NOT NULL DEFAULT '0', `honorRestState` tinyint(3) unsigned NOT NULL DEFAULT '2', `honorRestBonus` float NOT NULL DEFAULT '0', `lastLoginBuild` int(10) unsigned NOT NULL DEFAULT '0', @@ -3570,7 +3569,8 @@ INSERT INTO `updates` VALUES ('2018_04_28_00_characters.sql','CBD0FDC0F32DE3F456F7CE3D9CAD6933CD6A50F5','RELEASED','2018-04-28 12:44:09',0), ('2018_07_28_00_characters.sql','31F66AE7831251A8915625EC7F10FA138AB8B654','RELEASED','2018-07-28 18:30:19',0), ('2018_07_31_00_characters.sql','7DA8D4A4534520B23E6F5BBD5B8EE205B799C798','RELEASED','2018-07-31 20:54:39',0), -('2018_09_18_00_characters.sql','7FE9641C93ED762597C08F1E9B6649C9EC2F0E47','RELEASED','2018-09-18 23:34:29',0); +('2018_09_18_00_characters.sql','7FE9641C93ED762597C08F1E9B6649C9EC2F0E47','RELEASED','2018-09-18 23:34:29',0), +('2018_10_10_00_characters.sql','C80B936AAD94C58A0F33382CED08CFB4E0B6AC34','RELEASED','2018-10-10 22:05:28',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/characters/master/2018_10_10_00_characters.sql b/sql/updates/characters/master/2018_10_10_00_characters.sql new file mode 100644 index 00000000000..6ccb47f47e3 --- /dev/null +++ b/sql/updates/characters/master/2018_10_10_00_characters.sql @@ -0,0 +1,32 @@ +DROP TABLE IF EXISTS `total_honor_at_honor_level`; +CREATE TABLE `total_honor_at_honor_level` ( + `HonorLevel` int(10) UNSIGNED NOT NULL, + `Prestige0` int(10) UNSIGNED NOT NULL, + `Prestige1` int(10) UNSIGNED NOT NULL, + PRIMARY KEY (`HonorLevel`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +INSERT INTO `total_honor_at_honor_level` VALUES +(0,0,0),(1,350,800),(2,700,1600),(3,1050,2400),(4,1400,3200), +(5,1750,4000),(6,2100,4800),(7,2450,5600),(8,2800,6400),(9,3150,7200), +(10,3500,8000),(11,3900,8850),(12,4300,9700),(13,4700,10550),(14,5100,11400), +(15,5500,12250),(16,5900,13100),(17,6300,13950),(18,6700,14800),(19,7100,15650), +(20,7500,16500),(21,7950,17400),(22,8400,18300),(23,8850,19200),(24,9300,20100), +(25,9750,21000),(26,10200,21900),(27,10650,22800),(28,11100,23700),(29,11550,24600), +(30,12000,25500),(31,12500,26450),(32,13000,27400),(33,13500,28350),(34,14000,29300), +(35,14500,30250),(36,15000,31200),(37,15500,32150),(38,16000,33100),(39,16500,34050), +(40,17000,35000),(41,17550,36000),(42,18100,37000),(43,18650,38000),(44,19200,39000), +(45,19750,40000),(46,20300,41000),(47,20850,42000),(48,21400,43000),(49,21950,44000); + +-- first compensate for prestige levels above first +UPDATE `characters` SET `honor`=`honor`+44000*(`prestigeLevel`-1) WHERE `prestigeLevel`>0; +-- compensate for honor levels in prestige for characters above first prestige +UPDATE `characters` SET `honor`=`honor`+(SELECT th.`Prestige1` FROM `total_honor_at_honor_level` th WHERE th.`HonorLevel`=(`characters`.`honorLevel`-1)) WHERE `prestigeLevel`>0; +-- compensate for honor levels in first prestige level +UPDATE `characters` SET `honor`=`honor`+(SELECT th.`Prestige0` FROM `total_honor_at_honor_level` th WHERE th.`HonorLevel`=(`characters`.`honorLevel`-1)) WHERE `prestigeLevel`=0; + +-- reset honor levels, will be recalculated from refunded honor at first login (and grant achievements) +UPDATE `characters` SET `honorLevel`=1; + +ALTER TABLE `characters` DROP `prestigeLevel`; +DROP TABLE IF EXISTS `total_honor_at_honor_level`; diff --git a/src/server/database/Database/Implementation/CharacterDatabase.cpp b/src/server/database/Database/Implementation/CharacterDatabase.cpp index 359a1dd92db..62c64fd6d38 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/database/Database/Implementation/CharacterDatabase.cpp @@ -84,7 +84,7 @@ void CharacterDatabaseConnection::DoPrepareStatements() "resettalents_time, primarySpecialization, trans_x, trans_y, trans_z, trans_o, transguid, extra_flags, stable_slots, at_login, zone, online, death_expire_time, taxi_path, dungeonDifficulty, " "totalKills, todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, " "health, power1, power2, power3, power4, power5, power6, instance_id, activeTalentGroup, lootSpecId, exploredZones, knownTitles, actionBars, grantableLevels, raidDifficulty, legacyRaidDifficulty, fishingSteps, " - "honor, honorLevel, prestigeLevel, honorRestState, honorRestBonus " + "honor, honorLevel, honorRestState, honorRestBonus " "FROM characters c LEFT JOIN character_fishingsteps cfs ON c.guid = cfs.guid WHERE c.guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_GROUP_MEMBER, "SELECT guid FROM group_member WHERE memberGuid = ?", CONNECTION_BOTH); @@ -436,7 +436,7 @@ void CharacterDatabaseConnection::DoPrepareStatements() "logout_time=?,is_logout_resting=?,resettalents_cost=?,resettalents_time=?,primarySpecialization=?,extra_flags=?,stable_slots=?,at_login=?,zone=?,death_expire_time=?,taxi_path=?," "totalKills=?,todayKills=?,yesterdayKills=?,chosenTitle=?," "watchedFaction=?,drunk=?,health=?,power1=?,power2=?,power3=?,power4=?,power5=?,power6=?,latency=?,activeTalentGroup=?,lootSpecId=?,exploredZones=?," - "equipmentCache=?,knownTitles=?,actionBars=?,grantableLevels=?,online=?,honor=?,honorLevel=?,prestigeLevel=?,honorRestState=?,honorRestBonus=?,lastLoginBuild=? WHERE guid=?", CONNECTION_ASYNC); + "equipmentCache=?,knownTitles=?,actionBars=?,grantableLevels=?,online=?,honor=?,honorLevel=?,honorRestState=?,honorRestBonus=?,lastLoginBuild=? WHERE guid=?", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG, "UPDATE characters SET at_login = at_login | ? WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_REM_AT_LOGIN_FLAG, "UPDATE characters set at_login = at_login & ~ ? WHERE guid = ?", CONNECTION_ASYNC); diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index e8ca4c45a4e..b6e6908faad 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -657,7 +657,7 @@ void CriteriaHandler::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0 SetCriteriaProgress(criteria, referencePlayer->GetReputationMgr().GetVisibleFactionCount(), referencePlayer); break; case CRITERIA_TYPE_EARN_HONORABLE_KILL: - SetCriteriaProgress(criteria, referencePlayer->GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS), referencePlayer); + SetCriteriaProgress(criteria, referencePlayer->GetUInt32Value(ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS), referencePlayer); break; case CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED: SetCriteriaProgress(criteria, referencePlayer->GetMoney(), referencePlayer, PROGRESS_HIGHEST); @@ -1450,7 +1450,7 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis continue; uint32 mask = 1 << (uint32(area->AreaBit) % 32); - if (referencePlayer->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + playerIndexOffset) & mask) + if (referencePlayer->GetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + playerIndexOffset) & mask) { matchFound = true; break; diff --git a/src/server/game/BattlePets/BattlePetMgr.cpp b/src/server/game/BattlePets/BattlePetMgr.cpp index 2c96b93e7fe..42be357f802 100644 --- a/src/server/game/BattlePets/BattlePetMgr.cpp +++ b/src/server/game/BattlePets/BattlePetMgr.cpp @@ -444,7 +444,7 @@ void BattlePetMgr::SummonPet(ObjectGuid guid) return; // TODO: set proper CreatureID for spell DEFAULT_SUMMON_BATTLE_PET_SPELL (default EffectMiscValueA is 40721 - Murkimus the Gladiator) - _owner->GetPlayer()->SetGuidValue(PLAYER_FIELD_SUMMONED_BATTLE_PET_ID, guid); + _owner->GetPlayer()->SetGuidValue(ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID, guid); _owner->GetPlayer()->CastSpell(_owner->GetPlayer(), speciesEntry->SummonSpellID ? speciesEntry->SummonSpellID : uint32(DEFAULT_SUMMON_BATTLE_PET_SPELL)); // TODO: set pet level, quality... update fields @@ -454,10 +454,10 @@ void BattlePetMgr::DismissPet() { Player* ownerPlayer = _owner->GetPlayer(); Creature* pet = ObjectAccessor::GetCreatureOrPetOrVehicle(*ownerPlayer, ownerPlayer->GetCritterGUID()); - if (pet && ownerPlayer->GetGuidValue(PLAYER_FIELD_SUMMONED_BATTLE_PET_ID) == pet->GetGuidValue(UNIT_FIELD_BATTLE_PET_COMPANION_GUID)) + if (pet && ownerPlayer->GetGuidValue(ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID) == pet->GetGuidValue(UNIT_FIELD_BATTLE_PET_COMPANION_GUID)) { pet->DespawnOrUnsummon(); - ownerPlayer->SetGuidValue(PLAYER_FIELD_SUMMONED_BATTLE_PET_ID, ObjectGuid::Empty); + ownerPlayer->SetGuidValue(ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID, ObjectGuid::Empty); } } diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 685486fd749..a6e1e2f73b9 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -2590,10 +2590,10 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio } } - if (condition->PvpMedal && !((1 << (condition->PvpMedal - 1)) & player->GetUInt32Value(PLAYER_FIELD_PVP_MEDALS))) + if (condition->PvpMedal && !((1 << (condition->PvpMedal - 1)) & player->GetUInt32Value(ACTIVE_PLAYER_FIELD_PVP_MEDALS))) return false; - if (condition->LifetimeMaxPVPRank && player->GetByteValue(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_LIFETIME_MAX_PVP_RANK) != condition->LifetimeMaxPVPRank) + if (condition->LifetimeMaxPVPRank && player->GetByteValue(ACTIVE_PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_LIFETIME_MAX_PVP_RANK) != condition->LifetimeMaxPVPRank) return false; if (condition->MovementFlags[0] && !(player->GetUnitMovementFlags() & condition->MovementFlags[0])) @@ -2647,7 +2647,7 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio results.fill(true); for (std::size_t i = 0; i < PrevQuestCount::value; ++i) if (uint32 questBit = sDB2Manager.GetQuestUniqueBitFlag(condition->PrevQuestID[i])) - results[i] = (player->GetUInt32Value(PLAYER_FIELD_QUEST_COMPLETED + ((questBit - 1) >> 5)) & (1 << ((questBit - 1) & 31))) != 0; + results[i] = (player->GetUInt32Value(ACTIVE_PLAYER_FIELD_QUEST_COMPLETED + ((questBit - 1) >> 5)) & (1 << ((questBit - 1) & 31))) != 0; if (!PlayerConditionLogic(condition->PrevQuestLogic, results)) return false; @@ -2731,7 +2731,7 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player const* player, PlayerConditio for (std::size_t i = 0; i < ExploredCount::value; ++i) { if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(condition->Explored[i])) - if (area->AreaBit != -1 && !(player->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + area->AreaBit / 32) & (1 << (uint32(area->AreaBit) % 32)))) + if (area->AreaBit != -1 && !(player->GetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + area->AreaBit / 32) & (1 << (uint32(area->AreaBit) % 32)))) return false; } } diff --git a/src/server/game/DataStores/GameTables.cpp b/src/server/game/DataStores/GameTables.cpp index d6142ccf065..c4232087a7c 100644 --- a/src/server/game/DataStores/GameTables.cpp +++ b/src/server/game/DataStores/GameTables.cpp @@ -29,7 +29,6 @@ GameTable sBarberShopCostBaseGameTable; GameTable sBaseMPGameTable; GameTable sCombatRatingsGameTable; GameTable sCombatRatingsMultByILvlGameTable; -GameTable sHonorLevelGameTable; GameTable sHpPerStaGameTable; GameTable sItemSocketCostPerLevelGameTable; GameTable sNpcDamageByClassGameTable[MAX_EXPANSIONS]; @@ -118,7 +117,6 @@ void LoadGameTables(std::string const& dataPath) LOAD_GT(sCombatRatingsGameTable, "CombatRatings.txt"); LOAD_GT(sCombatRatingsMultByILvlGameTable, "CombatRatingsMultByILvl.txt"); LOAD_GT(sItemSocketCostPerLevelGameTable, "ItemSocketCostPerLevel.txt"); - LOAD_GT(sHonorLevelGameTable, "HonorLevel.txt"); LOAD_GT(sHpPerStaGameTable, "HpPerSta.txt"); LOAD_GT(sNpcDamageByClassGameTable[0], "NpcDamageByClass.txt"); LOAD_GT(sNpcDamageByClassGameTable[1], "NpcDamageByClassExp1.txt"); diff --git a/src/server/game/DataStores/GameTables.h b/src/server/game/DataStores/GameTables.h index 6e79de31e62..28365a7ff1c 100644 --- a/src/server/game/DataStores/GameTables.h +++ b/src/server/game/DataStores/GameTables.h @@ -103,12 +103,6 @@ struct GtCombatRatingsMultByILvl float JewelryMultiplier = 0.0f; }; -uint8 constexpr PRESTIGE_COLUMN_COUNT = 33; -struct GtHonorLevelEntry -{ - float Prestige[PRESTIGE_COLUMN_COUNT] = { }; -}; - struct GtHpPerStaEntry { float Health = 0.0f; @@ -215,7 +209,6 @@ TC_GAME_API extern GameTable sBarberShopC TC_GAME_API extern GameTable sBaseMPGameTable; TC_GAME_API extern GameTable sCombatRatingsGameTable; TC_GAME_API extern GameTable sCombatRatingsMultByILvlGameTable; -TC_GAME_API extern GameTable sHonorLevelGameTable; TC_GAME_API extern GameTable sHpPerStaGameTable; TC_GAME_API extern GameTable sItemSocketCostPerLevelGameTable; TC_GAME_API extern GameTable sNpcDamageByClassGameTable[MAX_EXPANSIONS]; diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 8f2c6980762..9d4724417fe 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -2571,7 +2571,7 @@ uint8 Creature::GetLevelForTarget(WorldObject const* target) const uint8 targetLevelWithDelta = unitTarget->getLevel() + GetInt32Value(UNIT_FIELD_SCALING_LEVEL_DELTA); if (target->IsPlayer()) - targetLevelWithDelta += target->GetUInt32Value(PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA); + targetLevelWithDelta += target->GetUInt32Value(ACTIVE_PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA); return RoundToInterval(targetLevelWithDelta, GetUInt32Value(UNIT_FIELD_SCALING_LEVEL_MIN), GetUInt32Value(UNIT_FIELD_SCALING_LEVEL_MAX)); } diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index d87db9be2ca..90c84fb843a 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -149,7 +149,6 @@ class TC_GAME_API Creature : public Unit, public GridObject, public Ma bool UpdateStats(Stats stat) override; bool UpdateAllStats() override; - void UpdateResistances(uint32 school) override; void UpdateArmor() override; void UpdateMaxHealth() override; void UpdateMaxPower(Powers power) override; diff --git a/src/server/game/Entities/Item/ItemTemplate.cpp b/src/server/game/Entities/Item/ItemTemplate.cpp index 43c817cde35..abb4d47bfe8 100644 --- a/src/server/game/Entities/Item/ItemTemplate.cpp +++ b/src/server/game/Entities/Item/ItemTemplate.cpp @@ -241,7 +241,7 @@ bool ItemTemplate::IsUsableByLootSpecialization(Player const* player, bool alway if (GetFlags() & ITEM_FLAG_IS_BOUND_TO_ACCOUNT && alwaysAllowBoundToAccount) return true; - uint32 spec = player->GetUInt32Value(PLAYER_FIELD_LOOT_SPEC_ID); + uint32 spec = player->GetUInt32Value(ACTIVE_PLAYER_FIELD_LOOT_SPEC_ID); if (!spec) spec = player->GetUInt32Value(PLAYER_FIELD_CURRENT_SPEC_ID); if (!spec) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index cd1d352eda8..201f5c1515c 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -130,7 +130,6 @@ void Object::_Create(ObjectGuid const& guid) if (!m_uint32Values) _InitValues(); SetGuidValue(OBJECT_FIELD_GUID, guid); - SetUInt16Value(OBJECT_FIELD_TYPE, 0, m_objectType); } std::string Object::_ConcatFields(uint16 startIndex, uint16 size) const @@ -928,7 +927,7 @@ uint32 Object::GetUpdateFieldData(Player const* target, uint32*& flags) const { case TYPEID_ITEM: case TYPEID_CONTAINER: - flags = ItemUpdateFieldFlags; + flags = ContainerUpdateFieldFlags; if (((Item const*)this)->GetOwnerGUID() == target->GetGUID()) visibleFlag |= UF_FLAG_OWNER | UF_FLAG_ITEM_OWNER; break; @@ -2975,7 +2974,7 @@ struct WorldObjectChangeAccumulator { //Caster may be NULL if DynObj is in removelist if (Player* caster = ObjectAccessor::FindPlayer(guid)) - if (caster->GetGuidValue(PLAYER_FARSIGHT) == source->GetGUID()) + if (caster->GetGuidValue(ACTIVE_PLAYER_FIELD_FARSIGHT) == source->GetGUID()) BuildPacket(caster); } } diff --git a/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp b/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp index 9a26e2a8c53..350c64d3c7b 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFieldFlags.cpp @@ -17,17 +17,12 @@ #include "UpdateFieldFlags.h" -uint32 ItemUpdateFieldFlags[CONTAINER_END] = +uint32 ContainerUpdateFieldFlags[CONTAINER_END] = { UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+1 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+2 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_TYPE UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X @@ -251,26 +246,198 @@ uint32 ItemUpdateFieldFlags[CONTAINER_END] = UF_FLAG_PUBLIC, // CONTAINER_FIELD_NUM_SLOTS }; -uint32 ItemDynamicUpdateFieldFlags[CONTAINER_DYNAMIC_END] = +uint32 AzeriteEmpoweredItemUpdateFieldFlags[AZERITE_EMPOWERED_ITEM_END] = +{ + UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID + UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 + UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 + UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 + UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY + UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS + UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X + UF_FLAG_PUBLIC, // ITEM_FIELD_OWNER + UF_FLAG_PUBLIC, // ITEM_FIELD_OWNER+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_OWNER+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_OWNER+3 + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTAINED + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTAINED+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTAINED+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTAINED+3 + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATOR + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATOR+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATOR+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATOR+3 + UF_FLAG_PUBLIC, // ITEM_FIELD_GIFTCREATOR + UF_FLAG_PUBLIC, // ITEM_FIELD_GIFTCREATOR+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_GIFTCREATOR+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_GIFTCREATOR+3 + UF_FLAG_OWNER, // ITEM_FIELD_STACK_COUNT + UF_FLAG_OWNER, // ITEM_FIELD_DURATION + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES+1 + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES+2 + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES+3 + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES+4 + UF_FLAG_PUBLIC, // ITEM_FIELD_FLAGS + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+3 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+4 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+5 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+6 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+7 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+8 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+9 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+10 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+11 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+12 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+13 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+14 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+15 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+16 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+17 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+18 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+19 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+20 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+21 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+22 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+23 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+24 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+25 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+26 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+27 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+28 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+29 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+30 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+31 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+32 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+33 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+34 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+35 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+36 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+37 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+38 + UF_FLAG_PUBLIC, // ITEM_FIELD_PROPERTY_SEED + UF_FLAG_PUBLIC, // ITEM_FIELD_RANDOM_PROPERTIES_ID + UF_FLAG_OWNER, // ITEM_FIELD_DURABILITY + UF_FLAG_OWNER, // ITEM_FIELD_MAXDURABILITY + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATE_PLAYED_TIME + UF_FLAG_OWNER, // ITEM_FIELD_MODIFIERS_MASK + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTEXT + UF_FLAG_OWNER, // ITEM_FIELD_ARTIFACT_XP + UF_FLAG_OWNER, // ITEM_FIELD_ARTIFACT_XP+1 + UF_FLAG_OWNER, // ITEM_FIELD_APPEARANCE_MOD_ID + UF_FLAG_PUBLIC, // AZERITE_EMPOWERED_ITEM_FIELD_SELECTIONS + UF_FLAG_PUBLIC, // AZERITE_EMPOWERED_ITEM_FIELD_SELECTIONS+1 + UF_FLAG_PUBLIC, // AZERITE_EMPOWERED_ITEM_FIELD_SELECTIONS+2 + UF_FLAG_PUBLIC, // AZERITE_EMPOWERED_ITEM_FIELD_SELECTIONS+3 +}; + +uint32 AzeriteItemUpdateFieldFlags[AZERITE_ITEM_END] = +{ + UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID + UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 + UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 + UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 + UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY + UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS + UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X + UF_FLAG_PUBLIC, // ITEM_FIELD_OWNER + UF_FLAG_PUBLIC, // ITEM_FIELD_OWNER+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_OWNER+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_OWNER+3 + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTAINED + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTAINED+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTAINED+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTAINED+3 + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATOR + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATOR+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATOR+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATOR+3 + UF_FLAG_PUBLIC, // ITEM_FIELD_GIFTCREATOR + UF_FLAG_PUBLIC, // ITEM_FIELD_GIFTCREATOR+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_GIFTCREATOR+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_GIFTCREATOR+3 + UF_FLAG_OWNER, // ITEM_FIELD_STACK_COUNT + UF_FLAG_OWNER, // ITEM_FIELD_DURATION + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES+1 + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES+2 + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES+3 + UF_FLAG_OWNER, // ITEM_FIELD_SPELL_CHARGES+4 + UF_FLAG_PUBLIC, // ITEM_FIELD_FLAGS + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+1 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+2 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+3 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+4 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+5 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+6 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+7 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+8 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+9 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+10 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+11 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+12 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+13 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+14 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+15 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+16 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+17 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+18 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+19 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+20 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+21 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+22 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+23 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+24 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+25 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+26 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+27 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+28 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+29 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+30 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+31 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+32 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+33 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+34 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+35 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+36 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+37 + UF_FLAG_PUBLIC, // ITEM_FIELD_ENCHANTMENT+38 + UF_FLAG_PUBLIC, // ITEM_FIELD_PROPERTY_SEED + UF_FLAG_PUBLIC, // ITEM_FIELD_RANDOM_PROPERTIES_ID + UF_FLAG_OWNER, // ITEM_FIELD_DURABILITY + UF_FLAG_OWNER, // ITEM_FIELD_MAXDURABILITY + UF_FLAG_PUBLIC, // ITEM_FIELD_CREATE_PLAYED_TIME + UF_FLAG_OWNER, // ITEM_FIELD_MODIFIERS_MASK + UF_FLAG_PUBLIC, // ITEM_FIELD_CONTEXT + UF_FLAG_OWNER, // ITEM_FIELD_ARTIFACT_XP + UF_FLAG_OWNER, // ITEM_FIELD_ARTIFACT_XP+1 + UF_FLAG_OWNER, // ITEM_FIELD_APPEARANCE_MOD_ID + UF_FLAG_PUBLIC, // AZERITE_ITEM_FIELD_XP + UF_FLAG_PUBLIC, // AZERITE_ITEM_FIELD_XP+1 + UF_FLAG_PUBLIC, // AZERITE_ITEM_FIELD_LEVEL + UF_FLAG_PUBLIC, // AZERITE_ITEM_FIELD_AURA_LEVEL + UF_FLAG_OWNER, // AZERITE_ITEM_FIELD_KNOWLEDGE_LEVEL + UF_FLAG_OWNER, // AZERITE_ITEM_FIELD_DEBUG_KNOWLEDGE_WEEK +}; + +uint32 ItemDynamicUpdateFieldFlags[ITEM_DYNAMIC_END] = { UF_FLAG_OWNER, // ITEM_DYNAMIC_FIELD_MODIFIERS UF_FLAG_OWNER | UF_FLAG_0x100, // ITEM_DYNAMIC_FIELD_BONUSLIST_IDS UF_FLAG_OWNER, // ITEM_DYNAMIC_FIELD_ARTIFACT_POWERS UF_FLAG_OWNER, // ITEM_DYNAMIC_FIELD_GEMS - UF_FLAG_OWNER, // ITEM_DYNAMIC_FIELD_RELIC_TALENT_DATA }; -uint32 UnitUpdateFieldFlags[PLAYER_END] = +uint32 UnitUpdateFieldFlags[ACTIVE_PLAYER_END] = { UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+1 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+2 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_TYPE UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X @@ -302,6 +469,10 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PUBLIC, // UNIT_FIELD_DEMON_CREATOR+1 UF_FLAG_PUBLIC, // UNIT_FIELD_DEMON_CREATOR+2 UF_FLAG_PUBLIC, // UNIT_FIELD_DEMON_CREATOR+3 + UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET + UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET+1 + UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET+2 + UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET+3 UF_FLAG_PUBLIC, // UNIT_FIELD_TARGET UF_FLAG_PUBLIC, // UNIT_FIELD_TARGET+1 UF_FLAG_PUBLIC, // UNIT_FIELD_TARGET+2 @@ -348,10 +519,13 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PRIVATE | UF_FLAG_OWNER | UF_FLAG_UNIT_ALL, // UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER+5 UF_FLAG_PUBLIC, // UNIT_FIELD_LEVEL UF_FLAG_PUBLIC, // UNIT_FIELD_EFFECTIVE_LEVEL - UF_FLAG_PUBLIC, // UNIT_FIELD_SANDBOX_SCALING_ID + UF_FLAG_PUBLIC, // UNIT_FIELD_CONTENT_TUNING_ID UF_FLAG_PUBLIC, // UNIT_FIELD_SCALING_LEVEL_MIN UF_FLAG_PUBLIC, // UNIT_FIELD_SCALING_LEVEL_MAX UF_FLAG_PUBLIC, // UNIT_FIELD_SCALING_LEVEL_DELTA + UF_FLAG_PUBLIC, // UNIT_FIELD_SCALING_FACTION_GROUP + UF_FLAG_PUBLIC, // UNIT_FIELD_SCALING_HEALTH_ITEM_LEVEL_CURVE_ID + UF_FLAG_PUBLIC, // UNIT_FIELD_SCALING_DAMAGE_ITEM_LEVEL_CURVE_ID UF_FLAG_PUBLIC, // UNIT_FIELD_FACTIONTEMPLATE UF_FLAG_PUBLIC, // UNIT_VIRTUAL_ITEM_SLOT_ID UF_FLAG_PUBLIC, // UNIT_VIRTUAL_ITEM_SLOT_ID+1 @@ -369,7 +543,9 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PUBLIC, // UNIT_FIELD_BOUNDINGRADIUS UF_FLAG_PUBLIC, // UNIT_FIELD_COMBATREACH UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // UNIT_FIELD_DISPLAYID + UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // UNIT_FIELD_DISPLAY_SCALE UF_FLAG_PUBLIC | UF_FLAG_URGENT, // UNIT_FIELD_NATIVEDISPLAYID + UF_FLAG_PUBLIC | UF_FLAG_URGENT, // UNIT_FIELD_NATIVE_X_DISPLAY_SCALE UF_FLAG_PUBLIC | UF_FLAG_URGENT, // UNIT_FIELD_MOUNTDISPLAYID UF_FLAG_PRIVATE | UF_FLAG_OWNER | UF_FLAG_SPECIAL_INFO, // UNIT_FIELD_MINDAMAGE UF_FLAG_PRIVATE | UF_FLAG_OWNER | UF_FLAG_SPECIAL_INFO, // UNIT_FIELD_MAXDAMAGE @@ -409,21 +585,13 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PRIVATE | UF_FLAG_OWNER | UF_FLAG_SPECIAL_INFO, // UNIT_FIELD_RESISTANCES+4 UF_FLAG_PRIVATE | UF_FLAG_OWNER | UF_FLAG_SPECIAL_INFO, // UNIT_FIELD_RESISTANCES+5 UF_FLAG_PRIVATE | UF_FLAG_OWNER | UF_FLAG_SPECIAL_INFO, // UNIT_FIELD_RESISTANCES+6 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+1 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+2 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+3 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+4 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+5 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+6 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+1 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+2 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+3 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+4 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+5 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+6 - UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_MOD_BONUS_ARMOR + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_BONUS_RESISTANCE_MODS + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_BONUS_RESISTANCE_MODS+1 + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_BONUS_RESISTANCE_MODS+2 + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_BONUS_RESISTANCE_MODS+3 + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_BONUS_RESISTANCE_MODS+4 + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_BONUS_RESISTANCE_MODS+5 + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_BONUS_RESISTANCE_MODS+6 UF_FLAG_PUBLIC, // UNIT_FIELD_BASE_MANA UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_BASE_HEALTH UF_FLAG_PUBLIC, // UNIT_FIELD_BYTES_2 @@ -435,7 +603,11 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RANGED_ATTACK_POWER_MOD_POS UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RANGED_ATTACK_POWER_MOD_NEG UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_MAIN_HAND_WEAPON_ATTACK_POWER + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_OFF_HAND_WEAPON_ATTACK_POWER + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_RANGED_HAND_WEAPON_ATTACK_POWER UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_ATTACK_SPEED_AURA + UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_LIFESTEAL UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_MINRANGEDDAMAGE UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_MAXRANGEDDAMAGE UF_FLAG_PRIVATE | UF_FLAG_OWNER, // UNIT_FIELD_POWER_COST_MODIFIER @@ -471,10 +643,10 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PUBLIC, // UNIT_FIELD_LOOKS_LIKE_MOUNT_ID UF_FLAG_PUBLIC, // UNIT_FIELD_LOOKS_LIKE_CREATURE_ID UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_ID - UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET - UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET+1 - UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET+2 - UF_FLAG_PUBLIC, // UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET+3 + UF_FLAG_PUBLIC, // UNIT_FIELD_GUILD_GUID + UF_FLAG_PUBLIC, // UNIT_FIELD_GUILD_GUID+1 + UF_FLAG_PUBLIC, // UNIT_FIELD_GUILD_GUID+2 + UF_FLAG_PUBLIC, // UNIT_FIELD_GUILD_GUID+3 UF_FLAG_PUBLIC, // PLAYER_DUEL_ARBITER UF_FLAG_PUBLIC, // PLAYER_DUEL_ARBITER+1 UF_FLAG_PUBLIC, // PLAYER_DUEL_ARBITER+2 @@ -1298,6 +1470,806 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+797 UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+798 UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+799 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+800 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+801 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+802 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+803 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+804 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+805 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+806 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+807 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+808 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+809 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+810 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+811 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+812 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+813 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+814 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+815 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+816 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+817 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+818 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+819 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+820 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+821 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+822 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+823 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+824 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+825 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+826 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+827 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+828 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+829 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+830 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+831 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+832 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+833 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+834 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+835 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+836 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+837 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+838 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+839 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+840 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+841 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+842 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+843 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+844 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+845 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+846 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+847 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+848 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+849 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+850 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+851 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+852 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+853 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+854 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+855 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+856 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+857 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+858 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+859 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+860 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+861 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+862 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+863 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+864 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+865 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+866 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+867 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+868 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+869 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+870 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+871 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+872 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+873 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+874 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+875 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+876 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+877 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+878 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+879 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+880 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+881 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+882 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+883 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+884 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+885 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+886 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+887 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+888 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+889 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+890 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+891 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+892 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+893 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+894 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+895 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+896 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+897 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+898 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+899 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+900 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+901 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+902 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+903 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+904 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+905 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+906 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+907 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+908 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+909 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+910 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+911 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+912 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+913 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+914 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+915 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+916 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+917 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+918 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+919 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+920 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+921 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+922 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+923 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+924 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+925 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+926 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+927 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+928 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+929 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+930 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+931 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+932 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+933 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+934 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+935 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+936 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+937 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+938 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+939 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+940 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+941 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+942 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+943 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+944 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+945 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+946 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+947 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+948 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+949 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+950 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+951 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+952 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+953 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+954 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+955 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+956 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+957 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+958 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+959 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+960 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+961 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+962 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+963 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+964 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+965 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+966 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+967 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+968 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+969 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+970 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+971 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+972 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+973 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+974 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+975 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+976 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+977 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+978 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+979 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+980 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+981 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+982 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+983 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+984 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+985 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+986 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+987 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+988 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+989 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+990 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+991 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+992 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+993 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+994 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+995 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+996 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+997 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+998 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+999 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1000 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1001 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1002 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1003 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1004 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1005 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1006 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1007 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1008 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1009 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1010 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1011 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1012 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1013 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1014 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1015 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1016 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1017 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1018 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1019 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1020 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1021 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1022 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1023 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1024 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1025 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1026 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1027 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1028 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1029 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1030 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1031 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1032 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1033 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1034 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1035 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1036 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1037 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1038 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1039 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1040 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1041 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1042 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1043 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1044 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1045 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1046 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1047 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1048 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1049 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1050 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1051 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1052 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1053 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1054 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1055 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1056 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1057 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1058 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1059 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1060 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1061 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1062 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1063 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1064 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1065 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1066 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1067 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1068 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1069 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1070 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1071 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1072 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1073 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1074 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1075 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1076 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1077 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1078 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1079 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1080 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1081 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1082 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1083 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1084 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1085 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1086 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1087 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1088 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1089 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1090 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1091 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1092 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1093 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1094 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1095 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1096 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1097 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1098 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1099 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1100 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1101 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1102 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1103 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1104 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1105 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1106 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1107 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1108 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1109 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1110 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1111 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1112 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1113 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1114 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1115 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1116 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1117 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1118 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1119 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1120 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1121 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1122 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1123 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1124 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1125 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1126 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1127 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1128 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1129 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1130 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1131 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1132 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1133 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1134 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1135 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1136 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1137 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1138 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1139 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1140 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1141 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1142 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1143 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1144 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1145 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1146 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1147 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1148 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1149 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1150 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1151 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1152 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1153 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1154 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1155 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1156 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1157 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1158 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1159 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1160 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1161 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1162 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1163 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1164 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1165 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1166 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1167 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1168 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1169 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1170 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1171 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1172 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1173 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1174 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1175 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1176 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1177 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1178 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1179 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1180 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1181 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1182 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1183 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1184 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1185 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1186 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1187 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1188 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1189 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1190 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1191 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1192 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1193 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1194 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1195 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1196 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1197 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1198 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1199 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1200 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1201 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1202 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1203 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1204 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1205 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1206 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1207 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1208 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1209 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1210 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1211 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1212 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1213 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1214 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1215 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1216 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1217 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1218 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1219 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1220 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1221 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1222 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1223 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1224 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1225 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1226 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1227 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1228 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1229 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1230 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1231 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1232 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1233 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1234 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1235 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1236 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1237 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1238 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1239 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1240 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1241 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1242 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1243 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1244 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1245 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1246 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1247 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1248 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1249 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1250 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1251 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1252 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1253 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1254 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1255 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1256 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1257 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1258 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1259 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1260 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1261 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1262 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1263 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1264 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1265 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1266 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1267 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1268 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1269 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1270 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1271 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1272 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1273 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1274 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1275 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1276 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1277 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1278 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1279 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1280 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1281 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1282 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1283 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1284 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1285 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1286 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1287 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1288 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1289 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1290 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1291 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1292 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1293 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1294 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1295 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1296 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1297 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1298 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1299 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1300 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1301 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1302 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1303 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1304 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1305 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1306 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1307 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1308 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1309 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1310 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1311 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1312 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1313 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1314 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1315 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1316 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1317 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1318 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1319 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1320 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1321 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1322 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1323 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1324 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1325 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1326 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1327 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1328 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1329 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1330 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1331 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1332 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1333 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1334 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1335 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1336 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1337 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1338 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1339 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1340 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1341 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1342 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1343 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1344 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1345 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1346 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1347 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1348 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1349 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1350 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1351 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1352 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1353 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1354 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1355 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1356 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1357 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1358 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1359 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1360 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1361 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1362 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1363 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1364 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1365 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1366 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1367 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1368 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1369 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1370 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1371 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1372 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1373 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1374 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1375 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1376 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1377 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1378 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1379 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1380 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1381 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1382 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1383 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1384 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1385 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1386 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1387 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1388 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1389 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1390 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1391 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1392 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1393 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1394 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1395 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1396 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1397 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1398 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1399 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1400 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1401 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1402 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1403 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1404 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1405 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1406 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1407 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1408 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1409 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1410 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1411 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1412 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1413 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1414 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1415 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1416 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1417 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1418 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1419 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1420 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1421 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1422 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1423 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1424 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1425 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1426 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1427 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1428 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1429 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1430 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1431 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1432 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1433 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1434 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1435 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1436 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1437 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1438 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1439 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1440 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1441 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1442 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1443 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1444 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1445 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1446 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1447 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1448 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1449 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1450 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1451 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1452 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1453 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1454 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1455 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1456 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1457 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1458 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1459 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1460 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1461 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1462 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1463 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1464 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1465 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1466 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1467 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1468 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1469 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1470 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1471 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1472 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1473 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1474 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1475 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1476 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1477 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1478 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1479 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1480 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1481 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1482 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1483 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1484 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1485 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1486 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1487 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1488 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1489 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1490 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1491 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1492 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1493 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1494 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1495 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1496 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1497 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1498 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1499 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1500 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1501 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1502 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1503 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1504 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1505 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1506 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1507 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1508 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1509 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1510 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1511 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1512 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1513 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1514 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1515 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1516 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1517 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1518 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1519 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1520 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1521 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1522 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1523 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1524 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1525 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1526 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1527 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1528 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1529 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1530 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1531 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1532 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1533 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1534 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1535 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1536 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1537 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1538 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1539 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1540 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1541 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1542 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1543 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1544 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1545 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1546 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1547 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1548 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1549 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1550 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1551 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1552 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1553 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1554 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1555 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1556 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1557 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1558 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1559 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1560 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1561 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1562 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1563 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1564 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1565 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1566 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1567 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1568 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1569 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1570 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1571 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1572 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1573 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1574 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1575 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1576 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1577 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1578 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1579 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1580 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1581 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1582 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1583 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1584 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1585 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1586 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1587 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1588 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1589 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1590 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1591 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1592 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1593 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1594 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1595 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1596 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1597 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1598 + UF_FLAG_PARTY_MEMBER, // PLAYER_QUEST_LOG+1599 UF_FLAG_PUBLIC, // PLAYER_VISIBLE_ITEM UF_FLAG_PUBLIC, // PLAYER_VISIBLE_ITEM+1 UF_FLAG_PUBLIC, // PLAYER_VISIBLE_ITEM+2 @@ -1346,3568 +2318,4021 @@ uint32 UnitUpdateFieldFlags[PLAYER_END] = UF_FLAG_PUBLIC, // PLAYER_FIELD_AVG_ITEM_LEVEL+2 UF_FLAG_PUBLIC, // PLAYER_FIELD_AVG_ITEM_LEVEL+3 UF_FLAG_PUBLIC, // PLAYER_FIELD_CURRENT_BATTLE_PET_BREED_QUALITY - UF_FLAG_PUBLIC, // PLAYER_FIELD_PRESTIGE UF_FLAG_PUBLIC, // PLAYER_FIELD_HONOR_LEVEL - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+7 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+8 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+9 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+10 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+11 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+12 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+13 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+14 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+15 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+16 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+17 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+18 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+19 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+20 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+21 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+22 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+23 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+24 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+25 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+26 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+27 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+28 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+29 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+30 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+31 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+32 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+33 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+34 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+35 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+36 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+37 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+38 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+39 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+40 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+41 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+42 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+43 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+44 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+45 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+46 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+47 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+48 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+49 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+50 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+51 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+52 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+53 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+54 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+55 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+56 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+57 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+58 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+59 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+60 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+61 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+62 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+63 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+64 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+65 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+66 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+67 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+68 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+69 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+70 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+71 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+72 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+73 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+74 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+75 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+76 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+77 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+78 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+79 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+80 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+81 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+82 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+83 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+84 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+85 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+86 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+87 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+88 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+89 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+90 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+91 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+92 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+93 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+94 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+95 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+96 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+97 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+98 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+99 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+100 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+101 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+102 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+103 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+104 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+105 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+106 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+107 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+108 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+109 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+110 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+111 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+112 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+113 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+114 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+115 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+116 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+117 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+118 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+119 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+120 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+121 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+122 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+123 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+124 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+125 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+126 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+127 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+128 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+129 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+130 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+131 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+132 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+133 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+134 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+135 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+136 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+137 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+138 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+139 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+140 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+141 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+142 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+143 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+144 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+145 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+146 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+147 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+148 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+149 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+150 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+151 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+152 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+153 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+154 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+155 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+156 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+157 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+158 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+159 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+160 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+161 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+162 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+163 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+164 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+165 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+166 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+167 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+168 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+169 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+170 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+171 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+172 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+173 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+174 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+175 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+176 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+177 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+178 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+179 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+180 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+181 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+182 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+183 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+184 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+185 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+186 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+187 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+188 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+189 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+190 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+191 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+192 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+193 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+194 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+195 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+196 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+197 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+198 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+199 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+200 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+201 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+202 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+203 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+204 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+205 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+206 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+207 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+208 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+209 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+210 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+211 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+212 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+213 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+214 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+215 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+216 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+217 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+218 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+219 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+220 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+221 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+222 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+223 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+224 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+225 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+226 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+227 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+228 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+229 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+230 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+231 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+232 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+233 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+234 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+235 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+236 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+237 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+238 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+239 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+240 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+241 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+242 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+243 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+244 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+245 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+246 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+247 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+248 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+249 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+250 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+251 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+252 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+253 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+254 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+255 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+256 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+257 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+258 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+259 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+260 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+261 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+262 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+263 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+264 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+265 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+266 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+267 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+268 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+269 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+270 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+271 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+272 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+273 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+274 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+275 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+276 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+277 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+278 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+279 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+280 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+281 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+282 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+283 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+284 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+285 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+286 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+287 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+288 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+289 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+290 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+291 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+292 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+293 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+294 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+295 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+296 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+297 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+298 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+299 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+300 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+301 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+302 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+303 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+304 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+305 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+306 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+307 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+308 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+309 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+310 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+311 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+312 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+313 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+314 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+315 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+316 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+317 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+318 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+319 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+320 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+321 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+322 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+323 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+324 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+325 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+326 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+327 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+328 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+329 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+330 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+331 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+332 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+333 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+334 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+335 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+336 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+337 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+338 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+339 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+340 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+341 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+342 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+343 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+344 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+345 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+346 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+347 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+348 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+349 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+350 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+351 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+352 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+353 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+354 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+355 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+356 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+357 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+358 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+359 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+360 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+361 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+362 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+363 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+364 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+365 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+366 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+367 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+368 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+369 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+370 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+371 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+372 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+373 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+374 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+375 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+376 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+377 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+378 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+379 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+380 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+381 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+382 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+383 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+384 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+385 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+386 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+387 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+388 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+389 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+390 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+391 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+392 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+393 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+394 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+395 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+396 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+397 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+398 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+399 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+400 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+401 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+402 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+403 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+404 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+405 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+406 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+407 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+408 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+409 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+410 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+411 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+412 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+413 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+414 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+415 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+416 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+417 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+418 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+419 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+420 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+421 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+422 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+423 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+424 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+425 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+426 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+427 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+428 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+429 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+430 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+431 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+432 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+433 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+434 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+435 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+436 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+437 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+438 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+439 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+440 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+441 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+442 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+443 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+444 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+445 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+446 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+447 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+448 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+449 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+450 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+451 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+452 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+453 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+454 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+455 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+456 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+457 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+458 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+459 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+460 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+461 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+462 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+463 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+464 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+465 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+466 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+467 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+468 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+469 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+470 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+471 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+472 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+473 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+474 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+475 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+476 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+477 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+478 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+479 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+480 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+481 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+482 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+483 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+484 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+485 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+486 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+487 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+488 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+489 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+490 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+491 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+492 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+493 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+494 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+495 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+496 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+497 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+498 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+499 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+500 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+501 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+502 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+503 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+504 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+505 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+506 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+507 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+508 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+509 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+510 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+511 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+512 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+513 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+514 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+515 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+516 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+517 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+518 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+519 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+520 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+521 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+522 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+523 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+524 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+525 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+526 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+527 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+528 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+529 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+530 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+531 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+532 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+533 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+534 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+535 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+536 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+537 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+538 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+539 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+540 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+541 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+542 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+543 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+544 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+545 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+546 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+547 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+548 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+549 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+550 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+551 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+552 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+553 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+554 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+555 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+556 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+557 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+558 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+559 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+560 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+561 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+562 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+563 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+564 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+565 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+566 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+567 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+568 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+569 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+570 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+571 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+572 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+573 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+574 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+575 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+576 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+577 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+578 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+579 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+580 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+581 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+582 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+583 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+584 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+585 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+586 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+587 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+588 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+589 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+590 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+591 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+592 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+593 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+594 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+595 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+596 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+597 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+598 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+599 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+600 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+601 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+602 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+603 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+604 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+605 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+606 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+607 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+608 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+609 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+610 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+611 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+612 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+613 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+614 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+615 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+616 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+617 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+618 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+619 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+620 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+621 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+622 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+623 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+624 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+625 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+626 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+627 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+628 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+629 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+630 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+631 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+632 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+633 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+634 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+635 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+636 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+637 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+638 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+639 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+640 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+641 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+642 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+643 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+644 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+645 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+646 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+647 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+648 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+649 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+650 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+651 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+652 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+653 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+654 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+655 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+656 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+657 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+658 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+659 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+660 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+661 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+662 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+663 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+664 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+665 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+666 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+667 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+668 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+669 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+670 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+671 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+672 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+673 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+674 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+675 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+676 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+677 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+678 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+679 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+680 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+681 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+682 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+683 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+684 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+685 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+686 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+687 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+688 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+689 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+690 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+691 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+692 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+693 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+694 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+695 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+696 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+697 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+698 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+699 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+700 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+701 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+702 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+703 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+704 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+705 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+706 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+707 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+708 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+709 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+710 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+711 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+712 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+713 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+714 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+715 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+716 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+717 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+718 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+719 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+720 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+721 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+722 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+723 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+724 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+725 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+726 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+727 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+728 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+729 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+730 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+731 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+732 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+733 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+734 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+735 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+736 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+737 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+738 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+739 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+740 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+741 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+742 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+743 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+744 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+745 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+746 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+747 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+748 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+749 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+750 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+751 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+752 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+753 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+754 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+755 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+756 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+757 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+758 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+759 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+760 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+761 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+762 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+763 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+764 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+765 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+766 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+767 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+768 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+769 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+770 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+771 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+772 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+773 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+774 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+775 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+776 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+777 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+778 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INV_SLOT_HEAD+779 - UF_FLAG_PRIVATE, // PLAYER_FARSIGHT - UF_FLAG_PRIVATE, // PLAYER_FARSIGHT+1 - UF_FLAG_PRIVATE, // PLAYER_FARSIGHT+2 - UF_FLAG_PRIVATE, // PLAYER_FARSIGHT+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_SUMMONED_BATTLE_PET_ID - UF_FLAG_PRIVATE, // PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+3 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+1 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+2 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+3 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+4 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+5 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+6 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+7 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+8 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+9 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+10 - UF_FLAG_PRIVATE, // PLAYER__FIELD_KNOWN_TITLES+11 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COINAGE - UF_FLAG_PRIVATE, // PLAYER_FIELD_COINAGE+1 - UF_FLAG_PRIVATE, // PLAYER_XP - UF_FLAG_PRIVATE, // PLAYER_NEXT_LEVEL_XP - UF_FLAG_PRIVATE, // PLAYER_TRIAL_XP - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+1 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+2 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+3 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+4 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+5 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+6 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+7 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+8 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+9 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+10 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+11 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+12 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+13 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+14 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+15 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+16 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+17 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+18 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+19 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+20 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+21 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+22 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+23 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+24 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+25 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+26 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+27 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+28 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+29 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+30 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+31 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+32 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+33 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+34 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+35 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+36 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+37 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+38 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+39 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+40 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+41 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+42 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+43 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+44 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+45 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+46 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+47 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+48 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+49 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+50 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+51 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+52 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+53 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+54 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+55 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+56 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+57 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+58 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+59 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+60 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+61 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+62 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+63 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+64 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+65 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+66 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+67 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+68 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+69 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+70 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+71 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+72 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+73 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+74 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+75 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+76 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+77 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+78 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+79 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+80 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+81 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+82 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+83 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+84 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+85 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+86 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+87 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+88 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+89 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+90 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+91 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+92 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+93 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+94 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+95 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+96 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+97 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+98 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+99 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+100 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+101 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+102 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+103 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+104 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+105 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+106 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+107 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+108 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+109 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+110 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+111 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+112 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+113 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+114 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+115 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+116 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+117 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+118 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+119 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+120 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+121 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+122 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+123 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+124 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+125 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+126 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+127 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+128 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+129 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+130 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+131 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+132 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+133 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+134 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+135 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+136 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+137 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+138 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+139 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+140 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+141 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+142 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+143 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+144 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+145 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+146 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+147 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+148 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+149 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+150 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+151 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+152 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+153 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+154 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+155 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+156 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+157 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+158 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+159 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+160 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+161 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+162 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+163 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+164 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+165 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+166 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+167 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+168 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+169 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+170 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+171 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+172 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+173 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+174 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+175 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+176 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+177 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+178 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+179 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+180 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+181 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+182 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+183 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+184 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+185 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+186 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+187 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+188 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+189 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+190 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+191 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+192 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+193 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+194 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+195 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+196 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+197 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+198 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+199 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+200 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+201 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+202 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+203 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+204 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+205 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+206 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+207 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+208 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+209 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+210 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+211 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+212 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+213 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+214 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+215 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+216 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+217 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+218 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+219 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+220 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+221 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+222 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+223 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+224 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+225 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+226 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+227 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+228 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+229 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+230 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+231 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+232 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+233 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+234 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+235 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+236 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+237 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+238 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+239 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+240 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+241 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+242 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+243 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+244 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+245 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+246 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+247 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+248 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+249 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+250 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+251 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+252 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+253 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+254 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+255 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+256 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+257 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+258 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+259 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+260 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+261 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+262 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+263 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+264 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+265 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+266 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+267 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+268 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+269 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+270 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+271 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+272 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+273 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+274 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+275 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+276 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+277 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+278 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+279 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+280 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+281 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+282 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+283 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+284 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+285 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+286 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+287 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+288 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+289 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+290 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+291 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+292 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+293 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+294 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+295 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+296 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+297 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+298 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+299 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+300 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+301 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+302 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+303 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+304 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+305 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+306 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+307 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+308 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+309 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+310 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+311 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+312 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+313 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+314 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+315 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+316 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+317 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+318 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+319 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+320 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+321 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+322 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+323 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+324 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+325 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+326 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+327 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+328 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+329 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+330 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+331 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+332 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+333 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+334 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+335 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+336 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+337 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+338 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+339 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+340 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+341 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+342 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+343 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+344 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+345 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+346 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+347 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+348 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+349 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+350 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+351 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+352 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+353 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+354 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+355 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+356 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+357 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+358 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+359 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+360 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+361 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+362 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+363 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+364 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+365 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+366 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+367 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+368 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+369 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+370 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+371 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+372 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+373 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+374 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+375 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+376 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+377 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+378 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+379 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+380 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+381 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+382 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+383 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+384 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+385 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+386 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+387 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+388 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+389 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+390 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+391 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+392 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+393 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+394 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+395 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+396 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+397 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+398 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+399 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+400 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+401 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+402 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+403 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+404 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+405 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+406 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+407 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+408 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+409 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+410 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+411 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+412 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+413 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+414 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+415 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+416 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+417 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+418 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+419 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+420 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+421 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+422 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+423 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+424 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+425 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+426 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+427 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+428 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+429 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+430 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+431 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+432 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+433 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+434 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+435 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+436 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+437 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+438 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+439 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+440 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+441 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+442 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+443 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+444 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+445 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+446 - UF_FLAG_PRIVATE, // PLAYER_SKILL_LINEID+447 - UF_FLAG_PRIVATE, // PLAYER_CHARACTER_POINTS - UF_FLAG_PRIVATE, // PLAYER_FIELD_MAX_TALENT_TIERS - UF_FLAG_PRIVATE, // PLAYER_TRACK_CREATURES - UF_FLAG_PRIVATE, // PLAYER_TRACK_RESOURCES - UF_FLAG_PRIVATE, // PLAYER_EXPERTISE - UF_FLAG_PRIVATE, // PLAYER_OFFHAND_EXPERTISE - UF_FLAG_PRIVATE, // PLAYER_FIELD_RANGED_EXPERTISE - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_EXPERTISE - UF_FLAG_PRIVATE, // PLAYER_BLOCK_PERCENTAGE - UF_FLAG_PRIVATE, // PLAYER_DODGE_PERCENTAGE - UF_FLAG_PRIVATE, // PLAYER_DODGE_PERCENTAGE_FROM_ATTRIBUTE - UF_FLAG_PRIVATE, // PLAYER_PARRY_PERCENTAGE - UF_FLAG_PRIVATE, // PLAYER_PARRY_PERCENTAGE_FROM_ATTRIBUTE - UF_FLAG_PRIVATE, // PLAYER_CRIT_PERCENTAGE - UF_FLAG_PRIVATE, // PLAYER_RANGED_CRIT_PERCENTAGE - UF_FLAG_PRIVATE, // PLAYER_OFFHAND_CRIT_PERCENTAGE - UF_FLAG_PRIVATE, // PLAYER_SPELL_CRIT_PERCENTAGE1 - UF_FLAG_PRIVATE, // PLAYER_SHIELD_BLOCK - UF_FLAG_PRIVATE, // PLAYER_SHIELD_BLOCK_CRIT_PERCENTAGE - UF_FLAG_PRIVATE, // PLAYER_MASTERY - UF_FLAG_PRIVATE, // PLAYER_SPEED - UF_FLAG_PRIVATE, // PLAYER_LIFESTEAL - UF_FLAG_PRIVATE, // PLAYER_AVOIDANCE - UF_FLAG_PRIVATE, // PLAYER_STURDINESS - UF_FLAG_PRIVATE, // PLAYER_VERSATILITY - UF_FLAG_PRIVATE, // PLAYER_VERSATILITY_BONUS - UF_FLAG_PRIVATE, // PLAYER_FIELD_PVP_POWER_DAMAGE - UF_FLAG_PRIVATE, // PLAYER_FIELD_PVP_POWER_HEALING - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+1 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+2 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+3 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+4 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+5 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+6 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+7 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+8 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+9 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+10 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+11 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+12 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+13 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+14 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+15 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+16 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+17 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+18 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+19 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+20 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+21 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+22 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+23 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+24 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+25 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+26 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+27 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+28 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+29 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+30 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+31 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+32 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+33 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+34 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+35 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+36 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+37 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+38 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+39 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+40 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+41 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+42 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+43 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+44 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+45 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+46 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+47 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+48 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+49 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+50 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+51 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+52 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+53 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+54 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+55 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+56 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+57 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+58 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+59 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+60 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+61 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+62 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+63 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+64 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+65 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+66 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+67 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+68 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+69 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+70 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+71 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+72 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+73 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+74 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+75 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+76 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+77 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+78 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+79 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+80 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+81 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+82 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+83 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+84 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+85 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+86 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+87 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+88 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+89 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+90 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+91 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+92 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+93 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+94 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+95 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+96 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+97 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+98 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+99 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+100 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+101 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+102 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+103 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+104 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+105 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+106 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+107 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+108 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+109 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+110 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+111 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+112 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+113 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+114 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+115 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+116 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+117 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+118 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+119 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+120 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+121 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+122 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+123 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+124 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+125 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+126 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+127 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+128 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+129 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+130 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+131 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+132 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+133 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+134 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+135 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+136 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+137 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+138 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+139 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+140 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+141 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+142 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+143 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+144 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+145 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+146 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+147 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+148 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+149 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+150 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+151 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+152 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+153 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+154 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+155 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+156 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+157 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+158 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+159 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+160 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+161 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+162 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+163 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+164 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+165 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+166 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+167 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+168 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+169 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+170 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+171 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+172 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+173 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+174 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+175 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+176 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+177 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+178 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+179 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+180 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+181 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+182 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+183 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+184 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+185 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+186 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+187 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+188 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+189 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+190 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+191 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+192 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+193 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+194 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+195 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+196 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+197 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+198 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+199 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+200 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+201 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+202 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+203 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+204 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+205 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+206 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+207 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+208 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+209 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+210 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+211 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+212 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+213 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+214 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+215 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+216 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+217 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+218 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+219 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+220 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+221 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+222 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+223 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+224 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+225 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+226 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+227 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+228 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+229 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+230 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+231 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+232 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+233 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+234 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+235 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+236 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+237 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+238 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+239 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+240 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+241 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+242 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+243 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+244 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+245 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+246 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+247 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+248 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+249 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+250 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+251 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+252 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+253 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+254 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+255 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+256 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+257 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+258 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+259 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+260 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+261 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+262 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+263 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+264 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+265 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+266 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+267 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+268 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+269 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+270 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+271 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+272 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+273 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+274 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+275 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+276 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+277 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+278 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+279 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+280 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+281 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+282 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+283 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+284 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+285 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+286 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+287 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+288 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+289 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+290 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+291 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+292 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+293 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+294 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+295 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+296 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+297 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+298 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+299 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+300 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+301 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+302 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+303 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+304 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+305 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+306 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+307 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+308 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+309 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+310 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+311 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+312 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+313 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+314 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+315 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+316 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+317 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+318 - UF_FLAG_PRIVATE, // PLAYER_EXPLORED_ZONES_1+319 - UF_FLAG_PRIVATE, // PLAYER_FIELD_REST_INFO - UF_FLAG_PRIVATE, // PLAYER_FIELD_REST_INFO+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_REST_INFO+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_REST_INFO+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_POS - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_POS+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_POS+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_POS+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_POS+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_POS+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_POS+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_NEG - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_PCT - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_HEALING_DONE_POS - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_HEALING_PCT - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_HEALING_DONE_PCT - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_PERIODIC_HEALING_DONE_PERCENT - UF_FLAG_PRIVATE, // PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS - UF_FLAG_PRIVATE, // PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS - UF_FLAG_PRIVATE, // PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_SPELL_POWER_PCT - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_RESILIENCE_PERCENT - UF_FLAG_PRIVATE, // PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT - UF_FLAG_PRIVATE, // PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_TARGET_RESISTANCE - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE - UF_FLAG_PRIVATE, // PLAYER_FIELD_LOCAL_FLAGS - UF_FLAG_PRIVATE, // PLAYER_FIELD_BYTES - UF_FLAG_PRIVATE, // PLAYER_FIELD_PVP_MEDALS - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+7 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+8 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+9 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+10 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_PRICE_1+11 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+7 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+8 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+9 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+10 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BUYBACK_TIMESTAMP_1+11 - UF_FLAG_PRIVATE, // PLAYER_FIELD_KILLS - UF_FLAG_PRIVATE, // PLAYER_FIELD_LIFETIME_HONORABLE_KILLS - UF_FLAG_PRIVATE, // PLAYER_FIELD_WATCHED_FACTION_INDEX - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+7 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+8 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+9 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+10 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+11 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+12 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+13 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+14 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+15 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+16 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+17 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+18 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+19 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+20 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+21 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+22 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+23 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+24 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+25 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+26 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+27 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+28 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+29 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+30 - UF_FLAG_PRIVATE, // PLAYER_FIELD_COMBAT_RATING_1+31 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+7 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+8 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+9 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+10 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+11 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+12 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+13 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+14 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+15 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+16 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+17 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+18 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+19 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+20 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+21 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+22 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+23 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+24 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+25 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+26 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+27 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+28 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+29 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+30 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+31 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+32 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+33 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+34 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+35 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+36 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+37 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+38 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+39 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+40 - UF_FLAG_PRIVATE, // PLAYER_FIELD_ARENA_TEAM_INFO_1_1+41 - UF_FLAG_PRIVATE, // PLAYER_FIELD_MAX_LEVEL - UF_FLAG_PRIVATE, // PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA - UF_FLAG_PRIVATE, // PLAYER_FIELD_MAX_CREATURE_SCALING_LEVEL - UF_FLAG_PRIVATE, // PLAYER_NO_REAGENT_COST_1 - UF_FLAG_PRIVATE, // PLAYER_NO_REAGENT_COST_1+1 - UF_FLAG_PRIVATE, // PLAYER_NO_REAGENT_COST_1+2 - UF_FLAG_PRIVATE, // PLAYER_NO_REAGENT_COST_1+3 - UF_FLAG_PRIVATE, // PLAYER_PET_SPELL_POWER - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+7 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+8 - UF_FLAG_PRIVATE, // PLAYER_FIELD_RESEARCHING_1+9 - UF_FLAG_PRIVATE, // PLAYER_PROFESSION_SKILL_LINE_1 - UF_FLAG_PRIVATE, // PLAYER_PROFESSION_SKILL_LINE_1+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_UI_HIT_MODIFIER - UF_FLAG_PRIVATE, // PLAYER_FIELD_UI_SPELL_HIT_MODIFIER - UF_FLAG_PRIVATE, // PLAYER_FIELD_HOME_REALM_TIME_OFFSET - UF_FLAG_PRIVATE, // PLAYER_FIELD_MOD_PET_HASTE - UF_FLAG_PRIVATE, // PLAYER_FIELD_BYTES2 - UF_FLAG_PRIVATE | UF_FLAG_URGENT_SELF_ONLY, // PLAYER_FIELD_BYTES3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_LFG_BONUS_FACTION_ID - UF_FLAG_PRIVATE, // PLAYER_FIELD_LOOT_SPEC_ID - UF_FLAG_PRIVATE | UF_FLAG_URGENT_SELF_ONLY, // PLAYER_FIELD_OVERRIDE_ZONE_PVP_TYPE - UF_FLAG_PRIVATE, // PLAYER_FIELD_BAG_SLOT_FLAGS - UF_FLAG_PRIVATE, // PLAYER_FIELD_BAG_SLOT_FLAGS+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BAG_SLOT_FLAGS+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BAG_SLOT_FLAGS+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BANK_BAG_SLOT_FLAGS - UF_FLAG_PRIVATE, // PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_INSERT_ITEMS_LEFT_TO_RIGHT - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+2 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+3 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+4 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+5 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+6 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+7 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+8 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+9 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+10 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+11 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+12 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+13 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+14 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+15 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+16 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+17 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+18 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+19 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+20 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+21 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+22 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+23 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+24 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+25 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+26 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+27 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+28 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+29 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+30 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+31 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+32 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+33 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+34 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+35 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+36 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+37 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+38 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+39 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+40 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+41 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+42 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+43 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+44 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+45 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+46 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+47 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+48 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+49 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+50 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+51 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+52 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+53 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+54 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+55 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+56 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+57 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+58 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+59 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+60 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+61 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+62 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+63 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+64 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+65 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+66 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+67 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+68 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+69 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+70 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+71 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+72 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+73 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+74 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+75 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+76 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+77 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+78 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+79 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+80 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+81 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+82 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+83 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+84 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+85 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+86 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+87 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+88 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+89 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+90 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+91 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+92 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+93 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+94 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+95 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+96 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+97 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+98 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+99 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+100 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+101 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+102 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+103 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+104 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+105 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+106 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+107 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+108 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+109 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+110 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+111 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+112 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+113 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+114 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+115 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+116 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+117 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+118 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+119 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+120 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+121 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+122 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+123 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+124 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+125 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+126 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+127 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+128 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+129 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+130 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+131 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+132 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+133 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+134 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+135 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+136 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+137 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+138 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+139 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+140 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+141 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+142 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+143 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+144 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+145 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+146 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+147 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+148 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+149 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+150 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+151 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+152 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+153 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+154 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+155 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+156 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+157 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+158 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+159 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+160 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+161 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+162 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+163 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+164 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+165 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+166 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+167 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+168 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+169 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+170 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+171 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+172 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+173 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+174 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+175 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+176 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+177 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+178 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+179 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+180 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+181 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+182 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+183 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+184 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+185 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+186 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+187 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+188 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+189 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+190 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+191 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+192 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+193 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+194 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+195 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+196 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+197 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+198 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+199 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+200 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+201 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+202 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+203 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+204 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+205 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+206 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+207 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+208 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+209 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+210 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+211 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+212 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+213 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+214 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+215 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+216 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+217 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+218 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+219 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+220 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+221 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+222 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+223 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+224 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+225 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+226 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+227 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+228 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+229 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+230 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+231 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+232 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+233 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+234 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+235 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+236 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+237 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+238 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+239 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+240 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+241 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+242 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+243 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+244 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+245 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+246 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+247 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+248 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+249 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+250 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+251 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+252 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+253 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+254 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+255 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+256 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+257 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+258 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+259 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+260 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+261 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+262 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+263 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+264 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+265 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+266 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+267 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+268 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+269 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+270 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+271 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+272 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+273 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+274 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+275 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+276 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+277 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+278 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+279 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+280 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+281 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+282 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+283 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+284 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+285 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+286 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+287 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+288 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+289 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+290 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+291 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+292 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+293 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+294 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+295 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+296 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+297 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+298 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+299 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+300 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+301 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+302 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+303 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+304 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+305 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+306 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+307 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+308 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+309 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+310 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+311 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+312 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+313 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+314 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+315 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+316 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+317 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+318 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+319 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+320 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+321 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+322 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+323 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+324 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+325 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+326 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+327 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+328 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+329 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+330 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+331 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+332 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+333 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+334 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+335 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+336 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+337 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+338 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+339 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+340 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+341 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+342 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+343 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+344 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+345 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+346 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+347 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+348 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+349 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+350 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+351 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+352 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+353 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+354 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+355 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+356 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+357 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+358 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+359 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+360 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+361 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+362 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+363 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+364 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+365 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+366 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+367 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+368 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+369 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+370 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+371 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+372 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+373 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+374 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+375 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+376 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+377 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+378 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+379 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+380 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+381 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+382 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+383 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+384 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+385 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+386 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+387 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+388 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+389 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+390 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+391 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+392 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+393 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+394 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+395 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+396 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+397 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+398 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+399 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+400 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+401 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+402 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+403 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+404 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+405 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+406 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+407 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+408 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+409 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+410 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+411 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+412 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+413 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+414 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+415 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+416 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+417 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+418 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+419 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+420 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+421 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+422 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+423 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+424 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+425 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+426 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+427 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+428 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+429 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+430 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+431 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+432 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+433 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+434 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+435 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+436 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+437 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+438 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+439 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+440 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+441 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+442 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+443 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+444 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+445 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+446 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+447 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+448 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+449 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+450 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+451 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+452 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+453 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+454 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+455 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+456 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+457 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+458 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+459 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+460 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+461 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+462 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+463 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+464 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+465 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+466 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+467 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+468 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+469 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+470 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+471 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+472 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+473 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+474 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+475 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+476 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+477 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+478 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+479 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+480 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+481 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+482 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+483 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+484 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+485 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+486 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+487 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+488 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+489 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+490 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+491 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+492 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+493 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+494 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+495 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+496 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+497 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+498 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+499 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+500 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+501 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+502 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+503 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+504 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+505 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+506 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+507 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+508 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+509 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+510 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+511 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+512 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+513 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+514 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+515 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+516 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+517 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+518 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+519 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+520 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+521 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+522 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+523 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+524 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+525 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+526 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+527 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+528 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+529 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+530 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+531 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+532 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+533 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+534 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+535 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+536 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+537 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+538 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+539 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+540 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+541 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+542 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+543 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+544 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+545 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+546 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+547 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+548 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+549 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+550 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+551 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+552 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+553 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+554 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+555 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+556 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+557 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+558 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+559 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+560 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+561 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+562 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+563 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+564 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+565 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+566 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+567 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+568 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+569 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+570 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+571 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+572 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+573 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+574 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+575 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+576 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+577 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+578 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+579 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+580 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+581 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+582 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+583 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+584 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+585 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+586 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+587 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+588 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+589 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+590 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+591 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+592 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+593 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+594 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+595 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+596 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+597 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+598 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+599 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+600 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+601 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+602 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+603 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+604 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+605 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+606 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+607 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+608 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+609 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+610 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+611 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+612 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+613 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+614 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+615 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+616 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+617 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+618 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+619 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+620 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+621 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+622 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+623 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+624 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+625 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+626 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+627 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+628 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+629 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+630 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+631 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+632 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+633 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+634 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+635 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+636 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+637 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+638 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+639 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+640 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+641 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+642 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+643 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+644 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+645 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+646 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+647 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+648 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+649 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+650 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+651 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+652 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+653 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+654 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+655 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+656 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+657 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+658 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+659 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+660 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+661 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+662 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+663 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+664 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+665 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+666 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+667 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+668 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+669 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+670 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+671 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+672 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+673 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+674 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+675 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+676 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+677 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+678 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+679 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+680 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+681 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+682 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+683 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+684 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+685 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+686 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+687 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+688 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+689 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+690 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+691 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+692 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+693 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+694 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+695 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+696 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+697 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+698 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+699 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+700 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+701 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+702 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+703 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+704 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+705 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+706 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+707 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+708 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+709 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+710 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+711 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+712 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+713 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+714 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+715 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+716 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+717 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+718 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+719 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+720 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+721 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+722 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+723 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+724 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+725 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+726 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+727 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+728 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+729 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+730 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+731 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+732 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+733 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+734 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+735 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+736 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+737 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+738 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+739 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+740 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+741 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+742 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+743 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+744 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+745 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+746 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+747 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+748 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+749 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+750 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+751 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+752 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+753 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+754 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+755 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+756 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+757 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+758 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+759 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+760 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+761 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+762 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+763 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+764 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+765 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+766 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+767 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+768 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+769 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+770 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+771 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+772 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+773 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+774 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+775 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+776 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+777 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+778 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+779 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+780 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+781 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+782 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+783 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+784 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+785 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+786 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+787 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+788 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+789 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+790 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+791 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+792 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+793 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+794 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+795 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+796 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+797 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+798 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+799 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+800 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+801 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+802 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+803 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+804 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+805 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+806 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+807 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+808 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+809 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+810 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+811 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+812 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+813 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+814 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+815 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+816 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+817 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+818 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+819 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+820 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+821 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+822 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+823 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+824 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+825 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+826 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+827 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+828 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+829 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+830 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+831 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+832 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+833 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+834 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+835 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+836 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+837 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+838 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+839 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+840 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+841 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+842 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+843 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+844 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+845 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+846 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+847 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+848 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+849 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+850 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+851 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+852 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+853 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+854 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+855 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+856 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+857 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+858 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+859 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+860 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+861 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+862 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+863 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+864 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+865 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+866 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+867 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+868 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+869 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+870 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+871 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+872 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+873 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+874 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+875 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+876 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+877 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+878 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+879 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+880 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+881 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+882 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+883 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+884 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+885 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+886 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+887 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+888 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+889 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+890 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+891 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+892 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+893 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+894 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+895 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+896 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+897 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+898 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+899 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+900 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+901 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+902 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+903 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+904 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+905 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+906 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+907 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+908 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+909 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+910 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+911 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+912 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+913 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+914 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+915 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+916 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+917 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+918 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+919 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+920 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+921 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+922 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+923 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+924 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+925 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+926 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+927 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+928 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+929 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+930 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+931 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+932 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+933 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+934 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+935 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+936 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+937 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+938 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+939 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+940 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+941 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+942 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+943 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+944 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+945 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+946 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+947 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+948 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+949 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+950 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+951 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+952 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+953 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+954 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+955 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+956 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+957 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+958 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+959 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+960 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+961 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+962 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+963 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+964 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+965 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+966 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+967 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+968 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+969 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+970 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+971 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+972 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+973 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+974 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+975 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+976 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+977 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+978 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+979 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+980 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+981 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+982 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+983 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+984 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+985 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+986 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+987 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+988 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+989 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+990 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+991 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+992 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+993 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+994 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+995 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+996 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+997 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+998 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+999 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1000 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1001 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1002 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1003 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1004 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1005 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1006 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1007 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1008 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1009 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1010 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1011 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1012 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1013 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1014 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1015 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1016 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1017 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1018 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1019 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1020 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1021 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1022 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1023 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1024 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1025 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1026 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1027 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1028 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1029 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1030 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1031 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1032 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1033 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1034 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1035 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1036 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1037 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1038 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1039 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1040 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1041 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1042 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1043 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1044 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1045 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1046 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1047 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1048 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1049 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1050 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1051 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1052 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1053 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1054 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1055 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1056 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1057 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1058 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1059 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1060 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1061 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1062 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1063 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1064 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1065 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1066 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1067 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1068 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1069 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1070 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1071 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1072 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1073 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1074 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1075 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1076 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1077 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1078 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1079 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1080 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1081 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1082 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1083 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1084 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1085 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1086 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1087 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1088 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1089 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1090 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1091 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1092 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1093 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1094 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1095 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1096 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1097 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1098 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1099 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1100 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1101 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1102 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1103 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1104 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1105 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1106 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1107 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1108 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1109 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1110 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1111 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1112 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1113 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1114 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1115 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1116 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1117 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1118 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1119 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1120 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1121 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1122 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1123 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1124 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1125 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1126 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1127 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1128 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1129 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1130 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1131 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1132 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1133 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1134 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1135 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1136 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1137 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1138 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1139 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1140 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1141 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1142 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1143 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1144 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1145 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1146 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1147 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1148 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1149 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1150 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1151 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1152 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1153 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1154 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1155 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1156 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1157 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1158 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1159 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1160 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1161 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1162 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1163 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1164 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1165 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1166 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1167 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1168 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1169 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1170 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1171 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1172 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1173 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1174 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1175 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1176 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1177 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1178 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1179 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1180 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1181 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1182 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1183 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1184 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1185 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1186 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1187 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1188 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1189 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1190 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1191 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1192 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1193 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1194 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1195 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1196 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1197 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1198 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1199 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1200 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1201 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1202 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1203 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1204 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1205 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1206 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1207 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1208 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1209 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1210 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1211 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1212 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1213 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1214 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1215 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1216 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1217 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1218 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1219 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1220 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1221 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1222 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1223 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1224 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1225 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1226 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1227 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1228 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1229 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1230 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1231 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1232 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1233 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1234 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1235 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1236 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1237 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1238 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1239 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1240 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1241 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1242 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1243 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1244 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1245 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1246 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1247 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1248 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1249 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1250 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1251 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1252 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1253 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1254 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1255 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1256 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1257 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1258 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1259 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1260 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1261 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1262 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1263 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1264 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1265 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1266 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1267 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1268 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1269 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1270 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1271 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1272 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1273 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1274 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1275 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1276 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1277 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1278 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1279 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1280 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1281 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1282 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1283 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1284 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1285 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1286 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1287 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1288 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1289 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1290 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1291 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1292 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1293 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1294 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1295 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1296 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1297 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1298 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1299 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1300 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1301 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1302 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1303 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1304 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1305 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1306 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1307 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1308 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1309 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1310 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1311 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1312 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1313 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1314 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1315 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1316 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1317 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1318 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1319 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1320 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1321 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1322 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1323 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1324 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1325 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1326 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1327 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1328 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1329 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1330 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1331 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1332 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1333 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1334 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1335 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1336 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1337 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1338 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1339 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1340 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1341 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1342 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1343 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1344 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1345 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1346 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1347 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1348 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1349 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1350 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1351 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1352 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1353 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1354 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1355 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1356 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1357 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1358 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1359 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1360 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1361 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1362 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1363 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1364 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1365 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1366 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1367 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1368 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1369 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1370 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1371 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1372 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1373 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1374 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1375 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1376 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1377 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1378 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1379 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1380 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1381 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1382 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1383 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1384 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1385 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1386 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1387 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1388 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1389 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1390 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1391 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1392 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1393 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1394 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1395 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1396 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1397 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1398 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1399 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1400 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1401 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1402 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1403 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1404 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1405 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1406 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1407 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1408 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1409 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1410 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1411 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1412 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1413 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1414 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1415 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1416 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1417 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1418 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1419 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1420 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1421 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1422 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1423 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1424 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1425 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1426 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1427 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1428 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1429 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1430 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1431 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1432 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1433 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1434 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1435 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1436 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1437 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1438 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1439 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1440 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1441 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1442 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1443 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1444 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1445 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1446 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1447 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1448 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1449 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1450 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1451 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1452 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1453 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1454 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1455 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1456 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1457 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1458 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1459 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1460 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1461 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1462 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1463 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1464 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1465 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1466 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1467 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1468 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1469 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1470 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1471 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1472 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1473 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1474 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1475 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1476 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1477 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1478 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1479 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1480 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1481 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1482 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1483 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1484 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1485 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1486 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1487 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1488 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1489 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1490 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1491 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1492 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1493 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1494 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1495 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1496 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1497 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1498 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1499 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1500 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1501 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1502 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1503 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1504 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1505 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1506 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1507 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1508 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1509 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1510 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1511 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1512 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1513 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1514 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1515 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1516 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1517 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1518 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1519 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1520 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1521 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1522 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1523 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1524 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1525 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1526 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1527 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1528 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1529 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1530 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1531 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1532 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1533 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1534 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1535 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1536 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1537 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1538 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1539 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1540 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1541 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1542 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1543 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1544 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1545 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1546 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1547 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1548 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1549 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1550 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1551 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1552 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1553 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1554 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1555 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1556 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1557 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1558 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1559 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1560 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1561 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1562 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1563 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1564 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1565 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1566 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1567 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1568 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1569 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1570 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1571 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1572 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1573 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1574 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1575 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1576 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1577 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1578 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1579 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1580 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1581 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1582 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1583 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1584 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1585 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1586 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1587 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1588 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1589 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1590 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1591 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1592 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1593 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1594 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1595 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1596 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1597 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1598 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1599 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1600 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1601 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1602 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1603 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1604 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1605 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1606 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1607 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1608 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1609 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1610 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1611 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1612 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1613 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1614 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1615 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1616 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1617 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1618 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1619 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1620 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1621 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1622 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1623 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1624 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1625 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1626 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1627 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1628 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1629 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1630 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1631 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1632 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1633 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1634 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1635 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1636 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1637 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1638 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1639 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1640 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1641 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1642 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1643 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1644 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1645 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1646 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1647 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1648 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1649 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1650 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1651 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1652 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1653 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1654 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1655 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1656 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1657 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1658 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1659 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1660 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1661 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1662 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1663 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1664 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1665 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1666 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1667 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1668 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1669 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1670 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1671 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1672 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1673 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1674 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1675 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1676 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1677 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1678 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1679 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1680 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1681 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1682 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1683 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1684 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1685 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1686 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1687 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1688 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1689 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1690 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1691 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1692 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1693 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1694 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1695 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1696 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1697 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1698 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1699 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1700 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1701 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1702 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1703 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1704 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1705 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1706 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1707 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1708 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1709 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1710 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1711 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1712 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1713 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1714 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1715 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1716 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1717 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1718 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1719 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1720 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1721 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1722 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1723 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1724 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1725 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1726 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1727 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1728 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1729 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1730 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1731 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1732 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1733 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1734 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1735 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1736 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1737 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1738 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1739 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1740 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1741 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1742 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1743 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1744 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1745 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1746 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1747 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1748 - UF_FLAG_PRIVATE, // PLAYER_FIELD_QUEST_COMPLETED+1749 - UF_FLAG_PRIVATE, // PLAYER_FIELD_HONOR - UF_FLAG_PRIVATE, // PLAYER_FIELD_HONOR_NEXT_LEVEL + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+12 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+13 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+14 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+15 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+16 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+17 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+18 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+19 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+20 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+21 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+22 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+23 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+24 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+25 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+26 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+27 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+28 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+29 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+30 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+31 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+32 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+33 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+34 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+35 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+36 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+37 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+38 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+39 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+40 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+41 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+42 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+43 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+44 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+45 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+46 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+47 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+48 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+49 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+50 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+51 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+52 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+53 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+54 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+55 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+56 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+57 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+58 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+59 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+60 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+61 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+62 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+63 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+64 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+65 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+66 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+67 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+68 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+69 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+70 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+71 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+72 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+73 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+74 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+75 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+76 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+77 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+78 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+79 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+80 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+81 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+82 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+83 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+84 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+85 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+86 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+87 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+88 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+89 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+90 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+91 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+92 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+93 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+94 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+95 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+96 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+97 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+98 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+99 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+100 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+101 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+102 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+103 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+104 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+105 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+106 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+107 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+108 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+109 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+110 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+111 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+112 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+113 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+114 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+115 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+116 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+117 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+118 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+119 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+120 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+121 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+122 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+123 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+124 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+125 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+126 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+127 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+128 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+129 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+130 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+131 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+132 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+133 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+134 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+135 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+136 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+137 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+138 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+139 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+140 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+141 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+142 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+143 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+144 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+145 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+146 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+147 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+148 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+149 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+150 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+151 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+152 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+153 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+154 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+155 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+156 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+157 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+158 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+159 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+160 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+161 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+162 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+163 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+164 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+165 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+166 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+167 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+168 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+169 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+170 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+171 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+172 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+173 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+174 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+175 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+176 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+177 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+178 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+179 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+180 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+181 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+182 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+183 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+184 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+185 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+186 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+187 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+188 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+189 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+190 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+191 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+192 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+193 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+194 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+195 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+196 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+197 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+198 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+199 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+200 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+201 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+202 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+203 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+204 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+205 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+206 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+207 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+208 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+209 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+210 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+211 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+212 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+213 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+214 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+215 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+216 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+217 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+218 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+219 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+220 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+221 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+222 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+223 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+224 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+225 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+226 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+227 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+228 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+229 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+230 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+231 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+232 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+233 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+234 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+235 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+236 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+237 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+238 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+239 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+240 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+241 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+242 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+243 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+244 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+245 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+246 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+247 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+248 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+249 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+250 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+251 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+252 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+253 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+254 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+255 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+256 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+257 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+258 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+259 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+260 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+261 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+262 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+263 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+264 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+265 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+266 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+267 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+268 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+269 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+270 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+271 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+272 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+273 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+274 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+275 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+276 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+277 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+278 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+279 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+280 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+281 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+282 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+283 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+284 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+285 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+286 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+287 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+288 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+289 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+290 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+291 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+292 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+293 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+294 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+295 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+296 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+297 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+298 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+299 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+300 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+301 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+302 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+303 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+304 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+305 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+306 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+307 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+308 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+309 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+310 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+311 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+312 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+313 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+314 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+315 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+316 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+317 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+318 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+319 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+320 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+321 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+322 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+323 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+324 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+325 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+326 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+327 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+328 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+329 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+330 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+331 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+332 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+333 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+334 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+335 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+336 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+337 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+338 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+339 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+340 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+341 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+342 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+343 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+344 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+345 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+346 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+347 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+348 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+349 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+350 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+351 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+352 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+353 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+354 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+355 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+356 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+357 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+358 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+359 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+360 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+361 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+362 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+363 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+364 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+365 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+366 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+367 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+368 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+369 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+370 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+371 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+372 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+373 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+374 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+375 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+376 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+377 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+378 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+379 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+380 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+381 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+382 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+383 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+384 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+385 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+386 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+387 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+388 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+389 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+390 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+391 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+392 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+393 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+394 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+395 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+396 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+397 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+398 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+399 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+400 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+401 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+402 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+403 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+404 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+405 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+406 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+407 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+408 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+409 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+410 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+411 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+412 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+413 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+414 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+415 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+416 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+417 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+418 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+419 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+420 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+421 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+422 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+423 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+424 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+425 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+426 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+427 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+428 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+429 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+430 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+431 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+432 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+433 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+434 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+435 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+436 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+437 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+438 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+439 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+440 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+441 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+442 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+443 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+444 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+445 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+446 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+447 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+448 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+449 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+450 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+451 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+452 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+453 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+454 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+455 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+456 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+457 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+458 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+459 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+460 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+461 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+462 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+463 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+464 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+465 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+466 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+467 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+468 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+469 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+470 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+471 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+472 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+473 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+474 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+475 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+476 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+477 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+478 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+479 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+480 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+481 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+482 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+483 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+484 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+485 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+486 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+487 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+488 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+489 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+490 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+491 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+492 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+493 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+494 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+495 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+496 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+497 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+498 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+499 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+500 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+501 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+502 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+503 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+504 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+505 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+506 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+507 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+508 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+509 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+510 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+511 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+512 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+513 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+514 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+515 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+516 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+517 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+518 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+519 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+520 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+521 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+522 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+523 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+524 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+525 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+526 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+527 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+528 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+529 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+530 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+531 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+532 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+533 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+534 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+535 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+536 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+537 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+538 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+539 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+540 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+541 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+542 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+543 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+544 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+545 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+546 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+547 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+548 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+549 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+550 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+551 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+552 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+553 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+554 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+555 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+556 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+557 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+558 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+559 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+560 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+561 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+562 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+563 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+564 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+565 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+566 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+567 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+568 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+569 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+570 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+571 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+572 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+573 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+574 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+575 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+576 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+577 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+578 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+579 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+580 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+581 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+582 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+583 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+584 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+585 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+586 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+587 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+588 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+589 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+590 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+591 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+592 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+593 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+594 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+595 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+596 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+597 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+598 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+599 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+600 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+601 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+602 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+603 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+604 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+605 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+606 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+607 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+608 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+609 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+610 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+611 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+612 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+613 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+614 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+615 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+616 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+617 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+618 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+619 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+620 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+621 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+622 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+623 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+624 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+625 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+626 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+627 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+628 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+629 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+630 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+631 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+632 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+633 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+634 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+635 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+636 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+637 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+638 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+639 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+640 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+641 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+642 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+643 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+644 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+645 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+646 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+647 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+648 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+649 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+650 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+651 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+652 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+653 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+654 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+655 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+656 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+657 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+658 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+659 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+660 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+661 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+662 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+663 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+664 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+665 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+666 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+667 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+668 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+669 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+670 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+671 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+672 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+673 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+674 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+675 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+676 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+677 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+678 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+679 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+680 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+681 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+682 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+683 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+684 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+685 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+686 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+687 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+688 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+689 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+690 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+691 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+692 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+693 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+694 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+695 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+696 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+697 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+698 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+699 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+700 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+701 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+702 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+703 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+704 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+705 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+706 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+707 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+708 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+709 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+710 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+711 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+712 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+713 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+714 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+715 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+716 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+717 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+718 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+719 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+720 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+721 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+722 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+723 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+724 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+725 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+726 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+727 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+728 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+729 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+730 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+731 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+732 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+733 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+734 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+735 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+736 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+737 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+738 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+739 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+740 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+741 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+742 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+743 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+744 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+745 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+746 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+747 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+748 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+749 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+750 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+751 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+752 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+753 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+754 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+755 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+756 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+757 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+758 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+759 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+760 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+761 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+762 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+763 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+764 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+765 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+766 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+767 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+768 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+769 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+770 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+771 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+772 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+773 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+774 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+775 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+776 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+777 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+778 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD+779 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_FARSIGHT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_FARSIGHT+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_FARSIGHT+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_FARSIGHT+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KNOWN_TITLES+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COINAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COINAGE+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_XP + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_NEXT_LEVEL_XP + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_TRIAL_XP + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+12 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+13 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+14 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+15 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+16 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+17 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+18 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+19 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+20 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+21 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+22 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+23 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+24 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+25 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+26 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+27 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+28 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+29 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+30 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+31 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+32 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+33 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+34 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+35 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+36 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+37 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+38 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+39 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+40 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+41 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+42 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+43 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+44 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+45 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+46 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+47 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+48 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+49 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+50 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+51 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+52 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+53 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+54 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+55 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+56 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+57 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+58 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+59 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+60 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+61 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+62 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+63 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+64 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+65 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+66 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+67 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+68 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+69 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+70 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+71 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+72 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+73 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+74 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+75 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+76 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+77 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+78 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+79 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+80 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+81 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+82 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+83 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+84 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+85 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+86 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+87 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+88 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+89 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+90 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+91 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+92 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+93 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+94 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+95 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+96 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+97 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+98 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+99 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+100 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+101 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+102 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+103 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+104 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+105 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+106 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+107 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+108 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+109 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+110 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+111 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+112 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+113 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+114 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+115 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+116 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+117 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+118 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+119 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+120 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+121 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+122 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+123 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+124 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+125 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+126 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+127 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+128 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+129 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+130 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+131 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+132 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+133 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+134 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+135 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+136 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+137 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+138 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+139 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+140 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+141 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+142 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+143 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+144 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+145 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+146 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+147 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+148 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+149 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+150 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+151 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+152 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+153 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+154 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+155 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+156 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+157 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+158 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+159 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+160 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+161 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+162 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+163 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+164 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+165 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+166 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+167 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+168 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+169 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+170 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+171 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+172 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+173 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+174 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+175 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+176 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+177 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+178 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+179 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+180 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+181 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+182 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+183 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+184 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+185 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+186 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+187 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+188 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+189 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+190 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+191 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+192 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+193 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+194 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+195 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+196 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+197 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+198 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+199 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+200 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+201 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+202 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+203 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+204 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+205 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+206 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+207 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+208 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+209 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+210 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+211 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+212 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+213 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+214 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+215 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+216 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+217 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+218 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+219 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+220 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+221 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+222 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+223 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+224 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+225 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+226 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+227 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+228 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+229 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+230 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+231 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+232 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+233 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+234 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+235 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+236 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+237 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+238 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+239 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+240 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+241 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+242 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+243 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+244 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+245 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+246 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+247 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+248 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+249 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+250 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+251 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+252 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+253 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+254 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+255 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+256 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+257 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+258 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+259 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+260 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+261 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+262 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+263 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+264 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+265 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+266 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+267 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+268 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+269 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+270 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+271 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+272 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+273 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+274 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+275 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+276 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+277 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+278 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+279 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+280 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+281 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+282 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+283 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+284 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+285 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+286 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+287 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+288 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+289 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+290 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+291 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+292 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+293 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+294 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+295 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+296 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+297 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+298 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+299 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+300 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+301 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+302 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+303 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+304 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+305 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+306 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+307 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+308 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+309 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+310 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+311 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+312 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+313 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+314 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+315 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+316 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+317 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+318 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+319 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+320 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+321 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+322 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+323 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+324 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+325 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+326 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+327 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+328 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+329 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+330 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+331 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+332 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+333 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+334 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+335 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+336 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+337 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+338 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+339 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+340 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+341 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+342 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+343 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+344 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+345 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+346 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+347 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+348 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+349 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+350 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+351 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+352 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+353 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+354 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+355 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+356 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+357 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+358 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+359 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+360 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+361 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+362 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+363 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+364 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+365 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+366 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+367 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+368 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+369 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+370 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+371 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+372 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+373 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+374 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+375 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+376 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+377 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+378 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+379 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+380 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+381 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+382 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+383 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+384 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+385 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+386 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+387 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+388 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+389 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+390 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+391 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+392 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+393 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+394 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+395 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+396 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+397 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+398 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+399 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+400 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+401 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+402 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+403 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+404 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+405 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+406 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+407 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+408 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+409 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+410 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+411 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+412 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+413 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+414 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+415 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+416 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+417 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+418 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+419 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+420 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+421 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+422 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+423 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+424 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+425 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+426 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+427 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+428 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+429 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+430 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+431 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+432 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+433 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+434 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+435 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+436 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+437 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+438 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+439 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+440 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+441 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+442 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+443 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+444 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+445 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+446 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+447 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+448 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+449 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+450 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+451 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+452 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+453 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+454 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+455 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+456 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+457 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+458 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+459 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+460 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+461 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+462 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+463 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+464 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+465 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+466 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+467 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+468 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+469 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+470 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+471 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+472 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+473 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+474 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+475 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+476 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+477 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+478 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+479 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+480 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+481 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+482 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+483 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+484 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+485 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+486 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+487 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+488 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+489 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+490 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+491 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+492 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+493 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+494 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+495 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+496 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+497 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+498 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+499 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+500 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+501 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+502 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+503 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+504 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+505 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+506 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+507 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+508 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+509 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+510 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+511 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+512 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+513 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+514 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+515 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+516 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+517 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+518 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+519 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+520 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+521 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+522 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+523 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+524 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+525 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+526 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+527 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+528 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+529 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+530 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+531 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+532 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+533 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+534 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+535 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+536 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+537 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+538 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+539 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+540 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+541 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+542 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+543 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+544 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+545 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+546 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+547 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+548 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+549 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+550 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+551 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+552 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+553 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+554 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+555 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+556 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+557 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+558 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+559 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+560 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+561 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+562 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+563 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+564 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+565 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+566 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+567 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+568 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+569 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+570 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+571 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+572 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+573 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+574 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+575 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+576 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+577 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+578 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+579 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+580 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+581 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+582 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+583 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+584 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+585 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+586 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+587 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+588 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+589 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+590 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+591 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+592 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+593 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+594 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+595 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+596 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+597 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+598 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+599 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+600 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+601 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+602 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+603 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+604 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+605 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+606 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+607 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+608 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+609 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+610 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+611 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+612 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+613 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+614 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+615 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+616 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+617 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+618 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+619 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+620 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+621 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+622 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+623 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+624 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+625 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+626 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+627 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+628 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+629 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+630 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+631 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+632 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+633 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+634 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+635 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+636 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+637 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+638 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+639 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+640 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+641 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+642 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+643 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+644 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+645 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+646 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+647 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+648 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+649 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+650 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+651 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+652 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+653 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+654 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+655 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+656 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+657 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+658 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+659 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+660 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+661 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+662 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+663 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+664 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+665 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+666 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+667 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+668 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+669 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+670 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+671 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+672 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+673 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+674 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+675 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+676 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+677 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+678 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+679 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+680 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+681 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+682 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+683 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+684 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+685 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+686 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+687 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+688 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+689 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+690 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+691 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+692 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+693 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+694 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+695 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+696 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+697 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+698 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+699 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+700 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+701 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+702 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+703 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+704 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+705 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+706 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+707 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+708 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+709 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+710 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+711 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+712 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+713 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+714 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+715 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+716 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+717 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+718 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+719 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+720 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+721 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+722 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+723 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+724 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+725 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+726 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+727 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+728 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+729 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+730 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+731 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+732 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+733 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+734 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+735 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+736 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+737 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+738 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+739 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+740 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+741 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+742 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+743 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+744 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+745 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+746 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+747 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+748 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+749 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+750 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+751 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+752 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+753 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+754 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+755 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+756 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+757 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+758 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+759 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+760 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+761 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+762 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+763 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+764 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+765 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+766 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+767 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+768 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+769 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+770 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+771 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+772 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+773 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+774 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+775 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+776 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+777 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+778 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+779 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+780 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+781 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+782 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+783 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+784 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+785 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+786 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+787 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+788 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+789 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+790 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+791 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+792 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+793 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+794 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+795 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+796 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+797 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+798 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+799 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+800 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+801 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+802 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+803 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+804 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+805 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+806 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+807 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+808 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+809 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+810 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+811 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+812 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+813 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+814 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+815 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+816 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+817 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+818 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+819 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+820 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+821 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+822 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+823 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+824 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+825 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+826 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+827 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+828 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+829 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+830 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+831 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+832 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+833 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+834 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+835 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+836 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+837 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+838 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+839 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+840 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+841 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+842 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+843 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+844 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+845 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+846 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+847 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+848 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+849 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+850 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+851 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+852 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+853 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+854 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+855 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+856 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+857 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+858 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+859 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+860 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+861 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+862 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+863 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+864 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+865 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+866 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+867 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+868 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+869 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+870 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+871 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+872 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+873 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+874 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+875 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+876 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+877 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+878 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+879 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+880 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+881 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+882 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+883 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+884 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+885 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+886 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+887 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+888 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+889 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+890 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+891 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+892 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+893 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+894 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SKILL_LINEID+895 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_CHARACTER_POINTS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MAX_TALENT_TIERS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_TRACK_CREATURES + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_TRACK_RESOURCES + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_TRACK_RESOURCES+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPERTISE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_OFFHAND_EXPERTISE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_RANGED_EXPERTISE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING_EXPERTISE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BLOCK_PERCENTAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_DODGE_PERCENTAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_DODGE_PERCENTAGE_FROM_ATTRIBUTE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PARRY_PERCENTAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PARRY_PERCENTAGE_FROM_ATTRIBUTE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_CRIT_PERCENTAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_RANGED_CRIT_PERCENTAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_OFFHAND_CRIT_PERCENTAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SPELL_CRIT_PERCENTAGE1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SHIELD_BLOCK + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SHIELD_BLOCK_CRIT_PERCENTAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MASTERY + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SPEED + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_AVOIDANCE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_STURDINESS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_VERSATILITY + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_VERSATILITY_BONUS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PVP_POWER_DAMAGE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PVP_POWER_HEALING + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+12 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+13 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+14 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+15 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+16 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+17 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+18 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+19 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+20 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+21 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+22 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+23 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+24 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+25 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+26 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+27 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+28 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+29 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+30 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+31 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+32 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+33 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+34 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+35 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+36 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+37 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+38 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+39 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+40 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+41 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+42 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+43 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+44 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+45 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+46 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+47 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+48 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+49 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+50 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+51 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+52 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+53 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+54 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+55 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+56 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+57 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+58 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+59 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+60 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+61 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+62 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+63 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+64 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+65 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+66 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+67 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+68 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+69 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+70 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+71 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+72 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+73 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+74 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+75 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+76 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+77 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+78 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+79 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+80 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+81 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+82 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+83 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+84 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+85 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+86 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+87 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+88 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+89 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+90 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+91 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+92 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+93 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+94 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+95 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+96 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+97 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+98 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+99 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+100 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+101 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+102 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+103 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+104 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+105 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+106 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+107 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+108 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+109 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+110 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+111 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+112 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+113 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+114 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+115 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+116 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+117 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+118 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+119 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+120 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+121 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+122 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+123 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+124 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+125 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+126 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+127 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+128 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+129 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+130 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+131 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+132 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+133 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+134 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+135 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+136 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+137 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+138 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+139 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+140 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+141 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+142 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+143 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+144 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+145 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+146 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+147 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+148 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+149 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+150 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+151 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+152 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+153 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+154 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+155 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+156 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+157 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+158 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+159 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+160 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+161 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+162 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+163 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+164 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+165 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+166 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+167 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+168 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+169 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+170 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+171 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+172 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+173 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+174 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+175 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+176 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+177 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+178 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+179 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+180 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+181 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+182 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+183 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+184 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+185 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+186 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+187 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+188 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+189 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+190 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+191 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+192 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+193 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+194 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+195 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+196 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+197 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+198 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+199 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+200 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+201 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+202 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+203 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+204 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+205 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+206 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+207 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+208 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+209 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+210 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+211 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+212 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+213 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+214 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+215 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+216 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+217 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+218 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+219 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+220 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+221 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+222 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+223 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+224 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+225 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+226 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+227 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+228 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+229 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+230 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+231 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+232 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+233 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+234 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+235 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+236 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+237 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+238 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+239 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+240 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+241 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+242 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+243 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+244 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+245 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+246 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+247 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+248 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+249 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+250 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+251 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+252 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+253 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+254 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+255 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+256 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+257 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+258 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+259 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+260 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+261 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+262 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+263 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+264 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+265 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+266 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+267 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+268 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+269 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+270 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+271 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+272 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+273 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+274 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+275 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+276 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+277 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+278 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+279 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+280 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+281 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+282 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+283 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+284 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+285 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+286 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+287 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+288 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+289 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+290 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+291 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+292 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+293 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+294 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+295 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+296 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+297 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+298 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+299 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+300 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+301 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+302 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+303 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+304 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+305 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+306 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+307 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+308 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+309 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+310 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+311 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+312 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+313 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+314 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+315 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+316 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+317 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+318 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_EXPLORED_ZONES+319 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_REST_INFO + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_REST_INFO+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_REST_INFO+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_REST_INFO+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_POS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_HEALING_PCT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_PCT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_PERIODIC_HEALING_DONE_PERCENT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_SPELL_POWER_PCT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_RESILIENCE_PERCENT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_TARGET_RESISTANCE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_LOCAL_FLAGS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BYTES + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PVP_MEDALS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_PRICE+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_KILLS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_WATCHED_FACTION_INDEX + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+12 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+13 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+14 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+15 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+16 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+17 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+18 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+19 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+20 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+21 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+22 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+23 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+24 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+25 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+26 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+27 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+28 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+29 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+30 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_COMBAT_RATING+31 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+12 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+13 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+14 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+15 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+16 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+17 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+18 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+19 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+20 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+21 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+22 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+23 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+24 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+25 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+26 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+27 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+28 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+29 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+30 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+31 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+32 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+33 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+34 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+35 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+36 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+37 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+38 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+39 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+40 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+41 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+42 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+43 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+44 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+45 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+46 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+47 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+48 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+49 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+50 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+51 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+52 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO+53 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MAX_LEVEL + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MAX_CREATURE_SCALING_LEVEL + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_NO_REAGENT_COST + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_NO_REAGENT_COST+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_NO_REAGENT_COST+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_NO_REAGENT_COST+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PET_SPELL_POWER + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_UI_HIT_MODIFIER + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_UI_SPELL_HIT_MODIFIER + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_HOME_REALM_TIME_OFFSET + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_MOD_PET_HASTE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BYTES2 + UF_FLAG_PUBLIC | UF_FLAG_URGENT_SELF_ONLY, // ACTIVE_PLAYER_FIELD_BYTES3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_LFG_BONUS_FACTION_ID + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_LOOT_SPEC_ID + UF_FLAG_PUBLIC | UF_FLAG_URGENT_SELF_ONLY, // ACTIVE_PLAYER_FIELD_OVERRIDE_ZONE_PVP_TYPE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BAG_SLOT_FLAGS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BAG_SLOT_FLAGS+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BAG_SLOT_FLAGS+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BAG_SLOT_FLAGS+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BANK_BAG_SLOT_FLAGS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_BANK_BAG_SLOT_FLAGS+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_INSERT_ITEMS_LEFT_TO_RIGHT + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+2 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+3 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+4 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+5 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+6 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+7 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+8 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+9 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+10 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+11 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+12 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+13 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+14 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+15 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+16 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+17 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+18 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+19 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+20 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+21 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+22 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+23 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+24 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+25 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+26 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+27 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+28 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+29 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+30 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+31 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+32 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+33 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+34 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+35 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+36 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+37 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+38 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+39 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+40 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+41 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+42 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+43 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+44 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+45 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+46 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+47 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+48 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+49 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+50 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+51 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+52 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+53 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+54 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+55 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+56 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+57 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+58 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+59 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+60 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+61 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+62 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+63 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+64 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+65 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+66 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+67 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+68 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+69 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+70 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+71 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+72 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+73 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+74 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+75 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+76 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+77 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+78 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+79 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+80 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+81 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+82 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+83 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+84 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+85 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+86 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+87 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+88 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+89 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+90 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+91 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+92 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+93 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+94 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+95 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+96 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+97 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+98 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+99 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+100 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+101 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+102 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+103 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+104 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+105 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+106 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+107 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+108 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+109 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+110 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+111 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+112 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+113 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+114 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+115 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+116 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+117 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+118 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+119 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+120 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+121 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+122 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+123 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+124 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+125 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+126 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+127 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+128 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+129 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+130 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+131 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+132 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+133 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+134 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+135 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+136 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+137 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+138 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+139 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+140 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+141 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+142 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+143 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+144 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+145 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+146 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+147 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+148 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+149 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+150 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+151 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+152 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+153 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+154 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+155 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+156 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+157 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+158 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+159 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+160 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+161 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+162 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+163 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+164 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+165 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+166 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+167 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+168 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+169 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+170 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+171 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+172 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+173 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+174 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+175 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+176 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+177 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+178 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+179 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+180 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+181 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+182 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+183 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+184 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+185 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+186 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+187 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+188 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+189 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+190 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+191 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+192 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+193 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+194 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+195 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+196 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+197 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+198 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+199 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+200 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+201 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+202 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+203 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+204 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+205 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+206 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+207 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+208 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+209 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+210 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+211 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+212 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+213 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+214 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+215 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+216 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+217 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+218 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+219 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+220 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+221 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+222 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+223 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+224 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+225 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+226 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+227 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+228 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+229 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+230 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+231 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+232 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+233 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+234 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+235 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+236 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+237 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+238 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+239 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+240 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+241 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+242 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+243 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+244 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+245 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+246 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+247 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+248 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+249 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+250 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+251 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+252 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+253 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+254 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+255 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+256 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+257 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+258 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+259 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+260 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+261 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+262 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+263 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+264 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+265 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+266 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+267 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+268 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+269 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+270 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+271 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+272 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+273 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+274 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+275 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+276 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+277 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+278 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+279 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+280 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+281 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+282 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+283 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+284 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+285 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+286 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+287 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+288 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+289 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+290 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+291 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+292 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+293 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+294 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+295 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+296 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+297 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+298 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+299 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+300 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+301 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+302 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+303 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+304 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+305 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+306 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+307 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+308 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+309 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+310 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+311 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+312 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+313 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+314 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+315 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+316 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+317 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+318 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+319 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+320 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+321 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+322 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+323 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+324 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+325 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+326 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+327 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+328 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+329 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+330 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+331 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+332 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+333 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+334 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+335 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+336 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+337 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+338 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+339 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+340 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+341 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+342 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+343 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+344 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+345 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+346 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+347 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+348 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+349 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+350 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+351 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+352 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+353 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+354 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+355 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+356 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+357 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+358 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+359 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+360 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+361 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+362 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+363 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+364 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+365 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+366 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+367 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+368 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+369 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+370 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+371 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+372 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+373 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+374 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+375 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+376 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+377 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+378 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+379 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+380 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+381 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+382 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+383 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+384 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+385 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+386 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+387 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+388 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+389 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+390 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+391 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+392 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+393 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+394 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+395 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+396 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+397 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+398 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+399 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+400 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+401 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+402 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+403 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+404 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+405 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+406 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+407 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+408 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+409 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+410 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+411 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+412 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+413 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+414 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+415 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+416 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+417 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+418 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+419 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+420 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+421 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+422 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+423 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+424 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+425 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+426 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+427 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+428 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+429 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+430 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+431 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+432 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+433 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+434 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+435 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+436 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+437 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+438 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+439 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+440 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+441 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+442 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+443 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+444 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+445 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+446 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+447 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+448 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+449 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+450 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+451 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+452 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+453 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+454 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+455 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+456 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+457 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+458 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+459 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+460 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+461 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+462 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+463 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+464 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+465 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+466 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+467 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+468 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+469 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+470 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+471 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+472 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+473 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+474 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+475 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+476 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+477 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+478 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+479 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+480 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+481 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+482 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+483 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+484 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+485 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+486 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+487 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+488 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+489 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+490 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+491 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+492 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+493 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+494 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+495 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+496 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+497 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+498 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+499 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+500 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+501 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+502 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+503 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+504 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+505 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+506 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+507 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+508 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+509 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+510 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+511 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+512 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+513 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+514 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+515 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+516 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+517 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+518 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+519 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+520 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+521 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+522 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+523 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+524 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+525 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+526 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+527 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+528 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+529 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+530 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+531 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+532 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+533 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+534 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+535 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+536 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+537 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+538 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+539 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+540 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+541 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+542 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+543 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+544 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+545 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+546 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+547 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+548 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+549 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+550 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+551 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+552 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+553 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+554 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+555 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+556 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+557 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+558 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+559 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+560 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+561 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+562 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+563 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+564 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+565 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+566 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+567 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+568 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+569 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+570 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+571 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+572 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+573 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+574 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+575 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+576 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+577 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+578 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+579 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+580 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+581 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+582 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+583 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+584 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+585 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+586 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+587 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+588 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+589 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+590 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+591 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+592 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+593 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+594 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+595 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+596 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+597 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+598 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+599 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+600 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+601 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+602 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+603 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+604 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+605 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+606 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+607 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+608 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+609 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+610 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+611 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+612 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+613 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+614 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+615 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+616 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+617 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+618 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+619 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+620 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+621 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+622 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+623 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+624 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+625 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+626 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+627 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+628 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+629 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+630 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+631 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+632 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+633 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+634 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+635 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+636 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+637 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+638 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+639 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+640 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+641 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+642 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+643 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+644 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+645 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+646 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+647 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+648 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+649 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+650 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+651 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+652 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+653 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+654 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+655 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+656 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+657 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+658 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+659 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+660 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+661 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+662 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+663 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+664 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+665 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+666 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+667 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+668 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+669 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+670 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+671 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+672 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+673 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+674 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+675 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+676 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+677 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+678 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+679 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+680 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+681 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+682 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+683 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+684 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+685 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+686 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+687 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+688 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+689 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+690 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+691 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+692 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+693 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+694 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+695 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+696 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+697 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+698 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+699 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+700 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+701 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+702 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+703 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+704 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+705 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+706 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+707 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+708 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+709 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+710 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+711 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+712 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+713 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+714 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+715 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+716 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+717 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+718 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+719 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+720 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+721 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+722 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+723 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+724 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+725 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+726 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+727 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+728 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+729 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+730 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+731 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+732 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+733 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+734 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+735 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+736 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+737 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+738 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+739 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+740 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+741 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+742 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+743 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+744 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+745 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+746 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+747 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+748 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+749 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+750 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+751 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+752 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+753 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+754 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+755 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+756 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+757 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+758 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+759 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+760 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+761 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+762 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+763 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+764 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+765 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+766 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+767 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+768 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+769 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+770 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+771 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+772 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+773 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+774 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+775 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+776 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+777 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+778 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+779 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+780 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+781 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+782 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+783 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+784 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+785 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+786 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+787 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+788 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+789 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+790 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+791 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+792 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+793 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+794 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+795 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+796 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+797 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+798 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+799 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+800 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+801 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+802 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+803 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+804 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+805 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+806 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+807 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+808 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+809 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+810 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+811 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+812 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+813 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+814 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+815 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+816 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+817 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+818 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+819 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+820 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+821 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+822 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+823 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+824 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+825 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+826 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+827 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+828 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+829 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+830 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+831 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+832 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+833 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+834 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+835 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+836 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+837 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+838 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+839 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+840 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+841 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+842 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+843 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+844 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+845 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+846 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+847 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+848 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+849 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+850 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+851 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+852 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+853 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+854 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+855 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+856 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+857 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+858 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+859 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+860 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+861 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+862 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+863 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+864 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+865 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+866 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+867 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+868 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+869 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+870 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+871 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+872 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+873 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+874 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+875 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+876 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+877 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+878 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+879 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+880 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+881 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+882 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+883 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+884 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+885 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+886 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+887 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+888 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+889 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+890 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+891 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+892 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+893 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+894 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+895 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+896 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+897 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+898 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+899 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+900 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+901 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+902 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+903 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+904 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+905 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+906 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+907 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+908 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+909 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+910 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+911 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+912 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+913 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+914 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+915 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+916 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+917 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+918 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+919 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+920 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+921 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+922 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+923 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+924 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+925 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+926 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+927 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+928 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+929 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+930 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+931 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+932 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+933 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+934 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+935 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+936 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+937 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+938 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+939 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+940 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+941 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+942 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+943 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+944 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+945 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+946 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+947 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+948 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+949 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+950 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+951 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+952 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+953 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+954 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+955 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+956 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+957 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+958 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+959 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+960 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+961 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+962 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+963 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+964 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+965 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+966 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+967 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+968 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+969 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+970 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+971 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+972 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+973 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+974 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+975 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+976 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+977 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+978 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+979 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+980 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+981 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+982 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+983 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+984 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+985 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+986 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+987 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+988 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+989 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+990 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+991 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+992 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+993 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+994 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+995 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+996 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+997 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+998 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+999 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1000 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1001 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1002 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1003 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1004 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1005 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1006 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1007 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1008 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1009 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1010 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1011 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1012 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1013 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1014 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1015 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1016 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1017 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1018 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1019 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1020 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1021 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1022 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1023 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1024 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1025 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1026 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1027 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1028 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1029 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1030 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1031 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1032 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1033 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1034 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1035 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1036 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1037 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1038 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1039 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1040 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1041 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1042 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1043 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1044 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1045 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1046 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1047 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1048 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1049 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1050 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1051 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1052 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1053 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1054 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1055 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1056 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1057 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1058 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1059 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1060 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1061 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1062 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1063 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1064 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1065 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1066 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1067 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1068 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1069 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1070 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1071 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1072 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1073 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1074 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1075 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1076 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1077 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1078 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1079 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1080 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1081 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1082 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1083 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1084 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1085 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1086 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1087 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1088 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1089 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1090 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1091 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1092 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1093 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1094 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1095 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1096 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1097 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1098 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1099 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1100 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1101 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1102 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1103 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1104 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1105 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1106 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1107 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1108 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1109 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1110 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1111 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1112 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1113 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1114 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1115 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1116 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1117 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1118 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1119 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1120 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1121 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1122 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1123 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1124 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1125 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1126 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1127 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1128 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1129 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1130 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1131 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1132 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1133 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1134 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1135 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1136 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1137 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1138 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1139 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1140 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1141 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1142 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1143 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1144 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1145 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1146 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1147 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1148 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1149 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1150 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1151 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1152 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1153 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1154 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1155 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1156 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1157 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1158 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1159 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1160 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1161 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1162 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1163 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1164 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1165 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1166 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1167 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1168 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1169 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1170 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1171 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1172 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1173 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1174 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1175 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1176 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1177 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1178 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1179 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1180 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1181 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1182 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1183 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1184 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1185 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1186 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1187 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1188 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1189 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1190 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1191 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1192 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1193 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1194 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1195 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1196 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1197 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1198 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1199 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1200 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1201 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1202 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1203 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1204 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1205 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1206 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1207 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1208 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1209 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1210 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1211 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1212 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1213 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1214 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1215 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1216 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1217 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1218 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1219 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1220 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1221 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1222 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1223 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1224 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1225 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1226 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1227 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1228 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1229 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1230 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1231 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1232 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1233 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1234 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1235 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1236 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1237 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1238 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1239 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1240 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1241 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1242 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1243 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1244 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1245 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1246 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1247 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1248 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1249 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1250 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1251 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1252 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1253 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1254 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1255 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1256 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1257 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1258 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1259 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1260 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1261 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1262 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1263 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1264 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1265 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1266 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1267 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1268 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1269 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1270 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1271 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1272 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1273 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1274 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1275 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1276 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1277 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1278 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1279 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1280 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1281 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1282 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1283 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1284 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1285 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1286 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1287 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1288 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1289 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1290 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1291 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1292 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1293 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1294 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1295 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1296 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1297 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1298 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1299 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1300 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1301 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1302 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1303 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1304 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1305 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1306 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1307 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1308 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1309 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1310 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1311 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1312 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1313 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1314 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1315 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1316 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1317 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1318 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1319 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1320 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1321 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1322 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1323 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1324 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1325 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1326 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1327 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1328 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1329 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1330 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1331 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1332 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1333 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1334 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1335 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1336 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1337 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1338 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1339 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1340 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1341 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1342 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1343 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1344 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1345 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1346 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1347 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1348 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1349 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1350 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1351 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1352 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1353 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1354 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1355 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1356 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1357 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1358 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1359 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1360 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1361 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1362 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1363 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1364 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1365 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1366 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1367 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1368 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1369 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1370 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1371 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1372 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1373 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1374 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1375 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1376 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1377 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1378 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1379 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1380 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1381 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1382 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1383 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1384 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1385 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1386 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1387 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1388 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1389 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1390 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1391 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1392 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1393 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1394 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1395 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1396 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1397 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1398 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1399 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1400 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1401 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1402 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1403 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1404 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1405 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1406 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1407 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1408 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1409 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1410 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1411 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1412 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1413 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1414 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1415 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1416 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1417 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1418 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1419 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1420 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1421 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1422 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1423 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1424 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1425 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1426 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1427 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1428 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1429 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1430 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1431 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1432 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1433 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1434 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1435 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1436 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1437 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1438 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1439 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1440 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1441 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1442 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1443 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1444 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1445 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1446 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1447 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1448 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1449 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1450 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1451 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1452 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1453 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1454 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1455 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1456 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1457 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1458 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1459 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1460 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1461 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1462 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1463 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1464 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1465 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1466 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1467 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1468 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1469 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1470 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1471 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1472 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1473 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1474 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1475 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1476 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1477 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1478 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1479 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1480 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1481 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1482 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1483 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1484 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1485 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1486 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1487 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1488 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1489 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1490 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1491 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1492 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1493 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1494 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1495 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1496 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1497 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1498 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1499 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1500 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1501 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1502 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1503 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1504 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1505 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1506 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1507 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1508 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1509 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1510 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1511 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1512 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1513 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1514 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1515 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1516 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1517 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1518 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1519 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1520 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1521 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1522 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1523 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1524 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1525 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1526 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1527 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1528 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1529 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1530 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1531 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1532 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1533 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1534 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1535 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1536 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1537 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1538 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1539 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1540 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1541 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1542 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1543 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1544 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1545 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1546 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1547 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1548 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1549 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1550 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1551 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1552 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1553 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1554 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1555 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1556 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1557 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1558 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1559 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1560 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1561 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1562 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1563 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1564 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1565 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1566 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1567 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1568 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1569 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1570 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1571 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1572 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1573 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1574 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1575 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1576 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1577 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1578 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1579 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1580 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1581 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1582 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1583 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1584 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1585 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1586 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1587 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1588 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1589 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1590 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1591 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1592 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1593 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1594 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1595 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1596 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1597 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1598 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1599 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1600 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1601 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1602 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1603 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1604 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1605 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1606 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1607 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1608 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1609 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1610 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1611 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1612 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1613 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1614 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1615 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1616 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1617 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1618 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1619 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1620 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1621 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1622 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1623 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1624 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1625 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1626 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1627 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1628 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1629 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1630 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1631 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1632 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1633 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1634 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1635 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1636 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1637 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1638 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1639 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1640 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1641 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1642 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1643 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1644 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1645 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1646 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1647 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1648 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1649 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1650 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1651 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1652 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1653 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1654 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1655 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1656 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1657 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1658 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1659 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1660 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1661 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1662 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1663 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1664 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1665 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1666 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1667 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1668 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1669 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1670 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1671 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1672 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1673 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1674 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1675 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1676 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1677 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1678 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1679 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1680 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1681 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1682 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1683 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1684 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1685 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1686 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1687 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1688 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1689 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1690 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1691 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1692 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1693 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1694 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1695 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1696 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1697 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1698 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1699 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1700 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1701 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1702 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1703 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1704 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1705 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1706 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1707 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1708 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1709 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1710 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1711 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1712 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1713 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1714 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1715 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1716 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1717 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1718 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1719 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1720 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1721 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1722 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1723 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1724 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1725 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1726 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1727 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1728 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1729 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1730 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1731 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1732 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1733 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1734 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1735 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1736 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1737 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1738 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1739 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1740 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1741 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1742 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1743 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1744 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1745 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1746 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1747 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1748 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_QUEST_COMPLETED+1749 + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_HONOR + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_HONOR_NEXT_LEVEL + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PVP_TIER_MAX_FROM_WINS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_FIELD_PVP_LAST_WEEKS_TIER_MAX_FROM_WINS }; -uint32 UnitDynamicUpdateFieldFlags[PLAYER_DYNAMIC_END] = +uint32 UnitDynamicUpdateFieldFlags[ACTIVE_PLAYER_DYNAMIC_END] = { UF_FLAG_PUBLIC | UF_FLAG_URGENT, // UNIT_DYNAMIC_FIELD_PASSIVE_SPELLS UF_FLAG_PUBLIC | UF_FLAG_URGENT, // UNIT_DYNAMIC_FIELD_WORLD_EFFECTS UF_FLAG_PUBLIC | UF_FLAG_URGENT, // UNIT_DYNAMIC_FIELD_CHANNEL_OBJECTS - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_RESERACH_SITE - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_RESEARCH_SITE_PROGRESS - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_DAILY_QUESTS - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_AVAILABLE_QUEST_LINE_X_QUEST_ID - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_HEIRLOOMS - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_TOYS - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_TRANSMOG - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_CHARACTER_RESTRICTIONS - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_SPELL_PCT_MOD_BY_LABEL - UF_FLAG_PRIVATE, // PLAYER_DYNAMIC_FIELD_SPELL_FLAT_MOD_BY_LABEL UF_FLAG_PUBLIC, // PLAYER_DYNAMIC_FIELD_ARENA_COOLDOWNS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_RESERACH_SITE + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_RESEARCH_SITE_PROGRESS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_AVAILABLE_QUEST_LINE_X_QUEST_ID + UF_FLAG_NONE, // + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOMS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_TOYS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_TRANSMOG + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_CHARACTER_RESTRICTIONS + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_SPELL_PCT_MOD_BY_LABEL + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_SPELL_FLAT_MOD_BY_LABEL + UF_FLAG_PUBLIC, // ACTIVE_PLAYER_DYNAMIC_FIELD_RESERACH }; uint32 GameObjectUpdateFieldFlags[GAMEOBJECT_END] = @@ -4916,11 +6341,6 @@ uint32 GameObjectUpdateFieldFlags[GAMEOBJECT_END] = UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+1 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+2 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_TYPE UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X @@ -4928,6 +6348,10 @@ uint32 GameObjectUpdateFieldFlags[GAMEOBJECT_END] = UF_FLAG_PUBLIC, // GAMEOBJECT_FIELD_CREATED_BY+1 UF_FLAG_PUBLIC, // GAMEOBJECT_FIELD_CREATED_BY+2 UF_FLAG_PUBLIC, // GAMEOBJECT_FIELD_CREATED_BY+3 + UF_FLAG_PUBLIC, // GAMEOBJECT_FIELD_GUILD_GUID + UF_FLAG_PUBLIC, // GAMEOBJECT_FIELD_GUILD_GUID+1 + UF_FLAG_PUBLIC, // GAMEOBJECT_FIELD_GUILD_GUID+2 + UF_FLAG_PUBLIC, // GAMEOBJECT_FIELD_GUILD_GUID+3 UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // GAMEOBJECT_DISPLAYID UF_FLAG_PUBLIC | UF_FLAG_URGENT, // GAMEOBJECT_FLAGS UF_FLAG_PUBLIC, // GAMEOBJECT_PARENTROTATION @@ -4945,6 +6369,7 @@ uint32 GameObjectUpdateFieldFlags[GAMEOBJECT_END] = UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // GAMEOBJECT_STATE_WORLD_EFFECT_ID+1 UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // GAMEOBJECT_STATE_WORLD_EFFECT_ID+2 UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // GAMEOBJECT_STATE_WORLD_EFFECT_ID+3 + UF_FLAG_PUBLIC | UF_FLAG_URGENT, // GAMEOBJECT_FIELD_CUSTOM_PARAM }; uint32 GameObjectDynamicUpdateFieldFlags[GAMEOBJECT_DYNAMIC_END] = @@ -4958,11 +6383,6 @@ uint32 DynamicObjectUpdateFieldFlags[DYNAMICOBJECT_END] = UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+1 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+2 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_TYPE UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X @@ -4983,11 +6403,6 @@ uint32 CorpseUpdateFieldFlags[CORPSE_END] = UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+1 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+2 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_TYPE UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X @@ -4999,6 +6414,10 @@ uint32 CorpseUpdateFieldFlags[CORPSE_END] = UF_FLAG_PUBLIC, // CORPSE_FIELD_PARTY+1 UF_FLAG_PUBLIC, // CORPSE_FIELD_PARTY+2 UF_FLAG_PUBLIC, // CORPSE_FIELD_PARTY+3 + UF_FLAG_PUBLIC, // CORPSE_FIELD_GUILD_GUID + UF_FLAG_PUBLIC, // CORPSE_FIELD_GUILD_GUID+1 + UF_FLAG_PUBLIC, // CORPSE_FIELD_GUILD_GUID+2 + UF_FLAG_PUBLIC, // CORPSE_FIELD_GUILD_GUID+3 UF_FLAG_PUBLIC, // CORPSE_FIELD_DISPLAY_ID UF_FLAG_PUBLIC, // CORPSE_FIELD_ITEM UF_FLAG_PUBLIC, // CORPSE_FIELD_ITEM+1 @@ -5033,11 +6452,6 @@ uint32 AreaTriggerUpdateFieldFlags[AREATRIGGER_END] = UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+1 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+2 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_TYPE UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X @@ -5080,11 +6494,6 @@ uint32 SceneObjectUpdateFieldFlags[SCENEOBJECT_END] = UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+1 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+2 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_TYPE UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X @@ -5103,11 +6512,6 @@ uint32 ConversationUpdateFieldFlags[CONVERSATION_END] = UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+1 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+2 UF_FLAG_PUBLIC, // OBJECT_FIELD_GUID+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+1 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+2 - UF_FLAG_PUBLIC, // OBJECT_FIELD_DATA+3 - UF_FLAG_PUBLIC, // OBJECT_FIELD_TYPE UF_FLAG_DYNAMIC, // OBJECT_FIELD_ENTRY UF_FLAG_DYNAMIC | UF_FLAG_URGENT, // OBJECT_DYNAMIC_FLAGS UF_FLAG_PUBLIC, // OBJECT_FIELD_SCALE_X diff --git a/src/server/game/Entities/Object/Updates/UpdateFieldFlags.h b/src/server/game/Entities/Object/Updates/UpdateFieldFlags.h index d5c151ee4a9..97523f323e3 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFieldFlags.h +++ b/src/server/game/Entities/Object/Updates/UpdateFieldFlags.h @@ -37,10 +37,12 @@ enum UpdatefieldFlags UF_FLAG_URGENT_SELF_ONLY = 0x400 }; -TC_GAME_API extern uint32 ItemUpdateFieldFlags[CONTAINER_END]; +TC_GAME_API extern uint32 ContainerUpdateFieldFlags[CONTAINER_END]; +TC_GAME_API extern uint32 AzeriteEmpoweredItemUpdateFieldFlags[AZERITE_EMPOWERED_ITEM_END]; +TC_GAME_API extern uint32 AzeriteItemUpdateFieldFlags[AZERITE_ITEM_END]; TC_GAME_API extern uint32 ItemDynamicUpdateFieldFlags[CONTAINER_DYNAMIC_END]; -TC_GAME_API extern uint32 UnitUpdateFieldFlags[PLAYER_END]; -TC_GAME_API extern uint32 UnitDynamicUpdateFieldFlags[PLAYER_DYNAMIC_END]; +TC_GAME_API extern uint32 UnitUpdateFieldFlags[ACTIVE_PLAYER_END]; +TC_GAME_API extern uint32 UnitDynamicUpdateFieldFlags[ACTIVE_PLAYER_DYNAMIC_END]; TC_GAME_API extern uint32 GameObjectUpdateFieldFlags[GAMEOBJECT_END]; TC_GAME_API extern uint32 GameObjectDynamicUpdateFieldFlags[GAMEOBJECT_DYNAMIC_END]; TC_GAME_API extern uint32 DynamicObjectUpdateFieldFlags[DYNAMICOBJECT_END]; diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index 6fb0a5d952c..ca3410f5dfd 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -19,17 +19,15 @@ #ifndef _UPDATEFIELDS_H #define _UPDATEFIELDS_H -// Auto generated for version 7, 3, 5, 25928 +// Auto generated for version 8, 0, 1, 27980 enum ObjectFields { OBJECT_FIELD_GUID = 0x000, // Size: 4, Flags: PUBLIC - OBJECT_FIELD_DATA = 0x004, // Size: 4, Flags: PUBLIC - OBJECT_FIELD_TYPE = 0x008, // Size: 1, Flags: PUBLIC - OBJECT_FIELD_ENTRY = 0x009, // Size: 1, Flags: DYNAMIC - OBJECT_DYNAMIC_FLAGS = 0x00A, // Size: 1, Flags: DYNAMIC, URGENT - OBJECT_FIELD_SCALE_X = 0x00B, // Size: 1, Flags: PUBLIC - OBJECT_END = 0x00C, + OBJECT_FIELD_ENTRY = 0x004, // Size: 1, Flags: DYNAMIC + OBJECT_DYNAMIC_FLAGS = 0x005, // Size: 1, Flags: DYNAMIC, URGENT + OBJECT_FIELD_SCALE_X = 0x006, // Size: 1, Flags: PUBLIC + OBJECT_END = 0x007, }; enum ObjectDynamicFields @@ -66,8 +64,7 @@ enum ItemDynamicFields ITEM_DYNAMIC_FIELD_BONUSLIST_IDS = OBJECT_DYNAMIC_END + 0x001, // Flags: OWNER, 0x100 ITEM_DYNAMIC_FIELD_ARTIFACT_POWERS = OBJECT_DYNAMIC_END + 0x002, // Flags: OWNER ITEM_DYNAMIC_FIELD_GEMS = OBJECT_DYNAMIC_END + 0x003, // Flags: OWNER - ITEM_DYNAMIC_FIELD_RELIC_TALENT_DATA = OBJECT_DYNAMIC_END + 0x004, // Flags: OWNER - ITEM_DYNAMIC_END = OBJECT_DYNAMIC_END + 0x005, + ITEM_DYNAMIC_END = OBJECT_DYNAMIC_END + 0x004, }; enum ContainerFields @@ -82,6 +79,32 @@ enum ContainerDynamicFields CONTAINER_DYNAMIC_END = ITEM_DYNAMIC_END + 0x000, }; +enum AzeriteEmpoweredItemField +{ + AZERITE_EMPOWERED_ITEM_FIELD_SELECTIONS = ITEM_END + 0x000, // Size: 4, Flags: PUBLIC + AZERITE_EMPOWERED_ITEM_END = ITEM_END + 0x004, +}; + +enum AzeriteEmpoweredItemDynamicField +{ + AZERITE_EMPOWERED_ITEM_DYNAMIC_END = ITEM_DYNAMIC_END + 0x000, +}; + +enum AzeriteItemField +{ + AZERITE_ITEM_FIELD_XP = ITEM_END + 0x000, // Size: 2, Flags: PUBLIC + AZERITE_ITEM_FIELD_LEVEL = ITEM_END + 0x002, // Size: 1, Flags: PUBLIC + AZERITE_ITEM_FIELD_AURA_LEVEL = ITEM_END + 0x003, // Size: 1, Flags: PUBLIC + AZERITE_ITEM_FIELD_KNOWLEDGE_LEVEL = ITEM_END + 0x004, // Size: 1, Flags: OWNER + AZERITE_ITEM_FIELD_DEBUG_KNOWLEDGE_WEEK = ITEM_END + 0x005, // Size: 1, Flags: OWNER + AZERITE_ITEM_END = ITEM_END + 0x006, +}; + +enum AzeriteItemDynamicField +{ + AZERITE_ITEM_DYNAMIC_END = ITEM_DYNAMIC_END + 0x000, +}; + enum UnitFields { UNIT_FIELD_CHARM = OBJECT_END + 0x000, // Size: 4, Flags: PUBLIC @@ -91,98 +114,106 @@ enum UnitFields UNIT_FIELD_SUMMONEDBY = OBJECT_END + 0x010, // Size: 4, Flags: PUBLIC UNIT_FIELD_CREATEDBY = OBJECT_END + 0x014, // Size: 4, Flags: PUBLIC UNIT_FIELD_DEMON_CREATOR = OBJECT_END + 0x018, // Size: 4, Flags: PUBLIC - UNIT_FIELD_TARGET = OBJECT_END + 0x01C, // Size: 4, Flags: PUBLIC - UNIT_FIELD_BATTLE_PET_COMPANION_GUID = OBJECT_END + 0x020, // Size: 4, Flags: PUBLIC - UNIT_FIELD_BATTLE_PET_DB_ID = OBJECT_END + 0x024, // Size: 2, Flags: PUBLIC - UNIT_FIELD_CHANNEL_DATA = OBJECT_END + 0x026, // Size: 2, Flags: PUBLIC, URGENT - UNIT_FIELD_SUMMONED_BY_HOME_REALM = OBJECT_END + 0x028, // Size: 1, Flags: PUBLIC - UNIT_FIELD_BYTES_0 = OBJECT_END + 0x029, // Size: 1, Flags: PUBLIC - UNIT_FIELD_DISPLAY_POWER = OBJECT_END + 0x02A, // Size: 1, Flags: PUBLIC - UNIT_FIELD_OVERRIDE_DISPLAY_POWER_ID = OBJECT_END + 0x02B, // Size: 1, Flags: PUBLIC - UNIT_FIELD_HEALTH = OBJECT_END + 0x02C, // Size: 2, Flags: PUBLIC - UNIT_FIELD_POWER = OBJECT_END + 0x02E, // Size: 6, Flags: PUBLIC, URGENT_SELF_ONLY - UNIT_FIELD_MAXHEALTH = OBJECT_END + 0x034, // Size: 2, Flags: PUBLIC - UNIT_FIELD_MAXPOWER = OBJECT_END + 0x036, // Size: 6, Flags: PUBLIC - UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER = OBJECT_END + 0x03C, // Size: 6, Flags: PRIVATE, OWNER, UNIT_ALL - UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER = OBJECT_END + 0x042, // Size: 6, Flags: PRIVATE, OWNER, UNIT_ALL - UNIT_FIELD_LEVEL = OBJECT_END + 0x048, // Size: 1, Flags: PUBLIC - UNIT_FIELD_EFFECTIVE_LEVEL = OBJECT_END + 0x049, // Size: 1, Flags: PUBLIC - UNIT_FIELD_SANDBOX_SCALING_ID = OBJECT_END + 0x04A, // Size: 1, Flags: PUBLIC - UNIT_FIELD_SCALING_LEVEL_MIN = OBJECT_END + 0x04B, // Size: 1, Flags: PUBLIC - UNIT_FIELD_SCALING_LEVEL_MAX = OBJECT_END + 0x04C, // Size: 1, Flags: PUBLIC - UNIT_FIELD_SCALING_LEVEL_DELTA = OBJECT_END + 0x04D, // Size: 1, Flags: PUBLIC - UNIT_FIELD_FACTIONTEMPLATE = OBJECT_END + 0x04E, // Size: 1, Flags: PUBLIC - UNIT_VIRTUAL_ITEM_SLOT_ID = OBJECT_END + 0x04F, // Size: 6, Flags: PUBLIC - UNIT_FIELD_FLAGS = OBJECT_END + 0x055, // Size: 1, Flags: PUBLIC, URGENT - UNIT_FIELD_FLAGS_2 = OBJECT_END + 0x056, // Size: 1, Flags: PUBLIC, URGENT - UNIT_FIELD_FLAGS_3 = OBJECT_END + 0x057, // Size: 1, Flags: PUBLIC, URGENT - UNIT_FIELD_AURASTATE = OBJECT_END + 0x058, // Size: 1, Flags: PUBLIC - UNIT_FIELD_BASEATTACKTIME = OBJECT_END + 0x059, // Size: 2, Flags: PUBLIC - UNIT_FIELD_RANGEDATTACKTIME = OBJECT_END + 0x05B, // Size: 1, Flags: PRIVATE - UNIT_FIELD_BOUNDINGRADIUS = OBJECT_END + 0x05C, // Size: 1, Flags: PUBLIC - UNIT_FIELD_COMBATREACH = OBJECT_END + 0x05D, // Size: 1, Flags: PUBLIC - UNIT_FIELD_DISPLAYID = OBJECT_END + 0x05E, // Size: 1, Flags: DYNAMIC, URGENT - UNIT_FIELD_NATIVEDISPLAYID = OBJECT_END + 0x05F, // Size: 1, Flags: PUBLIC, URGENT - UNIT_FIELD_MOUNTDISPLAYID = OBJECT_END + 0x060, // Size: 1, Flags: PUBLIC, URGENT - UNIT_FIELD_MINDAMAGE = OBJECT_END + 0x061, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO - UNIT_FIELD_MAXDAMAGE = OBJECT_END + 0x062, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO - UNIT_FIELD_MINOFFHANDDAMAGE = OBJECT_END + 0x063, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO - UNIT_FIELD_MAXOFFHANDDAMAGE = OBJECT_END + 0x064, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO - UNIT_FIELD_BYTES_1 = OBJECT_END + 0x065, // Size: 1, Flags: PUBLIC - UNIT_FIELD_PETNUMBER = OBJECT_END + 0x066, // Size: 1, Flags: PUBLIC - UNIT_FIELD_PET_NAME_TIMESTAMP = OBJECT_END + 0x067, // Size: 1, Flags: PUBLIC - UNIT_FIELD_PETEXPERIENCE = OBJECT_END + 0x068, // Size: 1, Flags: OWNER - UNIT_FIELD_PETNEXTLEVELEXP = OBJECT_END + 0x069, // Size: 1, Flags: OWNER - UNIT_MOD_CAST_SPEED = OBJECT_END + 0x06A, // Size: 1, Flags: PUBLIC - UNIT_MOD_CAST_HASTE = OBJECT_END + 0x06B, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MOD_HASTE = OBJECT_END + 0x06C, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MOD_RANGED_HASTE = OBJECT_END + 0x06D, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MOD_HASTE_REGEN = OBJECT_END + 0x06E, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MOD_TIME_RATE = OBJECT_END + 0x06F, // Size: 1, Flags: PUBLIC - UNIT_CREATED_BY_SPELL = OBJECT_END + 0x070, // Size: 1, Flags: PUBLIC - UNIT_NPC_FLAGS = OBJECT_END + 0x071, // Size: 2, Flags: PUBLIC, DYNAMIC - UNIT_NPC_EMOTESTATE = OBJECT_END + 0x073, // Size: 1, Flags: PUBLIC - UNIT_FIELD_STAT = OBJECT_END + 0x074, // Size: 4, Flags: PRIVATE, OWNER - UNIT_FIELD_POSSTAT = OBJECT_END + 0x078, // Size: 4, Flags: PRIVATE, OWNER - UNIT_FIELD_NEGSTAT = OBJECT_END + 0x07C, // Size: 4, Flags: PRIVATE, OWNER - UNIT_FIELD_RESISTANCES = OBJECT_END + 0x080, // Size: 7, Flags: PRIVATE, OWNER, SPECIAL_INFO - UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE = OBJECT_END + 0x087, // Size: 7, Flags: PRIVATE, OWNER - UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE = OBJECT_END + 0x08E, // Size: 7, Flags: PRIVATE, OWNER - UNIT_FIELD_MOD_BONUS_ARMOR = OBJECT_END + 0x095, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_BASE_MANA = OBJECT_END + 0x096, // Size: 1, Flags: PUBLIC - UNIT_FIELD_BASE_HEALTH = OBJECT_END + 0x097, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_BYTES_2 = OBJECT_END + 0x098, // Size: 1, Flags: PUBLIC - UNIT_FIELD_ATTACK_POWER = OBJECT_END + 0x099, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_ATTACK_POWER_MOD_POS = OBJECT_END + 0x09A, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_ATTACK_POWER_MOD_NEG = OBJECT_END + 0x09B, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x09C, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_RANGED_ATTACK_POWER = OBJECT_END + 0x09D, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_RANGED_ATTACK_POWER_MOD_POS = OBJECT_END + 0x09E, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_RANGED_ATTACK_POWER_MOD_NEG = OBJECT_END + 0x09F, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x0A0, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_ATTACK_SPEED_AURA = OBJECT_END + 0x0A1, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_MINRANGEDDAMAGE = OBJECT_END + 0x0A2, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_MAXRANGEDDAMAGE = OBJECT_END + 0x0A3, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_POWER_COST_MODIFIER = OBJECT_END + 0x0A4, // Size: 7, Flags: PRIVATE, OWNER - UNIT_FIELD_POWER_COST_MULTIPLIER = OBJECT_END + 0x0AB, // Size: 7, Flags: PRIVATE, OWNER - UNIT_FIELD_MAXHEALTHMODIFIER = OBJECT_END + 0x0B2, // Size: 1, Flags: PRIVATE, OWNER - UNIT_FIELD_HOVERHEIGHT = OBJECT_END + 0x0B3, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MIN_ITEM_LEVEL_CUTOFF = OBJECT_END + 0x0B4, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MIN_ITEM_LEVEL = OBJECT_END + 0x0B5, // Size: 1, Flags: PUBLIC - UNIT_FIELD_MAXITEMLEVEL = OBJECT_END + 0x0B6, // Size: 1, Flags: PUBLIC - UNIT_FIELD_WILD_BATTLEPET_LEVEL = OBJECT_END + 0x0B7, // Size: 1, Flags: PUBLIC - UNIT_FIELD_BATTLEPET_COMPANION_NAME_TIMESTAMP = OBJECT_END + 0x0B8, // Size: 1, Flags: PUBLIC - UNIT_FIELD_INTERACT_SPELLID = OBJECT_END + 0x0B9, // Size: 1, Flags: PUBLIC - UNIT_FIELD_STATE_SPELL_VISUAL_ID = OBJECT_END + 0x0BA, // Size: 1, Flags: DYNAMIC, URGENT - UNIT_FIELD_STATE_ANIM_ID = OBJECT_END + 0x0BB, // Size: 1, Flags: DYNAMIC, URGENT - UNIT_FIELD_STATE_ANIM_KIT_ID = OBJECT_END + 0x0BC, // Size: 1, Flags: DYNAMIC, URGENT - UNIT_FIELD_STATE_WORLD_EFFECT_ID = OBJECT_END + 0x0BD, // Size: 4, Flags: DYNAMIC, URGENT - UNIT_FIELD_SCALE_DURATION = OBJECT_END + 0x0C1, // Size: 1, Flags: PUBLIC - UNIT_FIELD_LOOKS_LIKE_MOUNT_ID = OBJECT_END + 0x0C2, // Size: 1, Flags: PUBLIC - UNIT_FIELD_LOOKS_LIKE_CREATURE_ID = OBJECT_END + 0x0C3, // Size: 1, Flags: PUBLIC - UNIT_FIELD_LOOK_AT_CONTROLLER_ID = OBJECT_END + 0x0C4, // Size: 1, Flags: PUBLIC - UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET = OBJECT_END + 0x0C5, // Size: 4, Flags: PUBLIC - UNIT_END = OBJECT_END + 0x0C9, + UNIT_FIELD_LOOK_AT_CONTROLLER_TARGET = OBJECT_END + 0x01C, // Size: 4, Flags: PUBLIC + UNIT_FIELD_TARGET = OBJECT_END + 0x020, // Size: 4, Flags: PUBLIC + UNIT_FIELD_BATTLE_PET_COMPANION_GUID = OBJECT_END + 0x024, // Size: 4, Flags: PUBLIC + UNIT_FIELD_BATTLE_PET_DB_ID = OBJECT_END + 0x028, // Size: 2, Flags: PUBLIC + UNIT_FIELD_CHANNEL_DATA = OBJECT_END + 0x02A, // Size: 2, Flags: PUBLIC, URGENT + UNIT_FIELD_SUMMONED_BY_HOME_REALM = OBJECT_END + 0x02C, // Size: 1, Flags: PUBLIC + UNIT_FIELD_BYTES_0 = OBJECT_END + 0x02D, // Size: 1, Flags: PUBLIC + UNIT_FIELD_DISPLAY_POWER = OBJECT_END + 0x02E, // Size: 1, Flags: PUBLIC + UNIT_FIELD_OVERRIDE_DISPLAY_POWER_ID = OBJECT_END + 0x02F, // Size: 1, Flags: PUBLIC + UNIT_FIELD_HEALTH = OBJECT_END + 0x030, // Size: 2, Flags: PUBLIC + UNIT_FIELD_POWER = OBJECT_END + 0x032, // Size: 6, Flags: PUBLIC, URGENT_SELF_ONLY + UNIT_FIELD_MAXHEALTH = OBJECT_END + 0x038, // Size: 2, Flags: PUBLIC + UNIT_FIELD_MAXPOWER = OBJECT_END + 0x03A, // Size: 6, Flags: PUBLIC + UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER = OBJECT_END + 0x040, // Size: 6, Flags: PRIVATE, OWNER, UNIT_ALL + UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER = OBJECT_END + 0x046, // Size: 6, Flags: PRIVATE, OWNER, UNIT_ALL + UNIT_FIELD_LEVEL = OBJECT_END + 0x04C, // Size: 1, Flags: PUBLIC + UNIT_FIELD_EFFECTIVE_LEVEL = OBJECT_END + 0x04D, // Size: 1, Flags: PUBLIC + UNIT_FIELD_CONTENT_TUNING_ID = OBJECT_END + 0x04E, // Size: 1, Flags: PUBLIC + UNIT_FIELD_SCALING_LEVEL_MIN = OBJECT_END + 0x04F, // Size: 1, Flags: PUBLIC + UNIT_FIELD_SCALING_LEVEL_MAX = OBJECT_END + 0x050, // Size: 1, Flags: PUBLIC + UNIT_FIELD_SCALING_LEVEL_DELTA = OBJECT_END + 0x051, // Size: 1, Flags: PUBLIC + UNIT_FIELD_SCALING_FACTION_GROUP = OBJECT_END + 0x052, // Size: 1, Flags: PUBLIC + UNIT_FIELD_SCALING_HEALTH_ITEM_LEVEL_CURVE_ID = OBJECT_END + 0x053, // Size: 1, Flags: PUBLIC + UNIT_FIELD_SCALING_DAMAGE_ITEM_LEVEL_CURVE_ID = OBJECT_END + 0x054, // Size: 1, Flags: PUBLIC + UNIT_FIELD_FACTIONTEMPLATE = OBJECT_END + 0x055, // Size: 1, Flags: PUBLIC + UNIT_VIRTUAL_ITEM_SLOT_ID = OBJECT_END + 0x056, // Size: 6, Flags: PUBLIC + UNIT_FIELD_FLAGS = OBJECT_END + 0x05C, // Size: 1, Flags: PUBLIC, URGENT + UNIT_FIELD_FLAGS_2 = OBJECT_END + 0x05D, // Size: 1, Flags: PUBLIC, URGENT + UNIT_FIELD_FLAGS_3 = OBJECT_END + 0x05E, // Size: 1, Flags: PUBLIC, URGENT + UNIT_FIELD_AURASTATE = OBJECT_END + 0x05F, // Size: 1, Flags: PUBLIC + UNIT_FIELD_BASEATTACKTIME = OBJECT_END + 0x060, // Size: 2, Flags: PUBLIC + UNIT_FIELD_RANGEDATTACKTIME = OBJECT_END + 0x062, // Size: 1, Flags: PRIVATE + UNIT_FIELD_BOUNDINGRADIUS = OBJECT_END + 0x063, // Size: 1, Flags: PUBLIC + UNIT_FIELD_COMBATREACH = OBJECT_END + 0x064, // Size: 1, Flags: PUBLIC + UNIT_FIELD_DISPLAYID = OBJECT_END + 0x065, // Size: 1, Flags: DYNAMIC, URGENT + UNIT_FIELD_DISPLAY_SCALE = OBJECT_END + 0x066, // Size: 1, Flags: DYNAMIC, URGENT + UNIT_FIELD_NATIVEDISPLAYID = OBJECT_END + 0x067, // Size: 1, Flags: PUBLIC, URGENT + UNIT_FIELD_NATIVE_X_DISPLAY_SCALE = OBJECT_END + 0x068, // Size: 1, Flags: PUBLIC, URGENT + UNIT_FIELD_MOUNTDISPLAYID = OBJECT_END + 0x069, // Size: 1, Flags: PUBLIC, URGENT + UNIT_FIELD_MINDAMAGE = OBJECT_END + 0x06A, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO + UNIT_FIELD_MAXDAMAGE = OBJECT_END + 0x06B, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO + UNIT_FIELD_MINOFFHANDDAMAGE = OBJECT_END + 0x06C, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO + UNIT_FIELD_MAXOFFHANDDAMAGE = OBJECT_END + 0x06D, // Size: 1, Flags: PRIVATE, OWNER, SPECIAL_INFO + UNIT_FIELD_BYTES_1 = OBJECT_END + 0x06E, // Size: 1, Flags: PUBLIC + UNIT_FIELD_PETNUMBER = OBJECT_END + 0x06F, // Size: 1, Flags: PUBLIC + UNIT_FIELD_PET_NAME_TIMESTAMP = OBJECT_END + 0x070, // Size: 1, Flags: PUBLIC + UNIT_FIELD_PETEXPERIENCE = OBJECT_END + 0x071, // Size: 1, Flags: OWNER + UNIT_FIELD_PETNEXTLEVELEXP = OBJECT_END + 0x072, // Size: 1, Flags: OWNER + UNIT_MOD_CAST_SPEED = OBJECT_END + 0x073, // Size: 1, Flags: PUBLIC + UNIT_MOD_CAST_HASTE = OBJECT_END + 0x074, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MOD_HASTE = OBJECT_END + 0x075, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MOD_RANGED_HASTE = OBJECT_END + 0x076, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MOD_HASTE_REGEN = OBJECT_END + 0x077, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MOD_TIME_RATE = OBJECT_END + 0x078, // Size: 1, Flags: PUBLIC + UNIT_CREATED_BY_SPELL = OBJECT_END + 0x079, // Size: 1, Flags: PUBLIC + UNIT_NPC_FLAGS = OBJECT_END + 0x07A, // Size: 2, Flags: PUBLIC, DYNAMIC + UNIT_NPC_EMOTESTATE = OBJECT_END + 0x07C, // Size: 1, Flags: PUBLIC + UNIT_FIELD_STAT = OBJECT_END + 0x07D, // Size: 4, Flags: PRIVATE, OWNER + UNIT_FIELD_POSSTAT = OBJECT_END + 0x081, // Size: 4, Flags: PRIVATE, OWNER + UNIT_FIELD_NEGSTAT = OBJECT_END + 0x085, // Size: 4, Flags: PRIVATE, OWNER + UNIT_FIELD_RESISTANCES = OBJECT_END + 0x089, // Size: 7, Flags: PRIVATE, OWNER, SPECIAL_INFO + UNIT_FIELD_BONUS_RESISTANCE_MODS = OBJECT_END + 0x090, // Size: 7, Flags: PRIVATE, OWNER + UNIT_FIELD_BASE_MANA = OBJECT_END + 0x097, // Size: 1, Flags: PUBLIC + UNIT_FIELD_BASE_HEALTH = OBJECT_END + 0x098, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_BYTES_2 = OBJECT_END + 0x099, // Size: 1, Flags: PUBLIC + UNIT_FIELD_ATTACK_POWER = OBJECT_END + 0x09A, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_ATTACK_POWER_MOD_POS = OBJECT_END + 0x09B, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_ATTACK_POWER_MOD_NEG = OBJECT_END + 0x09C, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x09D, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_ATTACK_POWER = OBJECT_END + 0x09E, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_ATTACK_POWER_MOD_POS = OBJECT_END + 0x09F, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_ATTACK_POWER_MOD_NEG = OBJECT_END + 0x0A0, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x0A1, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_MAIN_HAND_WEAPON_ATTACK_POWER = OBJECT_END + 0x0A2, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_OFF_HAND_WEAPON_ATTACK_POWER = OBJECT_END + 0x0A3, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_RANGED_HAND_WEAPON_ATTACK_POWER = OBJECT_END + 0x0A4, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_ATTACK_SPEED_AURA = OBJECT_END + 0x0A5, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_LIFESTEAL = OBJECT_END + 0x0A6, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_MINRANGEDDAMAGE = OBJECT_END + 0x0A7, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_MAXRANGEDDAMAGE = OBJECT_END + 0x0A8, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_POWER_COST_MODIFIER = OBJECT_END + 0x0A9, // Size: 7, Flags: PRIVATE, OWNER + UNIT_FIELD_POWER_COST_MULTIPLIER = OBJECT_END + 0x0B0, // Size: 7, Flags: PRIVATE, OWNER + UNIT_FIELD_MAXHEALTHMODIFIER = OBJECT_END + 0x0B7, // Size: 1, Flags: PRIVATE, OWNER + UNIT_FIELD_HOVERHEIGHT = OBJECT_END + 0x0B8, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MIN_ITEM_LEVEL_CUTOFF = OBJECT_END + 0x0B9, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MIN_ITEM_LEVEL = OBJECT_END + 0x0BA, // Size: 1, Flags: PUBLIC + UNIT_FIELD_MAXITEMLEVEL = OBJECT_END + 0x0BB, // Size: 1, Flags: PUBLIC + UNIT_FIELD_WILD_BATTLEPET_LEVEL = OBJECT_END + 0x0BC, // Size: 1, Flags: PUBLIC + UNIT_FIELD_BATTLEPET_COMPANION_NAME_TIMESTAMP = OBJECT_END + 0x0BD, // Size: 1, Flags: PUBLIC + UNIT_FIELD_INTERACT_SPELLID = OBJECT_END + 0x0BE, // Size: 1, Flags: PUBLIC + UNIT_FIELD_STATE_SPELL_VISUAL_ID = OBJECT_END + 0x0BF, // Size: 1, Flags: DYNAMIC, URGENT + UNIT_FIELD_STATE_ANIM_ID = OBJECT_END + 0x0C0, // Size: 1, Flags: DYNAMIC, URGENT + UNIT_FIELD_STATE_ANIM_KIT_ID = OBJECT_END + 0x0C1, // Size: 1, Flags: DYNAMIC, URGENT + UNIT_FIELD_STATE_WORLD_EFFECT_ID = OBJECT_END + 0x0C2, // Size: 4, Flags: DYNAMIC, URGENT + UNIT_FIELD_SCALE_DURATION = OBJECT_END + 0x0C6, // Size: 1, Flags: PUBLIC + UNIT_FIELD_LOOKS_LIKE_MOUNT_ID = OBJECT_END + 0x0C7, // Size: 1, Flags: PUBLIC + UNIT_FIELD_LOOKS_LIKE_CREATURE_ID = OBJECT_END + 0x0C8, // Size: 1, Flags: PUBLIC + UNIT_FIELD_LOOK_AT_CONTROLLER_ID = OBJECT_END + 0x0C9, // Size: 1, Flags: PUBLIC + UNIT_FIELD_GUILD_GUID = OBJECT_END + 0x0CA, // Size: 4, Flags: PUBLIC + UNIT_END = OBJECT_END + 0x0CE, }; enum UnitDynamicFields @@ -209,141 +240,152 @@ enum PlayerFields PLAYER_BYTES_4 = UNIT_END + 0x014, // Size: 1, Flags: PUBLIC PLAYER_DUEL_TEAM = UNIT_END + 0x015, // Size: 1, Flags: PUBLIC PLAYER_GUILD_TIMESTAMP = UNIT_END + 0x016, // Size: 1, Flags: PUBLIC - PLAYER_QUEST_LOG = UNIT_END + 0x017, // Size: 800, Flags: PARTY_MEMBER - PLAYER_VISIBLE_ITEM = UNIT_END + 0x337, // Size: 38, Flags: PUBLIC - PLAYER_CHOSEN_TITLE = UNIT_END + 0x35D, // Size: 1, Flags: PUBLIC - PLAYER_FAKE_INEBRIATION = UNIT_END + 0x35E, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_VIRTUAL_PLAYER_REALM = UNIT_END + 0x35F, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_CURRENT_SPEC_ID = UNIT_END + 0x360, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_TAXI_MOUNT_ANIM_KIT_ID = UNIT_END + 0x361, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_AVG_ITEM_LEVEL = UNIT_END + 0x362, // Size: 4, Flags: PUBLIC - PLAYER_FIELD_CURRENT_BATTLE_PET_BREED_QUALITY = UNIT_END + 0x366, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_PRESTIGE = UNIT_END + 0x367, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_HONOR_LEVEL = UNIT_END + 0x368, // Size: 1, Flags: PUBLIC - PLAYER_FIELD_INV_SLOT_HEAD = UNIT_END + 0x369, // Size: 780, Flags: PRIVATE - PLAYER_FIELD_END_NOT_SELF = UNIT_END + 0x369, - PLAYER_FARSIGHT = UNIT_END + 0x675, // Size: 4, Flags: PRIVATE - PLAYER_FIELD_SUMMONED_BATTLE_PET_ID = UNIT_END + 0x679, // Size: 4, Flags: PRIVATE - PLAYER__FIELD_KNOWN_TITLES = UNIT_END + 0x67D, // Size: 12, Flags: PRIVATE - PLAYER_FIELD_COINAGE = UNIT_END + 0x689, // Size: 2, Flags: PRIVATE - PLAYER_XP = UNIT_END + 0x68B, // Size: 1, Flags: PRIVATE - PLAYER_NEXT_LEVEL_XP = UNIT_END + 0x68C, // Size: 1, Flags: PRIVATE - PLAYER_TRIAL_XP = UNIT_END + 0x68D, // Size: 1, Flags: PRIVATE - PLAYER_SKILL_LINEID = UNIT_END + 0x68E, // Size: 448, Flags: PRIVATE - PLAYER_CHARACTER_POINTS = UNIT_END + 0x84E, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MAX_TALENT_TIERS = UNIT_END + 0x84F, // Size: 1, Flags: PRIVATE - PLAYER_TRACK_CREATURES = UNIT_END + 0x850, // Size: 1, Flags: PRIVATE - PLAYER_TRACK_RESOURCES = UNIT_END + 0x851, // Size: 1, Flags: PRIVATE - PLAYER_EXPERTISE = UNIT_END + 0x852, // Size: 1, Flags: PRIVATE - PLAYER_OFFHAND_EXPERTISE = UNIT_END + 0x853, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_RANGED_EXPERTISE = UNIT_END + 0x854, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_COMBAT_RATING_EXPERTISE = UNIT_END + 0x855, // Size: 1, Flags: PRIVATE - PLAYER_BLOCK_PERCENTAGE = UNIT_END + 0x856, // Size: 1, Flags: PRIVATE - PLAYER_DODGE_PERCENTAGE = UNIT_END + 0x857, // Size: 1, Flags: PRIVATE - PLAYER_DODGE_PERCENTAGE_FROM_ATTRIBUTE = UNIT_END + 0x858, // Size: 1, Flags: PRIVATE - PLAYER_PARRY_PERCENTAGE = UNIT_END + 0x859, // Size: 1, Flags: PRIVATE - PLAYER_PARRY_PERCENTAGE_FROM_ATTRIBUTE = UNIT_END + 0x85A, // Size: 1, Flags: PRIVATE - PLAYER_CRIT_PERCENTAGE = UNIT_END + 0x85B, // Size: 1, Flags: PRIVATE - PLAYER_RANGED_CRIT_PERCENTAGE = UNIT_END + 0x85C, // Size: 1, Flags: PRIVATE - PLAYER_OFFHAND_CRIT_PERCENTAGE = UNIT_END + 0x85D, // Size: 1, Flags: PRIVATE - PLAYER_SPELL_CRIT_PERCENTAGE1 = UNIT_END + 0x85E, // Size: 1, Flags: PRIVATE - PLAYER_SHIELD_BLOCK = UNIT_END + 0x85F, // Size: 1, Flags: PRIVATE - PLAYER_SHIELD_BLOCK_CRIT_PERCENTAGE = UNIT_END + 0x860, // Size: 1, Flags: PRIVATE - PLAYER_MASTERY = UNIT_END + 0x861, // Size: 1, Flags: PRIVATE - PLAYER_SPEED = UNIT_END + 0x862, // Size: 1, Flags: PRIVATE - PLAYER_LIFESTEAL = UNIT_END + 0x863, // Size: 1, Flags: PRIVATE - PLAYER_AVOIDANCE = UNIT_END + 0x864, // Size: 1, Flags: PRIVATE - PLAYER_STURDINESS = UNIT_END + 0x865, // Size: 1, Flags: PRIVATE - PLAYER_VERSATILITY = UNIT_END + 0x866, // Size: 1, Flags: PRIVATE - PLAYER_VERSATILITY_BONUS = UNIT_END + 0x867, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_PVP_POWER_DAMAGE = UNIT_END + 0x868, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_PVP_POWER_HEALING = UNIT_END + 0x869, // Size: 1, Flags: PRIVATE - PLAYER_EXPLORED_ZONES_1 = UNIT_END + 0x86A, // Size: 320, Flags: PRIVATE - PLAYER_FIELD_REST_INFO = UNIT_END + 0x9AA, // Size: 4, Flags: PRIVATE - PLAYER_FIELD_MOD_DAMAGE_DONE_POS = UNIT_END + 0x9AE, // Size: 7, Flags: PRIVATE - PLAYER_FIELD_MOD_DAMAGE_DONE_NEG = UNIT_END + 0x9B5, // Size: 7, Flags: PRIVATE - PLAYER_FIELD_MOD_DAMAGE_DONE_PCT = UNIT_END + 0x9BC, // Size: 7, Flags: PRIVATE - PLAYER_FIELD_MOD_HEALING_DONE_POS = UNIT_END + 0x9C3, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_HEALING_PCT = UNIT_END + 0x9C4, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_HEALING_DONE_PCT = UNIT_END + 0x9C5, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_PERIODIC_HEALING_DONE_PERCENT = UNIT_END + 0x9C6, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS = UNIT_END + 0x9C7, // Size: 3, Flags: PRIVATE - PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS = UNIT_END + 0x9CA, // Size: 3, Flags: PRIVATE - PLAYER_FIELD_MOD_SPELL_POWER_PCT = UNIT_END + 0x9CD, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_RESILIENCE_PERCENT = UNIT_END + 0x9CE, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT = UNIT_END + 0x9CF, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT = UNIT_END + 0x9D0, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_TARGET_RESISTANCE = UNIT_END + 0x9D1, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE = UNIT_END + 0x9D2, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_LOCAL_FLAGS = UNIT_END + 0x9D3, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_BYTES = UNIT_END + 0x9D4, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_PVP_MEDALS = UNIT_END + 0x9D5, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_BUYBACK_PRICE_1 = UNIT_END + 0x9D6, // Size: 12, Flags: PRIVATE - PLAYER_FIELD_BUYBACK_TIMESTAMP_1 = UNIT_END + 0x9E2, // Size: 12, Flags: PRIVATE - PLAYER_FIELD_KILLS = UNIT_END + 0x9EE, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_LIFETIME_HONORABLE_KILLS = UNIT_END + 0x9EF, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_WATCHED_FACTION_INDEX = UNIT_END + 0x9F0, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_COMBAT_RATING_1 = UNIT_END + 0x9F1, // Size: 32, Flags: PRIVATE - PLAYER_FIELD_ARENA_TEAM_INFO_1_1 = UNIT_END + 0xA11, // Size: 42, Flags: PRIVATE - PLAYER_FIELD_MAX_LEVEL = UNIT_END + 0xA3B, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA = UNIT_END + 0xA3C, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MAX_CREATURE_SCALING_LEVEL = UNIT_END + 0xA3D, // Size: 1, Flags: PRIVATE - PLAYER_NO_REAGENT_COST_1 = UNIT_END + 0xA3E, // Size: 4, Flags: PRIVATE - PLAYER_PET_SPELL_POWER = UNIT_END + 0xA42, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_RESEARCHING_1 = UNIT_END + 0xA43, // Size: 10, Flags: PRIVATE - PLAYER_PROFESSION_SKILL_LINE_1 = UNIT_END + 0xA4D, // Size: 2, Flags: PRIVATE - PLAYER_FIELD_UI_HIT_MODIFIER = UNIT_END + 0xA4F, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_UI_SPELL_HIT_MODIFIER = UNIT_END + 0xA50, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_HOME_REALM_TIME_OFFSET = UNIT_END + 0xA51, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_MOD_PET_HASTE = UNIT_END + 0xA52, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_BYTES2 = UNIT_END + 0xA53, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_BYTES3 = UNIT_END + 0xA54, // Size: 1, Flags: PRIVATE, URGENT_SELF_ONLY - PLAYER_FIELD_LFG_BONUS_FACTION_ID = UNIT_END + 0xA55, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_LOOT_SPEC_ID = UNIT_END + 0xA56, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_OVERRIDE_ZONE_PVP_TYPE = UNIT_END + 0xA57, // Size: 1, Flags: PRIVATE, URGENT_SELF_ONLY - PLAYER_FIELD_BAG_SLOT_FLAGS = UNIT_END + 0xA58, // Size: 4, Flags: PRIVATE - PLAYER_FIELD_BANK_BAG_SLOT_FLAGS = UNIT_END + 0xA5C, // Size: 7, Flags: PRIVATE - PLAYER_FIELD_INSERT_ITEMS_LEFT_TO_RIGHT = UNIT_END + 0xA63, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_QUEST_COMPLETED = UNIT_END + 0xA64, // Size: 1750, Flags: PRIVATE - PLAYER_FIELD_HONOR = UNIT_END + 0x113A, // Size: 1, Flags: PRIVATE - PLAYER_FIELD_HONOR_NEXT_LEVEL = UNIT_END + 0x113B, // Size: 1, Flags: PRIVATE - PLAYER_END = UNIT_END + 0x113C, + PLAYER_QUEST_LOG = UNIT_END + 0x017, // Size: 1600, Flags: PARTY_MEMBER + PLAYER_VISIBLE_ITEM = UNIT_END + 0x657, // Size: 38, Flags: PUBLIC + PLAYER_CHOSEN_TITLE = UNIT_END + 0x67D, // Size: 1, Flags: PUBLIC + PLAYER_FAKE_INEBRIATION = UNIT_END + 0x67E, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_VIRTUAL_PLAYER_REALM = UNIT_END + 0x67F, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_CURRENT_SPEC_ID = UNIT_END + 0x680, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_TAXI_MOUNT_ANIM_KIT_ID = UNIT_END + 0x681, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_AVG_ITEM_LEVEL = UNIT_END + 0x682, // Size: 4, Flags: PUBLIC + PLAYER_FIELD_CURRENT_BATTLE_PET_BREED_QUALITY = UNIT_END + 0x686, // Size: 1, Flags: PUBLIC + PLAYER_FIELD_HONOR_LEVEL = UNIT_END + 0x687, // Size: 1, Flags: PUBLIC + PLAYER_END = UNIT_END + 0x688, }; enum PlayerDynamicFields { - PLAYER_DYNAMIC_FIELD_RESERACH_SITE = UNIT_DYNAMIC_END + 0x000, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_RESEARCH_SITE_PROGRESS = UNIT_DYNAMIC_END + 0x001, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_DAILY_QUESTS = UNIT_DYNAMIC_END + 0x002, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_AVAILABLE_QUEST_LINE_X_QUEST_ID = UNIT_DYNAMIC_END + 0x003, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_HEIRLOOMS = UNIT_DYNAMIC_END + 0x004, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS = UNIT_DYNAMIC_END + 0x005, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_TOYS = UNIT_DYNAMIC_END + 0x006, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_TRANSMOG = UNIT_DYNAMIC_END + 0x007, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG = UNIT_DYNAMIC_END + 0x008, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS = UNIT_DYNAMIC_END + 0x009, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_CHARACTER_RESTRICTIONS = UNIT_DYNAMIC_END + 0x00A, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_SPELL_PCT_MOD_BY_LABEL = UNIT_DYNAMIC_END + 0x00B, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_SPELL_FLAT_MOD_BY_LABEL = UNIT_DYNAMIC_END + 0x00C, // Flags: PRIVATE - PLAYER_DYNAMIC_FIELD_ARENA_COOLDOWNS = UNIT_DYNAMIC_END + 0x00D, // Flags: PUBLIC - PLAYER_DYNAMIC_END = UNIT_DYNAMIC_END + 0x00E, + PLAYER_DYNAMIC_FIELD_ARENA_COOLDOWNS = UNIT_DYNAMIC_END + 0x000, // Flags: PUBLIC + PLAYER_DYNAMIC_END = UNIT_DYNAMIC_END + 0x001, +}; + +enum ActivePlayerField +{ + ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD = PLAYER_END + 0x000, // Size: 780, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_FARSIGHT = PLAYER_END + 0x30C, // Size: 4, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID = PLAYER_END + 0x310, // Size: 4, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_KNOWN_TITLES = PLAYER_END + 0x314, // Size: 12, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_COINAGE = PLAYER_END + 0x320, // Size: 2, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_XP = PLAYER_END + 0x322, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_NEXT_LEVEL_XP = PLAYER_END + 0x323, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_TRIAL_XP = PLAYER_END + 0x324, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_SKILL_LINEID = PLAYER_END + 0x325, // Size: 896, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_CHARACTER_POINTS = PLAYER_END + 0x6A5, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MAX_TALENT_TIERS = PLAYER_END + 0x6A6, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_TRACK_CREATURES = PLAYER_END + 0x6A7, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_TRACK_RESOURCES = PLAYER_END + 0x6A8, // Size: 2, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_EXPERTISE = PLAYER_END + 0x6AA, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_OFFHAND_EXPERTISE = PLAYER_END + 0x6AB, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_RANGED_EXPERTISE = PLAYER_END + 0x6AC, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_COMBAT_RATING_EXPERTISE = PLAYER_END + 0x6AD, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_BLOCK_PERCENTAGE = PLAYER_END + 0x6AE, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_DODGE_PERCENTAGE = PLAYER_END + 0x6AF, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_DODGE_PERCENTAGE_FROM_ATTRIBUTE = PLAYER_END + 0x6B0, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PARRY_PERCENTAGE = PLAYER_END + 0x6B1, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PARRY_PERCENTAGE_FROM_ATTRIBUTE = PLAYER_END + 0x6B2, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_CRIT_PERCENTAGE = PLAYER_END + 0x6B3, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_RANGED_CRIT_PERCENTAGE = PLAYER_END + 0x6B4, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_OFFHAND_CRIT_PERCENTAGE = PLAYER_END + 0x6B5, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_SPELL_CRIT_PERCENTAGE1 = PLAYER_END + 0x6B6, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_SHIELD_BLOCK = PLAYER_END + 0x6B7, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_SHIELD_BLOCK_CRIT_PERCENTAGE = PLAYER_END + 0x6B8, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MASTERY = PLAYER_END + 0x6B9, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_SPEED = PLAYER_END + 0x6BA, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_AVOIDANCE = PLAYER_END + 0x6BB, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_STURDINESS = PLAYER_END + 0x6BC, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_VERSATILITY = PLAYER_END + 0x6BD, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_VERSATILITY_BONUS = PLAYER_END + 0x6BE, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PVP_POWER_DAMAGE = PLAYER_END + 0x6BF, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PVP_POWER_HEALING = PLAYER_END + 0x6C0, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_EXPLORED_ZONES = PLAYER_END + 0x6C1, // Size: 320, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_REST_INFO = PLAYER_END + 0x801, // Size: 4, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS = PLAYER_END + 0x805, // Size: 7, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG = PLAYER_END + 0x80C, // Size: 7, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT = PLAYER_END + 0x813, // Size: 7, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_POS = PLAYER_END + 0x81A, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_HEALING_PCT = PLAYER_END + 0x81B, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_PCT = PLAYER_END + 0x81C, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_PERIODIC_HEALING_DONE_PERCENT = PLAYER_END + 0x81D, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS = PLAYER_END + 0x81E, // Size: 3, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS = PLAYER_END + 0x821, // Size: 3, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_SPELL_POWER_PCT = PLAYER_END + 0x824, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_RESILIENCE_PERCENT = PLAYER_END + 0x825, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT = PLAYER_END + 0x826, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT = PLAYER_END + 0x827, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_TARGET_RESISTANCE = PLAYER_END + 0x828, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE = PLAYER_END + 0x829, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_LOCAL_FLAGS = PLAYER_END + 0x82A, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_BYTES = PLAYER_END + 0x82B, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PVP_MEDALS = PLAYER_END + 0x82C, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_BUYBACK_PRICE = PLAYER_END + 0x82D, // Size: 12, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP = PLAYER_END + 0x839, // Size: 12, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_KILLS = PLAYER_END + 0x845, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS = PLAYER_END + 0x846, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_WATCHED_FACTION_INDEX = PLAYER_END + 0x847, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_COMBAT_RATING = PLAYER_END + 0x848, // Size: 32, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO = PLAYER_END + 0x868, // Size: 54, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MAX_LEVEL = PLAYER_END + 0x89E, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA = PLAYER_END + 0x89F, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MAX_CREATURE_SCALING_LEVEL = PLAYER_END + 0x8A0, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_NO_REAGENT_COST = PLAYER_END + 0x8A1, // Size: 4, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PET_SPELL_POWER = PLAYER_END + 0x8A5, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE = PLAYER_END + 0x8A6, // Size: 2, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_UI_HIT_MODIFIER = PLAYER_END + 0x8A8, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_UI_SPELL_HIT_MODIFIER = PLAYER_END + 0x8A9, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_HOME_REALM_TIME_OFFSET = PLAYER_END + 0x8AA, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_MOD_PET_HASTE = PLAYER_END + 0x8AB, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_BYTES2 = PLAYER_END + 0x8AC, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_BYTES3 = PLAYER_END + 0x8AD, // Size: 1, Flags: PUBLIC, URGENT_SELF_ONLY + ACTIVE_PLAYER_FIELD_LFG_BONUS_FACTION_ID = PLAYER_END + 0x8AE, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_LOOT_SPEC_ID = PLAYER_END + 0x8AF, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_OVERRIDE_ZONE_PVP_TYPE = PLAYER_END + 0x8B0, // Size: 1, Flags: PUBLIC, URGENT_SELF_ONLY + ACTIVE_PLAYER_FIELD_BAG_SLOT_FLAGS = PLAYER_END + 0x8B1, // Size: 4, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_BANK_BAG_SLOT_FLAGS = PLAYER_END + 0x8B5, // Size: 7, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_INSERT_ITEMS_LEFT_TO_RIGHT = PLAYER_END + 0x8BC, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_QUEST_COMPLETED = PLAYER_END + 0x8BD, // Size: 1750, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_HONOR = PLAYER_END + 0xF93, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_HONOR_NEXT_LEVEL = PLAYER_END + 0xF94, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PVP_TIER_MAX_FROM_WINS = PLAYER_END + 0xF95, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_FIELD_PVP_LAST_WEEKS_TIER_MAX_FROM_WINS = PLAYER_END + 0xF96, // Size: 1, Flags: PUBLIC + ACTIVE_PLAYER_END = PLAYER_END + 0xF97, +}; + +enum ActivePlayerDynamicField +{ + ACTIVE_PLAYER_DYNAMIC_FIELD_RESERACH_SITE = PLAYER_DYNAMIC_END + 0x000, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_RESEARCH_SITE_PROGRESS = PLAYER_DYNAMIC_END + 0x001, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS = PLAYER_DYNAMIC_END + 0x002, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_AVAILABLE_QUEST_LINE_X_QUEST_ID = PLAYER_DYNAMIC_END + 0x003, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOMS = PLAYER_DYNAMIC_END + 0x005, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS = PLAYER_DYNAMIC_END + 0x006, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_TOYS = PLAYER_DYNAMIC_END + 0x007, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_TRANSMOG = PLAYER_DYNAMIC_END + 0x008, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG = PLAYER_DYNAMIC_END + 0x009, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS = PLAYER_DYNAMIC_END + 0x00A, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_CHARACTER_RESTRICTIONS = PLAYER_DYNAMIC_END + 0x00B, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_SPELL_PCT_MOD_BY_LABEL = PLAYER_DYNAMIC_END + 0x00C, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_SPELL_FLAT_MOD_BY_LABEL = PLAYER_DYNAMIC_END + 0x00D, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_FIELD_RESERACH = PLAYER_DYNAMIC_END + 0x00E, // Flags: PUBLIC + ACTIVE_PLAYER_DYNAMIC_END = PLAYER_DYNAMIC_END + 0x00F, }; enum GameObjectFields { GAMEOBJECT_FIELD_CREATED_BY = OBJECT_END + 0x000, // Size: 4, Flags: PUBLIC - GAMEOBJECT_DISPLAYID = OBJECT_END + 0x004, // Size: 1, Flags: DYNAMIC, URGENT - GAMEOBJECT_FLAGS = OBJECT_END + 0x005, // Size: 1, Flags: PUBLIC, URGENT - GAMEOBJECT_PARENTROTATION = OBJECT_END + 0x006, // Size: 4, Flags: PUBLIC - GAMEOBJECT_FACTION = OBJECT_END + 0x00A, // Size: 1, Flags: PUBLIC - GAMEOBJECT_LEVEL = OBJECT_END + 0x00B, // Size: 1, Flags: PUBLIC - GAMEOBJECT_BYTES_1 = OBJECT_END + 0x00C, // Size: 1, Flags: PUBLIC, URGENT - GAMEOBJECT_SPELL_VISUAL_ID = OBJECT_END + 0x00D, // Size: 1, Flags: PUBLIC, DYNAMIC, URGENT - GAMEOBJECT_STATE_SPELL_VISUAL_ID = OBJECT_END + 0x00E, // Size: 1, Flags: DYNAMIC, URGENT - GAMEOBJECT_STATE_ANIM_ID = OBJECT_END + 0x00F, // Size: 1, Flags: DYNAMIC, URGENT - GAMEOBJECT_STATE_ANIM_KIT_ID = OBJECT_END + 0x010, // Size: 1, Flags: DYNAMIC, URGENT - GAMEOBJECT_STATE_WORLD_EFFECT_ID = OBJECT_END + 0x011, // Size: 4, Flags: DYNAMIC, URGENT - GAMEOBJECT_END = OBJECT_END + 0x015, + GAMEOBJECT_FIELD_GUILD_GUID = OBJECT_END + 0x004, // Size: 4, Flags: PUBLIC + GAMEOBJECT_DISPLAYID = OBJECT_END + 0x008, // Size: 1, Flags: DYNAMIC, URGENT + GAMEOBJECT_FLAGS = OBJECT_END + 0x009, // Size: 1, Flags: PUBLIC, URGENT + GAMEOBJECT_PARENTROTATION = OBJECT_END + 0x00A, // Size: 4, Flags: PUBLIC + GAMEOBJECT_FACTION = OBJECT_END + 0x00E, // Size: 1, Flags: PUBLIC + GAMEOBJECT_LEVEL = OBJECT_END + 0x00F, // Size: 1, Flags: PUBLIC + GAMEOBJECT_BYTES_1 = OBJECT_END + 0x010, // Size: 1, Flags: PUBLIC, URGENT + GAMEOBJECT_SPELL_VISUAL_ID = OBJECT_END + 0x011, // Size: 1, Flags: PUBLIC, DYNAMIC, URGENT + GAMEOBJECT_STATE_SPELL_VISUAL_ID = OBJECT_END + 0x012, // Size: 1, Flags: DYNAMIC, URGENT + GAMEOBJECT_STATE_ANIM_ID = OBJECT_END + 0x013, // Size: 1, Flags: DYNAMIC, URGENT + GAMEOBJECT_STATE_ANIM_KIT_ID = OBJECT_END + 0x014, // Size: 1, Flags: DYNAMIC, URGENT + GAMEOBJECT_STATE_WORLD_EFFECT_ID = OBJECT_END + 0x015, // Size: 4, Flags: DYNAMIC, URGENT + GAMEOBJECT_FIELD_CUSTOM_PARAM = OBJECT_END + 0x019, // Size: 1, Flags: PUBLIC, URGENT + GAMEOBJECT_END = OBJECT_END + 0x01A, }; enum GameObjectDynamicFields @@ -372,15 +414,16 @@ enum CorpseFields { CORPSE_FIELD_OWNER = OBJECT_END + 0x000, // Size: 4, Flags: PUBLIC CORPSE_FIELD_PARTY = OBJECT_END + 0x004, // Size: 4, Flags: PUBLIC - CORPSE_FIELD_DISPLAY_ID = OBJECT_END + 0x008, // Size: 1, Flags: PUBLIC - CORPSE_FIELD_ITEM = OBJECT_END + 0x009, // Size: 19, Flags: PUBLIC - CORPSE_FIELD_BYTES_1 = OBJECT_END + 0x01C, // Size: 1, Flags: PUBLIC - CORPSE_FIELD_BYTES_2 = OBJECT_END + 0x01D, // Size: 1, Flags: PUBLIC - CORPSE_FIELD_FLAGS = OBJECT_END + 0x01E, // Size: 1, Flags: PUBLIC - CORPSE_FIELD_DYNAMIC_FLAGS = OBJECT_END + 0x01F, // Size: 1, Flags: DYNAMIC - CORPSE_FIELD_FACTIONTEMPLATE = OBJECT_END + 0x020, // Size: 1, Flags: PUBLIC - CORPSE_FIELD_CUSTOM_DISPLAY_OPTION = OBJECT_END + 0x021, // Size: 1, Flags: PUBLIC - CORPSE_END = OBJECT_END + 0x022, + CORPSE_FIELD_GUILD_GUID = OBJECT_END + 0x008, // Size: 4, Flags: PUBLIC + CORPSE_FIELD_DISPLAY_ID = OBJECT_END + 0x00C, // Size: 1, Flags: PUBLIC + CORPSE_FIELD_ITEM = OBJECT_END + 0x00D, // Size: 19, Flags: PUBLIC + CORPSE_FIELD_BYTES_1 = OBJECT_END + 0x020, // Size: 1, Flags: PUBLIC + CORPSE_FIELD_BYTES_2 = OBJECT_END + 0x021, // Size: 1, Flags: PUBLIC + CORPSE_FIELD_FLAGS = OBJECT_END + 0x022, // Size: 1, Flags: PUBLIC + CORPSE_FIELD_DYNAMIC_FLAGS = OBJECT_END + 0x023, // Size: 1, Flags: DYNAMIC + CORPSE_FIELD_FACTIONTEMPLATE = OBJECT_END + 0x024, // Size: 1, Flags: PUBLIC + CORPSE_FIELD_CUSTOM_DISPLAY_OPTION = OBJECT_END + 0x025, // Size: 1, Flags: PUBLIC + CORPSE_END = OBJECT_END + 0x026, }; enum CorpseDynamicFields diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 3e08a2ad31f..67fa6c00554 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -889,7 +889,7 @@ bool Guardian::InitStatsForLevel(uint8 petlevel) SetPowerType(POWER_ENERGY); else if (IsPetImp() || IsPetFelhunter() || IsPetVoidwalker() || IsPetSuccubus() || IsPetDoomguard() || IsPetFelguard()) // Warlock pets have energy (since 5.x) SetPowerType(POWER_ENERGY); - else + else SetPowerType(POWER_MANA); // Damage @@ -899,8 +899,8 @@ bool Guardian::InitStatsForLevel(uint8 petlevel) case SUMMON_PET: { // the damage bonus used for pets is either fire or shadow damage, whatever is higher - int32 fire = GetOwner()->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE); - int32 shadow = GetOwner()->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW); + int32 fire = GetOwner()->GetUInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE); + int32 shadow = GetOwner()->GetUInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW); int32 val = (fire > shadow) ? fire : shadow; if (val < 0) val = 0; diff --git a/src/server/game/Entities/Player/CollectionMgr.cpp b/src/server/game/Entities/Player/CollectionMgr.cpp index eb4834967ba..6aff0ca300a 100644 --- a/src/server/game/Entities/Player/CollectionMgr.cpp +++ b/src/server/game/Entities/Player/CollectionMgr.cpp @@ -81,14 +81,14 @@ CollectionMgr::~CollectionMgr() void CollectionMgr::LoadToys() { for (auto const& t : _toys) - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_TOYS, t.first); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_TOYS, t.first); } bool CollectionMgr::AddToy(uint32 itemId, bool isFavourite /*= false*/) { if (UpdateAccountToys(itemId, isFavourite)) { - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_TOYS, itemId); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_TOYS, itemId); return true; } @@ -204,8 +204,8 @@ void CollectionMgr::LoadHeirlooms() { for (auto const& item : _heirlooms) { - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_HEIRLOOMS, item.first); - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS, item.second.flags); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOMS, item.first); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS, item.second.flags); } } @@ -213,8 +213,8 @@ void CollectionMgr::AddHeirloom(uint32 itemId, uint32 flags) { if (UpdateAccountHeirlooms(itemId, flags)) { - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_HEIRLOOMS, itemId); - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS, flags); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOMS, itemId); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS, flags); } } @@ -255,10 +255,10 @@ void CollectionMgr::UpgradeHeirloom(uint32 itemId, int32 castItem) item->AddBonuses(bonusId); // Get heirloom offset to update only one part of dynamic field - std::vector const& fields = player->GetDynamicValues(PLAYER_DYNAMIC_FIELD_HEIRLOOMS); + std::vector const& fields = player->GetDynamicValues(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOMS); uint16 offset = uint16(std::find(fields.begin(), fields.end(), itemId) - fields.begin()); - player->SetDynamicValue(PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS, offset, flags); + player->SetDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS, offset, flags); itr->second.flags = flags; itr->second.bonusId = bonusId; } @@ -295,11 +295,11 @@ void CollectionMgr::CheckHeirloomUpgrades(Item* item) if (newItemId) { - std::vector const& fields = player->GetDynamicValues(PLAYER_DYNAMIC_FIELD_HEIRLOOMS); + std::vector const& fields = player->GetDynamicValues(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOMS); uint16 offset = uint16(std::find(fields.begin(), fields.end(), itr->first) - fields.begin()); - player->SetDynamicValue(PLAYER_DYNAMIC_FIELD_HEIRLOOMS, offset, newItemId); - player->SetDynamicValue(PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS, offset, 0); + player->SetDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOMS, offset, newItemId); + player->SetDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_HEIRLOOM_FLAGS, offset, 0); _heirlooms.erase(itr); _heirlooms[newItemId] = 0; @@ -460,11 +460,11 @@ void CollectionMgr::LoadItemAppearances() { boost::to_block_range(*_appearances, DynamicBitsetBlockOutputIterator([this](uint32 blockValue) { - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_TRANSMOG, blockValue); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_TRANSMOG, blockValue); })); for (auto itr = _temporaryAppearances.begin(); itr != _temporaryAppearances.end(); ++itr) - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG, itr->first); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG, itr->first); } void CollectionMgr::LoadAccountItemAppearances(PreparedQueryResult knownAppearances, PreparedQueryResult favoriteAppearances) @@ -738,18 +738,18 @@ void CollectionMgr::AddItemAppearance(ItemModifiedAppearanceEntry const* itemMod _appearances->resize(itemModifiedAppearance->ID + 1); numBlocks = _appearances->num_blocks() - numBlocks; while (numBlocks--) - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_TRANSMOG, 0); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_TRANSMOG, 0); } _appearances->set(itemModifiedAppearance->ID); uint32 blockIndex = itemModifiedAppearance->ID / 32; uint32 bitIndex = itemModifiedAppearance->ID % 32; - uint32 currentMask = _owner->GetPlayer()->GetDynamicValue(PLAYER_DYNAMIC_FIELD_TRANSMOG, blockIndex); - _owner->GetPlayer()->SetDynamicValue(PLAYER_DYNAMIC_FIELD_TRANSMOG, blockIndex, currentMask | (1 << bitIndex)); + uint32 currentMask = _owner->GetPlayer()->GetDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_TRANSMOG, blockIndex); + _owner->GetPlayer()->SetDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_TRANSMOG, blockIndex, currentMask | (1 << bitIndex)); auto temporaryAppearance = _temporaryAppearances.find(itemModifiedAppearance->ID); if (temporaryAppearance != _temporaryAppearances.end()) { - _owner->GetPlayer()->RemoveDynamicValue(PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG, itemModifiedAppearance->ID); + _owner->GetPlayer()->RemoveDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG, itemModifiedAppearance->ID); _temporaryAppearances.erase(temporaryAppearance); } @@ -770,7 +770,7 @@ void CollectionMgr::AddTemporaryAppearance(ObjectGuid const& itemGuid, ItemModif { std::unordered_set& itemsWithAppearance = _temporaryAppearances[itemModifiedAppearance->ID]; if (itemsWithAppearance.empty()) - _owner->GetPlayer()->AddDynamicValue(PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG, itemModifiedAppearance->ID); + _owner->GetPlayer()->AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG, itemModifiedAppearance->ID); itemsWithAppearance.insert(itemGuid); } @@ -788,7 +788,7 @@ void CollectionMgr::RemoveTemporaryAppearance(Item* item) itr->second.erase(item->GetGUID()); if (itr->second.empty()) { - _owner->GetPlayer()->RemoveDynamicValue(PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG, itemModifiedAppearance->ID); + _owner->GetPlayer()->RemoveDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_CONDITIONAL_TRANSMOG, itemModifiedAppearance->ID); _temporaryAppearances.erase(itr); } } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 39c79abdbe0..34609ed6698 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -140,8 +140,8 @@ Player::Player(WorldSession* session) : Unit(true), m_sceneMgr(this) m_objectType |= TYPEMASK_PLAYER; m_objectTypeId = TYPEID_PLAYER; - m_valuesCount = PLAYER_END; - _dynamicValuesCount = PLAYER_DYNAMIC_END; + m_valuesCount = ACTIVE_PLAYER_END; + _dynamicValuesCount = ACTIVE_PLAYER_DYNAMIC_END; m_session = session; @@ -468,7 +468,7 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_REGENERATE_POWER); SetFloatValue(UNIT_FIELD_HOVERHEIGHT, 1.0f); // default for players in 3.0.3 - SetInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, uint32(-1)); // -1 is default value + SetInt32Value(ACTIVE_PLAYER_FIELD_WATCHED_FACTION_INDEX, uint32(-1)); // -1 is default value SetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_SKIN_ID, createInfo->Skin); SetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_FACE_ID, createInfo->Face); @@ -477,23 +477,23 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac SetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_FACIAL_STYLE, createInfo->FacialHairStyle); for (uint32 i = 0; i < PLAYER_CUSTOM_DISPLAY_SIZE; ++i) SetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_CUSTOM_DISPLAY_OPTION + i, createInfo->CustomDisplay[i]); - SetUInt32Value(PLAYER_FIELD_REST_INFO + REST_STATE_XP, (GetSession()->IsARecruiter() || GetSession()->GetRecruiterId() != 0) ? REST_STATE_RAF_LINKED : REST_STATE_NOT_RAF_LINKED); - SetUInt32Value(PLAYER_FIELD_REST_INFO + REST_STATE_HONOR, REST_STATE_NOT_RAF_LINKED); + SetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + REST_STATE_XP, (GetSession()->IsARecruiter() || GetSession()->GetRecruiterId() != 0) ? REST_STATE_RAF_LINKED : REST_STATE_NOT_RAF_LINKED); + SetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + REST_STATE_HONOR, REST_STATE_NOT_RAF_LINKED); SetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_GENDER, createInfo->Sex); SetByteValue(PLAYER_BYTES_4, PLAYER_BYTES_4_OFFSET_ARENA_FACTION, 0); SetInventorySlotCount(INVENTORY_DEFAULT_SIZE); - SetGuidValue(OBJECT_FIELD_DATA, ObjectGuid::Empty); + SetGuidValue(UNIT_FIELD_GUILD_GUID, ObjectGuid::Empty); SetUInt32Value(PLAYER_GUILDRANK, 0); SetGuildLevel(0); SetUInt32Value(PLAYER_GUILD_TIMESTAMP, 0); for (int i = 0; i < KNOWN_TITLES_SIZE; ++i) - SetUInt64Value(PLAYER__FIELD_KNOWN_TITLES + i, 0); // 0=disabled + SetUInt64Value(ACTIVE_PLAYER_FIELD_KNOWN_TITLES + i, 0); // 0=disabled SetUInt32Value(PLAYER_CHOSEN_TITLE, 0); - SetUInt32Value(PLAYER_FIELD_KILLS, 0); - SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_KILLS, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, 0); // set starting level uint32 start_level = sWorld->getIntConfig(CONFIG_START_PLAYER_LEVEL); @@ -527,7 +527,7 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac InitRunes(); - SetUInt64Value(PLAYER_FIELD_COINAGE, sWorld->getIntConfig(CONFIG_START_PLAYER_MONEY)); + SetUInt64Value(ACTIVE_PLAYER_FIELD_COINAGE, sWorld->getIntConfig(CONFIG_START_PLAYER_MONEY)); SetCurrency(CURRENCY_TYPE_APEXIS_CRYSTALS, sWorld->getIntConfig(CONFIG_CURRENCY_START_APEXIS_CRYSTALS)); SetCurrency(CURRENCY_TYPE_JUSTICE_POINTS, sWorld->getIntConfig(CONFIG_CURRENCY_START_JUSTICE_POINTS)); @@ -535,7 +535,7 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac if (sWorld->getBoolConfig(CONFIG_START_ALL_EXPLORED)) { for (uint16 i=0; iSendPacket(packet.Write()); - uint32 curXP = GetUInt32Value(PLAYER_XP); - uint32 nextLvlXP = GetUInt32Value(PLAYER_NEXT_LEVEL_XP); + uint32 curXP = GetUInt32Value(ACTIVE_PLAYER_FIELD_XP); + uint32 nextLvlXP = GetUInt32Value(ACTIVE_PLAYER_FIELD_NEXT_LEVEL_XP); uint32 newXP = curXP + xp + bonus_xp; while (newXP >= nextLvlXP && level < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)) @@ -2380,7 +2380,7 @@ void Player::GiveXP(uint32 xp, Unit* victim, float group_rate) GiveLevel(level + 1); level = getLevel(); - nextLvlXP = GetUInt32Value(PLAYER_NEXT_LEVEL_XP); + nextLvlXP = GetUInt32Value(ACTIVE_PLAYER_FIELD_NEXT_LEVEL_XP); } SetXP(newXP); @@ -2425,7 +2425,7 @@ void Player::GiveLevel(uint8 level) GetSession()->SendPacket(packet.Write()); - SetUInt32Value(PLAYER_NEXT_LEVEL_XP, sObjectMgr->GetXPForLevel(level)); + SetUInt32Value(ACTIVE_PLAYER_FIELD_NEXT_LEVEL_XP, sObjectMgr->GetXPForLevel(level)); //update level, max level of skills m_Played_time[PLAYED_TIME_LEVEL] = 0; // Level Played Time reset @@ -2489,8 +2489,8 @@ void Player::GiveLevel(uint8 level) { ++m_grantableLevels; - if (!HasByteFlag(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_RAF_GRANTABLE_LEVEL, 0x01)) - SetByteFlag(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_RAF_GRANTABLE_LEVEL, 0x01); + if (!HasByteFlag(ACTIVE_PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_RAF_GRANTABLE_LEVEL, 0x01)) + SetByteFlag(ACTIVE_PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_RAF_GRANTABLE_LEVEL, 0x01); } } } @@ -2520,7 +2520,7 @@ void Player::InitTalentForLevel() RemoveTalent(talent); } - SetUInt32Value(PLAYER_FIELD_MAX_TALENT_TIERS, talentTiers); + SetUInt32Value(ACTIVE_PLAYER_FIELD_MAX_TALENT_TIERS, talentTiers); if (!GetSession()->PlayerLoading()) SendTalentsInfoData(); // update at client @@ -2537,8 +2537,8 @@ void Player::InitStatsForLevel(bool reapplyMods) PlayerLevelInfo info; sObjectMgr->GetPlayerLevelInfo(getRace(), getClass(), getLevel(), &info); - SetUInt32Value(PLAYER_FIELD_MAX_LEVEL, sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)); - SetUInt32Value(PLAYER_NEXT_LEVEL_XP, sObjectMgr->GetXPForLevel(getLevel())); + SetUInt32Value(ACTIVE_PLAYER_FIELD_MAX_LEVEL, sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)); + SetUInt32Value(ACTIVE_PLAYER_FIELD_NEXT_LEVEL_XP, sObjectMgr->GetXPForLevel(getLevel())); // reset before any aura state sources (health set/aura apply) SetUInt32Value(UNIT_FIELD_AURASTATE, 0); @@ -2568,26 +2568,26 @@ void Player::InitStatsForLevel(bool reapplyMods) //set create powers SetCreateMana(basemana); - SetArmor(int32(m_createStats[STAT_AGILITY]*2)); + SetArmor(int32(m_createStats[STAT_AGILITY]*2), 0); InitStatBuffMods(); //reset rating fields values - for (uint16 index = PLAYER_FIELD_COMBAT_RATING_1; index < PLAYER_FIELD_COMBAT_RATING_1 + MAX_COMBAT_RATING; ++index) - SetUInt32Value(index, 0); + for (uint16 index = 0; index < MAX_COMBAT_RATING; ++index) + SetUInt32Value(ACTIVE_PLAYER_FIELD_COMBAT_RATING + index, 0); - SetUInt32Value(PLAYER_FIELD_MOD_HEALING_DONE_POS, 0); - SetFloatValue(PLAYER_FIELD_MOD_HEALING_PCT, 1.0f); - SetFloatValue(PLAYER_FIELD_MOD_HEALING_DONE_PCT, 1.0f); - SetFloatValue(PLAYER_FIELD_MOD_PERIODIC_HEALING_DONE_PERCENT, 1.0f); + SetUInt32Value(ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_POS, 0); + SetFloatValue(ACTIVE_PLAYER_FIELD_MOD_HEALING_PCT, 1.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_PCT, 1.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_MOD_PERIODIC_HEALING_DONE_PERCENT, 1.0f); for (uint8 i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i) { - SetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + i, 0); - SetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i, 0); - SetFloatValue(PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i, 1.00f); + SetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + i, 0); + SetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i, 0); + SetFloatValue(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i, 1.00f); } - SetFloatValue(PLAYER_FIELD_MOD_SPELL_POWER_PCT, 1.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_MOD_SPELL_POWER_PCT, 1.0f); //reset attack power, damage and attack speed fields for (uint8 i = BASE_ATTACK; i < MAX_ATTACK; ++i) @@ -2601,8 +2601,8 @@ void Player::InitStatsForLevel(bool reapplyMods) SetFloatValue(UNIT_FIELD_MAXRANGEDDAMAGE, 0.0f); for (uint16 i = 0; i < 3; ++i) { - SetFloatValue(PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS + i, 1.0f); - SetFloatValue(PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS + i, 1.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_WEAPON_DMG_MULTIPLIERS + i, 1.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_WEAPON_ATK_SPEED_MULTIPLIERS + i, 1.0f); } SetInt32Value(UNIT_FIELD_ATTACK_POWER, 0); @@ -2611,44 +2611,42 @@ void Player::InitStatsForLevel(bool reapplyMods) SetFloatValue(UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER, 0.0f); // Base crit values (will be recalculated in UpdateAllStats() at loading and in _ApplyAllStatBonuses() at reset - SetFloatValue(PLAYER_CRIT_PERCENTAGE, 0.0f); - SetFloatValue(PLAYER_OFFHAND_CRIT_PERCENTAGE, 0.0f); - SetFloatValue(PLAYER_RANGED_CRIT_PERCENTAGE, 0.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_CRIT_PERCENTAGE, 0.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_OFFHAND_CRIT_PERCENTAGE, 0.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_RANGED_CRIT_PERCENTAGE, 0.0f); // Init spell schools (will be recalculated in UpdateAllStats() at loading and in _ApplyAllStatBonuses() at reset - SetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1, 0.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_SPELL_CRIT_PERCENTAGE1, 0.0f); - SetFloatValue(PLAYER_PARRY_PERCENTAGE, 0.0f); - SetFloatValue(PLAYER_BLOCK_PERCENTAGE, 0.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_PARRY_PERCENTAGE, 0.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_BLOCK_PERCENTAGE, 0.0f); // Static 30% damage blocked - SetUInt32Value(PLAYER_SHIELD_BLOCK, 30); + SetUInt32Value(ACTIVE_PLAYER_FIELD_SHIELD_BLOCK, 30); // Dodge percentage - SetFloatValue(PLAYER_DODGE_PERCENTAGE, 0.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_DODGE_PERCENTAGE, 0.0f); // set armor (resistance 0) to original value (create_agility*2) - SetArmor(int32(m_createStats[STAT_AGILITY]*2)); - SetResistanceBuffMods(SPELL_SCHOOL_NORMAL, true, 0.0f); - SetResistanceBuffMods(SPELL_SCHOOL_NORMAL, false, 0.0f); + SetArmor(int32(m_createStats[STAT_AGILITY]*2), 0); + SetBonusResistanceMod(SPELL_SCHOOL_NORMAL, 0); // set other resistance to original value (0) for (uint8 i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i) { SetResistance(SpellSchools(i), 0); - SetResistanceBuffMods(SpellSchools(i), true, 0.0f); - SetResistanceBuffMods(SpellSchools(i), false, 0.0f); + SetBonusResistanceMod(SpellSchools(i), 0); } - SetUInt32Value(PLAYER_FIELD_MOD_TARGET_RESISTANCE, 0); - SetUInt32Value(PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_MOD_TARGET_RESISTANCE, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE, 0); for (uint8 i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i) { SetUInt32Value(UNIT_FIELD_POWER_COST_MODIFIER + i, 0); SetFloatValue(UNIT_FIELD_POWER_COST_MULTIPLIER + i, 0.0f); } // Reset no reagent cost field - for (uint8 i = 0; i < 3; ++i) - SetUInt32Value(PLAYER_NO_REAGENT_COST_1 + i, 0); + for (uint8 i = 0; i < 4; ++i) + SetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST + i, 0); // Init data for form but skip reapply item mods for form InitDataForForm(reapplyMods); @@ -2680,9 +2678,9 @@ void Player::InitStatsForLevel(bool reapplyMods) RemoveByteFlag(UNIT_FIELD_BYTES_2, UNIT_BYTES_2_OFFSET_PVP_FLAG, UNIT_BYTE2_FLAG_FFA_PVP | UNIT_BYTE2_FLAG_SANCTUARY); // restore if need some important flags - SetByteValue(PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_IGNORE_POWER_REGEN_PREDICTION_MASK, 0); - SetByteValue(PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, 0); - SetByteValue(PLAYER_FIELD_BYTES2, 3, 0); + SetByteValue(ACTIVE_PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_IGNORE_POWER_REGEN_PREDICTION_MASK, 0); + SetByteValue(ACTIVE_PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, 0); + SetByteValue(ACTIVE_PLAYER_FIELD_BYTES2, 3, 0); if (reapplyMods) // reapply stats values only on .reset stats (level) command _ApplyAllStatBonuses(); @@ -4299,7 +4297,7 @@ void Player::KillPlayer() //SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_IN_PVP); SetUInt32Value(OBJECT_DYNAMIC_FLAGS, UNIT_DYNFLAG_NONE); - ApplyModFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER, !sMapStore.LookupEntry(GetMapId())->Instanceable() && !HasAuraType(SPELL_AURA_PREVENT_RESURRECTION)); + ApplyModFlag(ACTIVE_PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER, !sMapStore.LookupEntry(GetMapId())->Instanceable() && !HasAuraType(SPELL_AURA_PREVENT_RESURRECTION)); // 6 minutes until repop at graveyard m_deathTimer = 6 * MINUTE * IN_MILLISECONDS; @@ -4994,7 +4992,7 @@ float Player::GetRatingMultiplier(CombatRating cr) const float Player::GetRatingBonusValue(CombatRating cr) const { - float baseResult = float(GetUInt32Value(PLAYER_FIELD_COMBAT_RATING_1 + cr)) * GetRatingMultiplier(cr); + float baseResult = float(GetUInt32Value(ACTIVE_PLAYER_FIELD_COMBAT_RATING + cr)) * GetRatingMultiplier(cr); if (cr != CR_RESILIENCE_PLAYER_DAMAGE) return baseResult; return float(1.0f - pow(0.99f, baseResult)) * 100.0f; @@ -5006,9 +5004,9 @@ float Player::GetExpertiseDodgeOrParryReduction(WeaponAttackType attType) const switch (attType) { case BASE_ATTACK: - return baseExpertise + GetUInt32Value(PLAYER_EXPERTISE) / 4.0f; + return baseExpertise + GetUInt32Value(ACTIVE_PLAYER_FIELD_EXPERTISE) / 4.0f; case OFF_ATTACK: - return baseExpertise + GetUInt32Value(PLAYER_OFFHAND_EXPERTISE) / 4.0f; + return baseExpertise + GetUInt32Value(ACTIVE_PLAYER_FIELD_OFFHAND_EXPERTISE) / 4.0f; default: break; } @@ -5039,8 +5037,8 @@ void Player::UpdateRating(CombatRating cr) if (amount < 0) amount = 0; - uint32 oldRating = GetUInt32Value(PLAYER_FIELD_COMBAT_RATING_1 + cr); - SetUInt32Value(PLAYER_FIELD_COMBAT_RATING_1 + cr, uint32(amount)); + uint32 oldRating = GetUInt32Value(ACTIVE_PLAYER_FIELD_COMBAT_RATING + cr); + SetUInt32Value(ACTIVE_PLAYER_FIELD_COMBAT_RATING + cr, uint32(amount)); bool affectStats = CanModifyStats(); @@ -5188,8 +5186,8 @@ bool Player::UpdateSkill(uint32 skill_id, uint32 step) uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; // itr->second.pos % 2 - uint16 value = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); - uint16 max = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); + uint16 value = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); + uint16 max = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); if (!max || !value || value >= max) return false; @@ -5200,7 +5198,7 @@ bool Player::UpdateSkill(uint32 skill_id, uint32 step) if (new_value > max) new_value = max; - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, new_value); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, new_value); if (itr->second.uState != SKILL_NEW) itr->second.uState = SKILL_CHANGED; @@ -5346,8 +5344,8 @@ bool Player::UpdateSkillPro(uint16 skillId, int32 chance, uint32 step) uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; // itr->second.pos % 2 - uint16 value = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); - uint16 max = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); + uint16 value = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); + uint16 max = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); if (!max || !value || value >= max) return false; @@ -5363,7 +5361,7 @@ bool Player::UpdateSkillPro(uint16 skillId, int32 chance, uint32 step) if (new_value > max) new_value = max; - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, new_value); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, new_value); if (itr->second.uState != SKILL_NEW) itr->second.uState = SKILL_CHANGED; @@ -5390,7 +5388,7 @@ void Player::ModifySkillBonus(uint32 skillid, int32 val, bool talent) if (itr == mSkillStatus.end() || itr->second.uState == SKILL_DELETED) return; - uint16 field = itr->second.pos / 2 + (talent ? PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET : PLAYER_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET); + uint16 field = itr->second.pos / 2 + (talent ? ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET : ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET); uint8 offset = itr->second.pos & 1; // itr->second.pos % 2 uint16 bonus = GetUInt16Value(field, offset); @@ -5419,13 +5417,13 @@ void Player::UpdateSkillsForLevel() { if (!IsWeaponSkill(rcEntry->SkillID)) { - uint16 max = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); + uint16 max = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); /// update only level dependent max skill values if (max != 1) { - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, maxSkill); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, maxSkill); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, maxSkill); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, maxSkill); if (itr->second.uState != SKILL_NEW) itr->second.uState = SKILL_CHANGED; } @@ -5433,7 +5431,7 @@ void Player::UpdateSkillsForLevel() } // Update level dependent skillline spells - LearnSkillRewardedSpells(rcEntry->SkillID, GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset)); + LearnSkillRewardedSpells(rcEntry->SkillID, GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset)); } } @@ -5458,11 +5456,11 @@ void Player::UpdateSkillsToMaxSkillsForLevel() uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; // itr->second.pos % 2 - uint16 max = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); + uint16 max = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); if (max > 1) { - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, max); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, max); if (itr->second.uState != SKILL_NEW) itr->second.uState = SKILL_CHANGED; @@ -5485,7 +5483,7 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) { uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; // itr->second.pos % 2 - currVal = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); + currVal = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); if (newVal) { // if skill value is going down, update enchantments before setting the new value @@ -5493,10 +5491,10 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) UpdateSkillEnchantments(id, currVal, newVal); // update step - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, step); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, step); // update value - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, newVal); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, maxVal); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, newVal); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, maxVal); if (itr->second.uState != SKILL_NEW) itr->second.uState = SKILL_CHANGED; @@ -5514,12 +5512,12 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) //remove enchantments needing this skill UpdateSkillEnchantments(id, currVal, 0); // clear skill fields - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset, 0); // mark as deleted or simply remove from map if not saved yet if (itr->second.uState != SKILL_NEW) @@ -5534,10 +5532,10 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) RemoveSpell(sSpellMgr->GetFirstSpellInChain(pAbility->Spell)); // Clear profession lines - if (GetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1) == id) - SetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1, 0); - else if (GetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1 + 1) == id) - SetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1 + 1, 0); + if (GetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE) == id) + SetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE, 0); + else if (GetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE + 1) == id) + SetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE + 1, 0); } } else if (newVal) //add @@ -5548,7 +5546,7 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) uint16 field = i / 2; uint8 offset = i & 1; // i % 2 - if (!GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_ID_OFFSET + field, offset)) + if (!GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_ID_OFFSET + field, offset)) { SkillLineEntry const* skillEntry = sSkillLineStore.LookupEntry(id); if (!skillEntry) @@ -5558,18 +5556,18 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) return; } - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, id); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, id); if (skillEntry->CategoryID == SKILL_CATEGORY_PROFESSION) { - if (!GetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1)) - SetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1, id); - else if (!GetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1 + 1)) - SetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1 + 1, id); + if (!GetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE)) + SetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE, id); + else if (!GetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE + 1)) + SetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE + 1, id); } - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, step); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, newVal); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, maxVal); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, step); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, newVal); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, maxVal); UpdateSkillEnchantments(id, currVal, newVal); UpdateCriteria(CRITERIA_TYPE_REACH_SKILL_LEVEL, id); @@ -5585,8 +5583,8 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) mSkillStatus.insert(SkillStatusMap::value_type(id, SkillStatusData(i, SKILL_NEW))); // apply skill bonuses - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset, 0); // temporary bonuses AuraEffectList const& mModSkill = GetAuraEffectsByType(SPELL_AURA_MOD_SKILL); for (AuraEffectList::const_iterator j = mModSkill.begin(); j != mModSkill.end(); ++j) @@ -5629,7 +5627,7 @@ uint16 Player::GetSkillStep(uint16 skill) const if (itr == mSkillStatus.end() || itr->second.uState == SKILL_DELETED) return 0; - return GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_STEP_OFFSET + itr->second.pos / 2, itr->second.pos & 1); + return GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_STEP_OFFSET + itr->second.pos / 2, itr->second.pos & 1); } uint16 Player::GetSkillValue(uint32 skill) const @@ -5644,9 +5642,9 @@ uint16 Player::GetSkillValue(uint32 skill) const uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; - int32 result = int32(GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset)); - result += int32(GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset)); - result += int32(GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset)); + int32 result = int32(GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset)); + result += int32(GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset)); + result += int32(GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset)); return result < 0 ? 0 : result; } @@ -5662,9 +5660,9 @@ uint16 Player::GetMaxSkillValue(uint32 skill) const uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; - int32 result = int32(GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset)); - result += int32(GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset)); - result += int32(GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset)); + int32 result = int32(GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset)); + result += int32(GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset)); + result += int32(GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset)); return result < 0 ? 0 : result; } @@ -5680,7 +5678,7 @@ uint16 Player::GetPureMaxSkillValue(uint32 skill) const uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; - return GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); + return GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); } uint16 Player::GetBaseSkillValue(uint32 skill) const @@ -5695,8 +5693,8 @@ uint16 Player::GetBaseSkillValue(uint32 skill) const uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; - int32 result = int32(GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset)); - result += int32(GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset)); + int32 result = int32(GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset)); + result += int32(GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset)); return result < 0 ? 0 : result; } @@ -5712,7 +5710,7 @@ uint16 Player::GetPureSkillValue(uint32 skill) const uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; - return GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); + return GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); } int16 Player::GetSkillPermBonusValue(uint32 skill) const @@ -5727,7 +5725,7 @@ int16 Player::GetSkillPermBonusValue(uint32 skill) const uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; - return GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset); + return GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset); } int16 Player::GetSkillTempBonusValue(uint32 skill) const @@ -5742,7 +5740,7 @@ int16 Player::GetSkillTempBonusValue(uint32 skill) const uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; - return GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset); + return GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset); } void Player::SendActionButtons(uint32 state) const @@ -5977,11 +5975,11 @@ void Player::CheckAreaExploreAndOutdoor() } uint32 val = (uint32)(1 << (areaEntry->AreaBit % 32)); - uint32 currFields = GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset); + uint32 currFields = GetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + offset); if (!(currFields & val)) { - SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, (uint32)(currFields | val)); + SetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + offset, (uint32)(currFields | val)); UpdateCriteria(CRITERIA_TYPE_EXPLORE_AREA); @@ -6256,14 +6254,14 @@ void Player::UpdateHonorFields() if (m_lastHonorUpdateTime >= yesterday) { // this is the first update today, reset today's contribution - uint16 killsToday = GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS); - SetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS, 0); - SetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS, killsToday); + uint16 killsToday = GetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS); + SetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS, killsToday); } else { // no honor/kills yesterday or today, reset - SetUInt32Value(PLAYER_FIELD_KILLS, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_KILLS, 0); } } @@ -6347,9 +6345,9 @@ bool Player::RewardHonor(Unit* victim, uint32 groupsize, int32 honor, bool pvpto honor_f = std::ceil(Trinity::Honor::hk_honor_at_level_f(k_level) * (v_level - k_grey) / (k_level - k_grey)); // count the number of playerkills in one day - ApplyModUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS, 1, true); + ApplyModUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS, 1, true); // and those in a lifetime - ApplyModUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, 1, true); + ApplyModUInt32Value(ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, 1, true); UpdateCriteria(CRITERIA_TYPE_EARN_HONORABLE_KILL); UpdateCriteria(CRITERIA_TYPE_HK_CLASS, victim->getClass()); UpdateCriteria(CRITERIA_TYPE_HK_RACE, victim->getRace()); @@ -6427,10 +6425,9 @@ bool Player::RewardHonor(Unit* victim, uint32 groupsize, int32 honor, bool pvpto return true; } -void Player::_InitHonorLevelOnLoadFromDB(uint32 honor, uint32 honorLevel, uint32 prestigeLevel) +void Player::_InitHonorLevelOnLoadFromDB(uint32 honor, uint32 honorLevel) { SetUInt32Value(PLAYER_FIELD_HONOR_LEVEL, honorLevel); - SetUInt32Value(PLAYER_FIELD_PRESTIGE, prestigeLevel); UpdateHonorNextLevel(); AddHonorXP(honor); @@ -6462,8 +6459,8 @@ void Player::RewardPlayerWithRewardPack(RewardPackEntry const* rewardPackEntry) void Player::AddHonorXP(uint32 xp) { - uint32 currentHonorXP = GetUInt32Value(PLAYER_FIELD_HONOR); - uint32 nextHonorLevelXP = GetUInt32Value(PLAYER_FIELD_HONOR_NEXT_LEVEL); + uint32 currentHonorXP = GetUInt32Value(ACTIVE_PLAYER_FIELD_HONOR); + uint32 nextHonorLevelXP = GetUInt32Value(ACTIVE_PLAYER_FIELD_HONOR_NEXT_LEVEL); uint32 newHonorXP = currentHonorXP + xp; uint32 honorLevel = GetHonorLevel(); @@ -6478,10 +6475,10 @@ void Player::AddHonorXP(uint32 xp) SetHonorLevel(honorLevel + 1); honorLevel = GetHonorLevel(); - nextHonorLevelXP = GetUInt32Value(PLAYER_FIELD_HONOR_NEXT_LEVEL); + nextHonorLevelXP = GetUInt32Value(ACTIVE_PLAYER_FIELD_HONOR_NEXT_LEVEL); } - SetUInt32Value(PLAYER_FIELD_HONOR, IsMaxHonorLevel() ? 0 : newHonorXP); + SetUInt32Value(ACTIVE_PLAYER_FIELD_HONOR, IsMaxHonorLevel() ? 0 : newHonorXP); } void Player::SetHonorLevel(uint8 level) @@ -6501,7 +6498,7 @@ void Player::UpdateHonorNextLevel() // 5500 at honor level 1 // no idea what between here // 8800 at honor level ~14 (never goes above 8800) - SetUInt32Value(PLAYER_FIELD_HONOR_NEXT_LEVEL, 8800); + SetUInt32Value(ACTIVE_PLAYER_FIELD_HONOR_NEXT_LEVEL, 8800); } void Player::_LoadCurrency(PreparedQueryResult result) @@ -6842,12 +6839,11 @@ uint32 Player::GetCurrencyTotalCap(CurrencyTypesEntry const* currency) const void Player::SetInGuild(ObjectGuid::LowType guildId) { if (guildId) - SetGuidValue(OBJECT_FIELD_DATA, ObjectGuid::Create(guildId)); + SetGuidValue(UNIT_FIELD_GUILD_GUID, ObjectGuid::Create(guildId)); else - SetGuidValue(OBJECT_FIELD_DATA, ObjectGuid::Empty); + SetGuidValue(UNIT_FIELD_GUILD_GUID, ObjectGuid::Empty); ApplyModFlag(PLAYER_FLAGS, PLAYER_FLAGS_GUILD_LEVEL_ENABLED, guildId != 0); - SetUInt16Value(OBJECT_FIELD_TYPE, 1, guildId != 0); } ObjectGuid::LowType Player::GetGuildIdFromDB(ObjectGuid guid) @@ -6872,7 +6868,7 @@ uint8 Player::GetRankFromDB(ObjectGuid guid) void Player::SetArenaTeamInfoField(uint8 slot, ArenaTeamInfoType type, uint32 value) { - SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (slot * ARENA_TEAM_END) + type, value); + SetUInt32Value(ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO + (slot * ARENA_TEAM_END) + type, value); } void Player::SetInArenaTeam(uint32 ArenaTeamId, uint8 slot, uint8 type) @@ -7461,6 +7457,9 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply) case ITEM_MOD_MASTERY_RATING: ApplyRatingMod(CR_MASTERY, int32(val * combatRatingMultiplier), apply); break; + case ITEM_MOD_EXTRA_ARMOR: + HandleStatModifier(UNIT_MOD_ARMOR, TOTAL_VALUE, float(val), apply); + break; case ITEM_MOD_FIRE_RESISTANCE: HandleStatModifier(UNIT_MOD_RESISTANCE_FIRE, BASE_VALUE, float(val), apply); break; @@ -7542,29 +7541,7 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply) } if (uint32 armor = item->GetArmor(this)) - { - UnitModifierType modType = TOTAL_VALUE; - if (proto->GetClass() == ITEM_CLASS_ARMOR) - { - switch (proto->GetSubClass()) - { - case ITEM_SUBCLASS_ARMOR_CLOTH: - case ITEM_SUBCLASS_ARMOR_LEATHER: - case ITEM_SUBCLASS_ARMOR_MAIL: - case ITEM_SUBCLASS_ARMOR_PLATE: - case ITEM_SUBCLASS_ARMOR_SHIELD: - modType = BASE_VALUE; - break; - } - } - - HandleStatModifier(UNIT_MOD_ARMOR, modType, float(armor), apply); - } - - /* - if (proto->GetArmorDamageModifier() > 0) - HandleStatModifier(UNIT_MOD_ARMOR, TOTAL_VALUE, float(proto->GetArmorDamageModifier()), apply); - */ + HandleStatModifier(UNIT_MOD_ARMOR, BASE_VALUE, float(armor), apply); WeaponAttackType attType = BASE_ATTACK; @@ -9934,7 +9911,7 @@ void Player::SetInventorySlotCount(uint8 slots) } } - SetByteValue(PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_NUM_BACKPACK_SLOTS, slots); + SetByteValue(ACTIVE_PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_NUM_BACKPACK_SLOTS, slots); } bool Player::HasItemCount(uint32 item, uint32 count, bool inBankAlso) const @@ -11828,7 +11805,7 @@ Item* Player::_StoreItem(uint16 pos, Item* pItem, uint32 count, bool clone, bool if (!pBag) { m_items[slot] = pItem; - SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), pItem->GetGUID()); + SetGuidValue(ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), pItem->GetGUID()); pItem->SetGuidValue(ITEM_FIELD_CONTAINED, GetGUID()); pItem->SetOwnerGUID(GetGUID()); @@ -12175,7 +12152,7 @@ void Player::VisualizeItem(uint8 slot, Item* pItem) GetName().c_str(), GetGUID().ToString().c_str(), slot, pItem->GetEntry()); m_items[slot] = pItem; - SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), pItem->GetGUID()); + SetGuidValue(ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), pItem->GetGUID()); pItem->SetGuidValue(ITEM_FIELD_CONTAINED, GetGUID()); pItem->SetOwnerGUID(GetGUID()); pItem->SetSlot(slot); @@ -12255,7 +12232,7 @@ void Player::RemoveItem(uint8 bag, uint8 slot, bool update) } m_items[slot] = nullptr; - SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), ObjectGuid::Empty); + SetGuidValue(ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), ObjectGuid::Empty); if (slot < EQUIPMENT_SLOT_END) { @@ -12357,7 +12334,7 @@ void Player::DestroyItem(uint8 bag, uint8 slot, bool update) if (bag == INVENTORY_SLOT_BAG_0) { - SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), ObjectGuid::Empty); + SetGuidValue(ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), ObjectGuid::Empty); // equipment and equipped bags can have applied bonuses if (slot < INVENTORY_SLOT_BAG_END) @@ -13326,7 +13303,7 @@ void Player::AddItemToBuyBackSlot(Item* pItem) // if current back slot non-empty search oldest or free if (m_items[slot]) { - uint32 oldest_time = GetUInt32Value(PLAYER_FIELD_BUYBACK_TIMESTAMP_1); + uint32 oldest_time = GetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP); uint32 oldest_slot = BUYBACK_SLOT_START; for (uint32 i = BUYBACK_SLOT_START+1; i < BUYBACK_SLOT_END; ++i) @@ -13338,7 +13315,7 @@ void Player::AddItemToBuyBackSlot(Item* pItem) break; } - uint32 i_time = GetUInt32Value(PLAYER_FIELD_BUYBACK_TIMESTAMP_1 + i - BUYBACK_SLOT_START); + uint32 i_time = GetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP + i - BUYBACK_SLOT_START); if (oldest_time > i_time) { @@ -13360,13 +13337,13 @@ void Player::AddItemToBuyBackSlot(Item* pItem) uint32 etime = uint32(base - m_logintime + (30 * 3600)); uint32 eslot = slot - BUYBACK_SLOT_START; - SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), pItem->GetGUID()); + SetGuidValue(ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), pItem->GetGUID()); if (ItemTemplate const* proto = pItem->GetTemplate()) - SetUInt32Value(PLAYER_FIELD_BUYBACK_PRICE_1 + eslot, proto->GetSellPrice() * pItem->GetCount()); + SetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_PRICE + eslot, proto->GetSellPrice() * pItem->GetCount()); else - SetUInt32Value(PLAYER_FIELD_BUYBACK_PRICE_1 + eslot, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_PRICE + eslot, 0); - SetUInt32Value(PLAYER_FIELD_BUYBACK_TIMESTAMP_1 + eslot, (uint32)etime); + SetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP + eslot, (uint32)etime); // move to next (for non filled list is move most optimized choice) if (m_currentBuybackSlot < BUYBACK_SLOT_END - 1) @@ -13400,9 +13377,9 @@ void Player::RemoveItemFromBuyBackSlot(uint32 slot, bool del) m_items[slot] = nullptr; uint32 eslot = slot - BUYBACK_SLOT_START; - SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), ObjectGuid::Empty); - SetUInt32Value(PLAYER_FIELD_BUYBACK_PRICE_1 + eslot, 0); - SetUInt32Value(PLAYER_FIELD_BUYBACK_TIMESTAMP_1 + eslot, 0); + SetGuidValue(ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), ObjectGuid::Empty); + SetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_PRICE + eslot, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP + eslot, 0); // if current backslot is filled set to now free slot if (m_items[m_currentBuybackSlot]) @@ -15984,7 +15961,7 @@ bool Player::SatisfyQuestDay(Quest const* qInfo, bool /*msg*/) const return true; } - std::vector const& dailies = GetDynamicValues(PLAYER_DYNAMIC_FIELD_DAILY_QUESTS); + std::vector const& dailies = GetDynamicValues(ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS); for (uint32 dailyQuestId : dailies) if (dailyQuestId == qInfo->GetQuestId()) return false; @@ -16418,7 +16395,7 @@ void Player::SetQuestCompletedBit(uint32 questBit, bool completed) if (fieldOffset >= QUESTS_COMPLETED_BITS_SIZE) return; - ApplyModFlag(PLAYER_FIELD_QUEST_COMPLETED + ((questBit - 1) >> 5), 1 << ((questBit - 1) & 31), completed); + ApplyModFlag(ACTIVE_PLAYER_FIELD_QUEST_COMPLETED + ((questBit - 1) >> 5), 1 << ((questBit - 1) & 31), completed); } void Player::AreaExploredOrEventHappens(uint32 questId) @@ -17322,7 +17299,7 @@ void Player::_LoadDeclinedNames(PreparedQueryResult result) void Player::_LoadArenaTeamInfo(PreparedQueryResult result) { // arenateamid, played_week, played_season, personal_rating - memset((void*)&m_uint32Values[PLAYER_FIELD_ARENA_TEAM_INFO_1_1], 0, sizeof(uint32) * MAX_ARENA_SLOT * ARENA_TEAM_END); + memset((void*)&m_uint32Values[ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO], 0, sizeof(uint32) * MAX_ARENA_SLOT * ARENA_TEAM_END); uint16 personalRatingCache[] = {0, 0, 0}; @@ -17609,8 +17586,8 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) SetUInt32Value(UNIT_FIELD_LEVEL, fields[6].GetUInt8()); SetXP(fields[7].GetUInt32()); - _LoadIntoDataField(fields[66].GetString(), PLAYER_EXPLORED_ZONES_1, PLAYER_EXPLORED_ZONES_SIZE); - _LoadIntoDataField(fields[67].GetString(), PLAYER__FIELD_KNOWN_TITLES, KNOWN_TITLES_SIZE * 2); + _LoadIntoDataField(fields[66].GetString(), ACTIVE_PLAYER_FIELD_EXPLORED_ZONES, PLAYER_EXPLORED_ZONES_SIZE); + _LoadIntoDataField(fields[67].GetString(), ACTIVE_PLAYER_FIELD_KNOWN_TITLES, KNOWN_TITLES_SIZE * 2); SetObjectScale(1.0f); SetFloatValue(UNIT_FIELD_HOVERHEIGHT, 1.0f); @@ -17642,7 +17619,7 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) SetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_INEBRIATION, fields[55].GetUInt8()); SetUInt32Value(PLAYER_FLAGS, fields[20].GetUInt32()); SetUInt32Value(PLAYER_FLAGS_EX, fields[21].GetUInt32()); - SetInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, fields[54].GetUInt32()); + SetInt32Value(ACTIVE_PLAYER_FIELD_WATCHED_FACTION_INDEX, fields[54].GetUInt32()); if (!ValidateAppearance( fields[3].GetUInt8(), // race @@ -17660,7 +17637,7 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) } // set which actionbars the client has active - DO NOT REMOVE EVER AGAIN (can be changed though, if it does change fieldwise) - SetByteValue(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES, fields[68].GetUInt8()); + SetByteValue(ACTIVE_PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES, fields[68].GetUInt8()); m_fishingSteps = fields[72].GetUInt8(); @@ -17669,7 +17646,7 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) // cleanup inventory related item value fields (it will be filled correctly in _LoadInventory) for (uint8 slot = EQUIPMENT_SLOT_START; slot < EQUIPMENT_SLOT_END; ++slot) { - SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), ObjectGuid::Empty); + SetGuidValue(ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + (slot * 4), ObjectGuid::Empty); SetVisibleItemSlot(slot, nullptr); delete m_items[slot]; @@ -17726,9 +17703,9 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) } _LoadCurrency(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_CURRENCY)); - SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, fields[50].GetUInt32()); - SetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS, fields[51].GetUInt16()); - SetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS, fields[52].GetUInt16()); + SetUInt32Value(ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, fields[50].GetUInt32()); + SetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS, fields[51].GetUInt16()); + SetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS, fields[52].GetUInt16()); _LoadBoundInstances(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_BOUND_INSTANCES)); _LoadInstanceTimeRestrictions(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_INSTANCE_LOCK_TIMES)); @@ -18058,14 +18035,14 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) SetGuidValue(UNIT_FIELD_CHARMEDBY, ObjectGuid::Empty); SetGuidValue(UNIT_FIELD_CHARM, ObjectGuid::Empty); SetGuidValue(UNIT_FIELD_SUMMON, ObjectGuid::Empty); - SetGuidValue(PLAYER_FARSIGHT, ObjectGuid::Empty); + SetGuidValue(ACTIVE_PLAYER_FIELD_FARSIGHT, ObjectGuid::Empty); SetCreatorGUID(ObjectGuid::Empty); RemoveFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FORCE_MOVEMENT); // reset some aura modifiers before aura apply - SetUInt32Value(PLAYER_TRACK_CREATURES, 0); - SetUInt32Value(PLAYER_TRACK_RESOURCES, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_TRACK_CREATURES, 0); + SetUInt32Value(ACTIVE_PLAYER_FIELD_TRACK_RESOURCES, 0); // make sure the unit is considered out of combat for proper loading ClearInCombat(); @@ -18267,7 +18244,7 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) SetFlag(OBJECT_DYNAMIC_FLAGS, UNIT_DYNFLAG_REFER_A_FRIEND); if (m_grantableLevels > 0) - SetByteValue(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_RAF_GRANTABLE_LEVEL, 0x01); + SetByteValue(ACTIVE_PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_RAF_GRANTABLE_LEVEL, 0x01); _LoadDeclinedNames(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_DECLINED_NAMES)); @@ -18284,9 +18261,9 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder) holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_GARRISON_FOLLOWER_ABILITIES))) _garrison = std::move(garrison); - _InitHonorLevelOnLoadFromDB(fields[73].GetUInt32(), fields[74].GetUInt32(), fields[75].GetUInt32()); + _InitHonorLevelOnLoadFromDB(fields[73].GetUInt32(), fields[74].GetUInt32()); - _restMgr->LoadRestBonus(REST_TYPE_HONOR, PlayerRestState(fields[76].GetUInt8()), fields[77].GetFloat()); + _restMgr->LoadRestBonus(REST_TYPE_HONOR, PlayerRestState(fields[75].GetUInt8()), fields[76].GetFloat()); if (time_diff > 0) { //speed collect rest bonus in offline, in logout, far from tavern, city (section/in hour) @@ -18527,7 +18504,7 @@ void Player::LoadCorpse(PreparedQueryResult result) { Field* fields = result->Fetch(); _corpseLocation.WorldRelocate(fields[0].GetUInt16(), fields[1].GetFloat(), fields[2].GetFloat(), fields[3].GetFloat(), fields[4].GetFloat()); - ApplyModFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER, !sMapStore.LookupEntry(_corpseLocation.GetMapId())->Instanceable()); + ApplyModFlag(ACTIVE_PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER, !sMapStore.LookupEntry(_corpseLocation.GetMapId())->Instanceable()); } else ResurrectPlayer(0.5f); @@ -19252,7 +19229,7 @@ void Player::_LoadDailyQuestStatus(PreparedQueryResult result) if (!quest) continue; - AddDynamicValue(PLAYER_DYNAMIC_FIELD_DAILY_QUESTS, quest_id); + AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS, quest_id); if (uint32 questBit = sDB2Manager.GetQuestUniqueBitFlag(quest_id)) SetQuestCompletedBit(questBit, true); @@ -19930,7 +19907,7 @@ void Player::SaveToDB(bool create /*=false*/) stmt->setUInt8(index++, getClass()); stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_GENDER)); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect stmt->setUInt8(index++, getLevel()); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_XP)); + stmt->setUInt32(index++, GetUInt32Value(ACTIVE_PLAYER_FIELD_XP)); stmt->setUInt64(index++, GetMoney()); stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_SKIN_ID)); stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_FACE_ID)); @@ -19941,7 +19918,7 @@ void Player::SaveToDB(bool create /*=false*/) stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_CUSTOM_DISPLAY_OPTION + i)); stmt->setUInt8(index++, GetInventorySlotCount()); stmt->setUInt8(index++, GetBankBagSlotCount()); - stmt->setUInt8(index++, uint8(GetUInt32Value(PLAYER_FIELD_REST_INFO + REST_STATE_XP))); + stmt->setUInt8(index++, uint8(GetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + REST_STATE_XP))); stmt->setUInt32(index++, GetUInt32Value(PLAYER_FLAGS)); stmt->setUInt32(index++, GetUInt32Value(PLAYER_FLAGS_EX)); stmt->setUInt16(index++, (uint16)GetMapId()); @@ -19986,11 +19963,11 @@ void Player::SaveToDB(bool create /*=false*/) ss << m_taxi.SaveTaxiDestinationsToString(); stmt->setString(index++, ss.str()); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS)); - stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS)); - stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS)); + stmt->setUInt32(index++, GetUInt32Value(ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS)); + stmt->setUInt16(index++, GetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS)); + stmt->setUInt16(index++, GetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS)); stmt->setUInt32(index++, GetUInt32Value(PLAYER_CHOSEN_TITLE)); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX)); + stmt->setUInt32(index++, GetUInt32Value(ACTIVE_PLAYER_FIELD_WATCHED_FACTION_INDEX)); stmt->setUInt8(index++, GetDrunkValue()); stmt->setUInt32(index++, GetHealth()); @@ -20016,7 +19993,7 @@ void Player::SaveToDB(bool create /*=false*/) ss.str(""); for (uint32 i = 0; i < PLAYER_EXPLORED_ZONES_SIZE; ++i) - ss << GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + i) << ' '; + ss << GetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + i) << ' '; stmt->setString(index++, ss.str()); ss.str(""); @@ -20041,10 +20018,10 @@ void Player::SaveToDB(bool create /*=false*/) ss.str(""); for (uint32 i = 0; i < KNOWN_TITLES_SIZE * 2; ++i) - ss << GetUInt32Value(PLAYER__FIELD_KNOWN_TITLES + i) << ' '; + ss << GetUInt32Value(ACTIVE_PLAYER_FIELD_KNOWN_TITLES + i) << ' '; stmt->setString(index++, ss.str()); - stmt->setUInt8(index++, GetByteValue(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES)); + stmt->setUInt8(index++, GetByteValue(ACTIVE_PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES)); stmt->setUInt32(index++, m_grantableLevels); stmt->setUInt32(index++, realm.Build); } @@ -20057,7 +20034,7 @@ void Player::SaveToDB(bool create /*=false*/) stmt->setUInt8(index++, getClass()); stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_GENDER)); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect stmt->setUInt8(index++, getLevel()); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_XP)); + stmt->setUInt32(index++, GetUInt32Value(ACTIVE_PLAYER_FIELD_XP)); stmt->setUInt64(index++, GetMoney()); stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_SKIN_ID)); stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, PLAYER_BYTES_OFFSET_FACE_ID)); @@ -20068,7 +20045,7 @@ void Player::SaveToDB(bool create /*=false*/) stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, PLAYER_BYTES_2_OFFSET_CUSTOM_DISPLAY_OPTION + i)); stmt->setUInt8(index++, GetInventorySlotCount()); stmt->setUInt8(index++, GetBankBagSlotCount()); - stmt->setUInt8(index++, uint8(GetUInt32Value(PLAYER_FIELD_REST_INFO + REST_STATE_XP))); + stmt->setUInt8(index++, uint8(GetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + REST_STATE_XP))); stmt->setUInt32(index++, GetUInt32Value(PLAYER_FLAGS)); stmt->setUInt32(index++, GetUInt32Value(PLAYER_FLAGS_EX)); @@ -20130,11 +20107,11 @@ void Player::SaveToDB(bool create /*=false*/) ss << m_taxi.SaveTaxiDestinationsToString(); stmt->setString(index++, ss.str()); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS)); - stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS)); - stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS)); + stmt->setUInt32(index++, GetUInt32Value(ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS)); + stmt->setUInt16(index++, GetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS)); + stmt->setUInt16(index++, GetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS)); stmt->setUInt32(index++, GetUInt32Value(PLAYER_CHOSEN_TITLE)); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX)); + stmt->setUInt32(index++, GetUInt32Value(ACTIVE_PLAYER_FIELD_WATCHED_FACTION_INDEX)); stmt->setUInt8(index++, GetDrunkValue()); stmt->setUInt32(index++, GetHealth()); @@ -20160,7 +20137,7 @@ void Player::SaveToDB(bool create /*=false*/) ss.str(""); for (uint32 i = 0; i < PLAYER_EXPLORED_ZONES_SIZE; ++i) - ss << GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + i) << ' '; + ss << GetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + i) << ' '; stmt->setString(index++, ss.str()); ss.str(""); @@ -20185,17 +20162,16 @@ void Player::SaveToDB(bool create /*=false*/) ss.str(""); for (uint32 i = 0; i < KNOWN_TITLES_SIZE*2; ++i) - ss << GetUInt32Value(PLAYER__FIELD_KNOWN_TITLES + i) << ' '; + ss << GetUInt32Value(ACTIVE_PLAYER_FIELD_KNOWN_TITLES + i) << ' '; stmt->setString(index++, ss.str()); - stmt->setUInt8(index++, GetByteValue(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES)); + stmt->setUInt8(index++, GetByteValue(ACTIVE_PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES)); stmt->setUInt32(index++, m_grantableLevels); stmt->setUInt8(index++, IsInWorld() && !GetSession()->PlayerLogout() ? 1 : 0); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_HONOR)); + stmt->setUInt32(index++, GetUInt32Value(ACTIVE_PLAYER_FIELD_HONOR)); stmt->setUInt32(index++, GetHonorLevel()); - stmt->setUInt32(index++, GetPrestigeLevel()); - stmt->setUInt8(index++, uint8(GetUInt32Value(PLAYER_FIELD_REST_INFO + REST_STATE_HONOR))); + stmt->setUInt8(index++, uint8(GetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + REST_STATE_HONOR))); stmt->setFloat(index++, finiteAlways(_restMgr->GetRestBonus(REST_TYPE_HONOR))); stmt->setUInt32(index++, realm.Build); @@ -20766,7 +20742,7 @@ void Player::_SaveDailyQuestStatus(SQLTransaction& trans) stmt->setUInt64(0, GetGUID().GetCounter()); trans->Append(stmt); - std::vector const& dailies = GetDynamicValues(PLAYER_DYNAMIC_FIELD_DAILY_QUESTS); + std::vector const& dailies = GetDynamicValues(ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS); for (uint32 questId : dailies) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_QUESTSTATUS_DAILY); @@ -20890,8 +20866,8 @@ void Player::_SaveSkills(SQLTransaction& trans) uint16 field = itr->second.pos / 2; uint8 offset = itr->second.pos & 1; - uint16 value = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); - uint16 max = GetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); + uint16 value = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); + uint16 max = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); switch (itr->second.uState) { @@ -20985,18 +20961,18 @@ void Player::_SaveStats(SQLTransaction& trans) const stmt->setUInt32(index++, GetStat(Stats(i))); for (int i = 0; i < MAX_SPELL_SCHOOL; ++i) - stmt->setUInt32(index++, GetResistance(SpellSchools(i))); - - stmt->setFloat(index++, GetFloatValue(PLAYER_BLOCK_PERCENTAGE)); - stmt->setFloat(index++, GetFloatValue(PLAYER_DODGE_PERCENTAGE)); - stmt->setFloat(index++, GetFloatValue(PLAYER_PARRY_PERCENTAGE)); - stmt->setFloat(index++, GetFloatValue(PLAYER_CRIT_PERCENTAGE)); - stmt->setFloat(index++, GetFloatValue(PLAYER_RANGED_CRIT_PERCENTAGE)); - stmt->setFloat(index++, GetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1)); + stmt->setUInt32(index++, GetResistance(SpellSchools(i)) + GetBonusResistanceMod(SpellSchools(i))); + + stmt->setFloat(index++, GetFloatValue(ACTIVE_PLAYER_FIELD_BLOCK_PERCENTAGE)); + stmt->setFloat(index++, GetFloatValue(ACTIVE_PLAYER_FIELD_DODGE_PERCENTAGE)); + stmt->setFloat(index++, GetFloatValue(ACTIVE_PLAYER_FIELD_PARRY_PERCENTAGE)); + stmt->setFloat(index++, GetFloatValue(ACTIVE_PLAYER_FIELD_CRIT_PERCENTAGE)); + stmt->setFloat(index++, GetFloatValue(ACTIVE_PLAYER_FIELD_RANGED_CRIT_PERCENTAGE)); + stmt->setFloat(index++, GetFloatValue(ACTIVE_PLAYER_FIELD_SPELL_CRIT_PERCENTAGE1)); stmt->setUInt32(index++, GetUInt32Value(UNIT_FIELD_ATTACK_POWER)); stmt->setUInt32(index++, GetUInt32Value(UNIT_FIELD_RANGED_ATTACK_POWER)); stmt->setUInt32(index++, GetBaseSpellPowerBonus()); - stmt->setUInt32(index, GetUInt32Value(PLAYER_FIELD_COMBAT_RATING_1 + CR_RESILIENCE_PLAYER_DAMAGE)); + stmt->setUInt32(index, GetUInt32Value(ACTIVE_PLAYER_FIELD_COMBAT_RATING + CR_RESILIENCE_PLAYER_DAMAGE)); trans->Append(stmt); } @@ -21010,10 +20986,10 @@ void Player::outDebugValues() const TC_LOG_DEBUG("entities.unit", "AGILITY is: \t\t%f\t\tSTRENGTH is: \t\t%f", GetStat(STAT_AGILITY), GetStat(STAT_STRENGTH)); TC_LOG_DEBUG("entities.unit", "INTELLECT is: \t\t%f", GetStat(STAT_INTELLECT)); TC_LOG_DEBUG("entities.unit", "STAMINA is: \t\t%f", GetStat(STAT_STAMINA)); - TC_LOG_DEBUG("entities.unit", "Armor is: \t\t%u\t\tBlock is: \t\t%f", GetArmor(), GetFloatValue(PLAYER_BLOCK_PERCENTAGE)); - TC_LOG_DEBUG("entities.unit", "HolyRes is: \t\t%u\t\tFireRes is: \t\t%u", GetResistance(SPELL_SCHOOL_HOLY), GetResistance(SPELL_SCHOOL_FIRE)); - TC_LOG_DEBUG("entities.unit", "NatureRes is: \t\t%u\t\tFrostRes is: \t\t%u", GetResistance(SPELL_SCHOOL_NATURE), GetResistance(SPELL_SCHOOL_FROST)); - TC_LOG_DEBUG("entities.unit", "ShadowRes is: \t\t%u\t\tArcaneRes is: \t\t%u", GetResistance(SPELL_SCHOOL_SHADOW), GetResistance(SPELL_SCHOOL_ARCANE)); + TC_LOG_DEBUG("entities.unit", "Armor is: \t\t%u\t\tBlock is: \t\t%f", GetArmor(), GetFloatValue(ACTIVE_PLAYER_FIELD_BLOCK_PERCENTAGE)); + TC_LOG_DEBUG("entities.unit", "HolyRes is: \t\t%u\t\tFireRes is: \t\t%u", GetResistance(SPELL_SCHOOL_MASK_HOLY), GetResistance(SPELL_SCHOOL_MASK_FIRE)); + TC_LOG_DEBUG("entities.unit", "NatureRes is: \t\t%u\t\tFrostRes is: \t\t%u", GetResistance(SPELL_SCHOOL_MASK_NATURE), GetResistance(SPELL_SCHOOL_MASK_FROST)); + TC_LOG_DEBUG("entities.unit", "ShadowRes is: \t\t%u\t\tArcaneRes is: \t\t%u", GetResistance(SPELL_SCHOOL_MASK_SHADOW), GetResistance(SPELL_SCHOOL_MASK_ARCANE)); TC_LOG_DEBUG("entities.unit", "MIN_DAMAGE is: \t\t%f\tMAX_DAMAGE is: \t\t%f", GetFloatValue(UNIT_FIELD_MINDAMAGE), GetFloatValue(UNIT_FIELD_MAXDAMAGE)); TC_LOG_DEBUG("entities.unit", "MIN_OFFHAND_DAMAGE is: \t%f\tMAX_OFFHAND_DAMAGE is: \t%f", GetFloatValue(UNIT_FIELD_MINOFFHANDDAMAGE), GetFloatValue(UNIT_FIELD_MAXOFFHANDDAMAGE)); TC_LOG_DEBUG("entities.unit", "MIN_RANGED_DAMAGE is: \t%f\tMAX_RANGED_DAMAGE is: \t%f", GetFloatValue(UNIT_FIELD_MINRANGEDDAMAGE), GetFloatValue(UNIT_FIELD_MAXRANGEDDAMAGE)); @@ -23263,7 +23239,7 @@ bool Player::CanAlwaysSee(WorldObject const* obj) const if (m_unitMovedByMe == obj) return true; - ObjectGuid guid = GetGuidValue(PLAYER_FARSIGHT); + ObjectGuid guid = GetGuidValue(ACTIVE_PLAYER_FIELD_FARSIGHT); if (!guid.IsEmpty()) if (obj->GetGUID() == guid) return true; @@ -23535,7 +23511,7 @@ bool Player::HasEnoughMoney(int64 amount) const void Player::SetMoney(uint64 value) { - SetUInt64Value(PLAYER_FIELD_COINAGE, value); + SetUInt64Value(ACTIVE_PLAYER_FIELD_COINAGE, value); MoneyChanged(value); UpdateCriteria(CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED); } @@ -24182,7 +24158,7 @@ void Player::SetDailyQuestStatus(uint32 quest_id) { if (!qQuest->IsDFQuest()) { - AddDynamicValue(PLAYER_DYNAMIC_FIELD_DAILY_QUESTS, quest_id); + AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS, quest_id); m_lastDailyQuestTime = time(nullptr); // last daily quest time m_DailyQuestChanged = true; } @@ -24200,7 +24176,7 @@ bool Player::IsDailyQuestDone(uint32 quest_id) bool found = false; if (sObjectMgr->GetQuestTemplate(quest_id)) { - std::vector const& dailies = GetDynamicValues(PLAYER_DYNAMIC_FIELD_DAILY_QUESTS); + std::vector const& dailies = GetDynamicValues(ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS); for (uint32 dailyQuestId : dailies) { if (dailyQuestId == quest_id) @@ -24238,15 +24214,15 @@ void Player::SetMonthlyQuestStatus(uint32 quest_id) void Player::DailyReset() { - for (uint32 questId : GetDynamicValues(PLAYER_DYNAMIC_FIELD_DAILY_QUESTS)) + for (uint32 questId : GetDynamicValues(ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS)) if (uint32 questBit = sDB2Manager.GetQuestUniqueBitFlag(questId)) SetQuestCompletedBit(questBit, false); WorldPackets::Quest::DailyQuestsReset dailyQuestsReset; - dailyQuestsReset.Count = int32(GetDynamicValues(PLAYER_DYNAMIC_FIELD_DAILY_QUESTS).size()); + dailyQuestsReset.Count = int32(GetDynamicValues(ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS).size()); SendDirectMessage(dailyQuestsReset.Write()); - ClearDynamicValue(PLAYER_DYNAMIC_FIELD_DAILY_QUESTS); + ClearDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_DAILY_QUESTS); m_DFQuests.clear(); // Dungeon Finder Quests. @@ -24761,10 +24737,10 @@ bool Player::CanNoReagentCast(SpellInfo const* spellInfo) const // Check no reagent use mask flag128 noReagentMask; - noReagentMask[0] = GetUInt32Value(PLAYER_NO_REAGENT_COST_1); - noReagentMask[1] = GetUInt32Value(PLAYER_NO_REAGENT_COST_1 + 1); - noReagentMask[2] = GetUInt32Value(PLAYER_NO_REAGENT_COST_1 + 2); - noReagentMask[3] = GetUInt32Value(PLAYER_NO_REAGENT_COST_1 + 3); + noReagentMask[0] = GetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST); + noReagentMask[1] = GetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST + 1); + noReagentMask[2] = GetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST + 2); + noReagentMask[3] = GetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST + 3); if (spellInfo->SpellFamilyFlags & noReagentMask) return true; @@ -24805,7 +24781,7 @@ void Player::RemoveItemDependentAurasAndCasts(Item* pItem) void Player::InitializeSelfResurrectionSpells() { - ClearDynamicValue(PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS); + ClearDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS); uint32 spells[3] = { }; @@ -24826,7 +24802,7 @@ void Player::InitializeSelfResurrectionSpells() for (uint32 selfResSpell : spells) if (selfResSpell) - AddDynamicValue(PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS, selfResSpell); + AddDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS, selfResSpell); } // Used in triggers for check "Only to targets that grant experience or honor" req @@ -25399,7 +25375,7 @@ void Player::SetViewpoint(WorldObject* target, bool apply) TC_LOG_DEBUG("maps", "Player::CreateViewpoint: Player '%s' (%s) creates seer (Entry: %u, TypeId: %u).", GetName().c_str(), GetGUID().ToString().c_str(), target->GetEntry(), target->GetTypeId()); - if (!AddGuidValue(PLAYER_FARSIGHT, target->GetGUID())) + if (!AddGuidValue(ACTIVE_PLAYER_FIELD_FARSIGHT, target->GetGUID())) { TC_LOG_FATAL("entities.player", "Player::CreateViewpoint: Player '%s' (%s) cannot add new viewpoint!", GetName().c_str(), GetGUID().ToString().c_str()); return; @@ -25416,7 +25392,7 @@ void Player::SetViewpoint(WorldObject* target, bool apply) { TC_LOG_DEBUG("maps", "Player::CreateViewpoint: Player %s removed seer", GetName().c_str()); - if (!RemoveGuidValue(PLAYER_FARSIGHT, target->GetGUID())) + if (!RemoveGuidValue(ACTIVE_PLAYER_FIELD_FARSIGHT, target->GetGUID())) { TC_LOG_FATAL("entities.player", "Player::CreateViewpoint: Player '%s' (%s) cannot remove current viewpoint!", GetName().c_str(), GetGUID().ToString().c_str()); return; @@ -25435,7 +25411,7 @@ void Player::SetViewpoint(WorldObject* target, bool apply) WorldObject* Player::GetViewpoint() const { - ObjectGuid guid = GetGuidValue(PLAYER_FARSIGHT); + ObjectGuid guid = GetGuidValue(ACTIVE_PLAYER_FIELD_FARSIGHT); if (!guid.IsEmpty()) return static_cast(ObjectAccessor::GetObjectByTypeMask(*this, guid, TYPEMASK_SEER)); return nullptr; @@ -25537,7 +25513,7 @@ bool Player::HasTitle(uint32 bitIndex) const uint32 fieldIndexOffset = bitIndex / 32; uint32 flag = 1 << (bitIndex % 32); - return HasFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag); + return HasFlag(ACTIVE_PLAYER_FIELD_KNOWN_TITLES + fieldIndexOffset, flag); } bool Player::HasTitle(CharTitlesEntry const* title) const @@ -25552,17 +25528,17 @@ void Player::SetTitle(CharTitlesEntry const* title, bool lost) if (lost) { - if (!HasFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag)) + if (!HasFlag(ACTIVE_PLAYER_FIELD_KNOWN_TITLES + fieldIndexOffset, flag)) return; - RemoveFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag); + RemoveFlag(ACTIVE_PLAYER_FIELD_KNOWN_TITLES + fieldIndexOffset, flag); } else { - if (HasFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag)) + if (HasFlag(ACTIVE_PLAYER_FIELD_KNOWN_TITLES + fieldIndexOffset, flag)) return; - SetFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag); + SetFlag(ACTIVE_PLAYER_FIELD_KNOWN_TITLES + fieldIndexOffset, flag); } WorldPackets::Character::TitleEarned packet(lost ? SMSG_TITLE_LOST : SMSG_TITLE_EARNED); @@ -25841,7 +25817,7 @@ void Player::_LoadSkills(PreparedQueryResult result) uint16 field = count / 2; uint8 offset = count & 1; - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, skill); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, skill); uint16 step = 0; SkillLineEntry const* skillLine = sSkillLineStore.LookupEntry(rcEntry->SkillID); @@ -25855,15 +25831,15 @@ void Player::_LoadSkills(PreparedQueryResult result) step = max / 75; if (professionCount < 2) - SetUInt32Value(PLAYER_PROFESSION_SKILL_LINE_1 + professionCount++, skill); + SetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE + professionCount++, skill); } } - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, step); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, value); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, max); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, step); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, value); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, max); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset, 0); mSkillStatus.insert(SkillStatusMap::value_type(skill, SkillStatusData(count, SKILL_UNCHANGED))); loadedSkillValues[skill] = value; @@ -25892,12 +25868,12 @@ void Player::_LoadSkills(PreparedQueryResult result) uint16 field = count / 2; uint8 offset = count & 1; - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset, 0); - SetUInt16Value(PLAYER_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_TEMP_BONUS_OFFSET + field, offset, 0); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_PERM_BONUS_OFFSET + field, offset, 0); } } @@ -26104,7 +26080,7 @@ TalentLearnResult Player::LearnTalent(uint32 talentId, int32* spellOnCooldown) return TALENT_FAILED_UNKNOWN; // check if we have enough talent points - if (talentInfo->TierID >= GetUInt32Value(PLAYER_FIELD_MAX_TALENT_TIERS)) + if (talentInfo->TierID >= GetUInt32Value(ACTIVE_PLAYER_FIELD_MAX_TALENT_TIERS)) return TALENT_FAILED_UNKNOWN; // TODO: prevent changing talents that are on cooldown diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 548efab34c1..8f1529db7c5 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -101,16 +101,23 @@ namespace WorldPackets typedef std::deque PlayerMails; -#define PLAYER_MAX_SKILLS 128 -enum SkillFieldOffset +#define PLAYER_MAX_SKILLS 256 + +template +constexpr std::size_t CalculateSkillFieldArraySize() +{ + return PLAYER_MAX_SKILLS / sizeof(uint32) * sizeof(SkillArrayType); +} + +enum SkillFieldOffset : uint16 { - SKILL_ID_OFFSET = 0, - SKILL_STEP_OFFSET = 64, - SKILL_RANK_OFFSET = SKILL_STEP_OFFSET + 64, - SUBSKILL_START_RANK_OFFSET = SKILL_RANK_OFFSET + 64, - SKILL_MAX_RANK_OFFSET = SUBSKILL_START_RANK_OFFSET + 64, - SKILL_TEMP_BONUS_OFFSET = SKILL_MAX_RANK_OFFSET + 64, - SKILL_PERM_BONUS_OFFSET = SKILL_TEMP_BONUS_OFFSET + 64 + SKILL_ID_OFFSET = 0, + SKILL_STEP_OFFSET = SKILL_ID_OFFSET + CalculateSkillFieldArraySize(), + SKILL_RANK_OFFSET = SKILL_STEP_OFFSET + CalculateSkillFieldArraySize(), + SUBSKILL_START_RANK_OFFSET = SKILL_RANK_OFFSET + CalculateSkillFieldArraySize(), + SKILL_MAX_RANK_OFFSET = SUBSKILL_START_RANK_OFFSET + CalculateSkillFieldArraySize(), + SKILL_TEMP_BONUS_OFFSET = SKILL_MAX_RANK_OFFSET + CalculateSkillFieldArraySize(), + SKILL_PERM_BONUS_OFFSET = SKILL_TEMP_BONUS_OFFSET + CalculateSkillFieldArraySize() }; #define PLAYER_EXPLORED_ZONES_SIZE 320 @@ -1189,7 +1196,7 @@ class TC_GAME_API Player : public Unit, public GridObject static bool IsChildEquipmentPos(uint8 bag, uint8 slot); bool IsValidPos(uint16 pos, bool explicit_pos) const { return IsValidPos(pos >> 8, pos & 255, explicit_pos); } bool IsValidPos(uint8 bag, uint8 slot, bool explicit_pos) const; - uint8 GetInventorySlotCount() const { return GetByteValue(PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_NUM_BACKPACK_SLOTS); } + uint8 GetInventorySlotCount() const { return GetByteValue(ACTIVE_PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_NUM_BACKPACK_SLOTS); } void SetInventorySlotCount(uint8 slots); uint8 GetBankBagSlotCount() const { return GetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_BANK_BAG_SLOTS); } void SetBankBagSlotCount(uint8 count) { SetByteValue(PLAYER_BYTES_3, PLAYER_BYTES_3_OFFSET_BANK_BAG_SLOTS, count); } @@ -1531,7 +1538,7 @@ class TC_GAME_API Player : public Unit, public GridObject void setRegenTimerCount(uint32 time) {m_regenTimerCount = time;} void setWeaponChangeTimer(uint32 time) {m_weaponChangeTimer = time;} - uint64 GetMoney() const { return GetUInt64Value(PLAYER_FIELD_COINAGE); } + uint64 GetMoney() const { return GetUInt64Value(ACTIVE_PLAYER_FIELD_COINAGE); } bool ModifyMoney(int64 amount, bool sendError = true); bool HasEnoughMoney(uint64 amount) const { return (GetMoney() >= amount); } bool HasEnoughMoney(int64 amount) const; @@ -1623,8 +1630,8 @@ class TC_GAME_API Player : public Unit, public GridObject std::string GetGuildName() const; // Loot Spec - void SetLootSpecId(uint32 id) { SetUInt32Value(PLAYER_FIELD_LOOT_SPEC_ID, id); } - uint32 GetLootSpecId() const { return GetUInt32Value(PLAYER_FIELD_LOOT_SPEC_ID); } + void SetLootSpecId(uint32 id) { SetUInt32Value(ACTIVE_PLAYER_FIELD_LOOT_SPEC_ID, id); } + uint32 GetLootSpecId() const { return GetUInt32Value(ACTIVE_PLAYER_FIELD_LOOT_SPEC_ID); } // Talents uint32 GetTalentResetCost() const { return _specializationInfo.ResetTalentsCost; } @@ -1671,8 +1678,8 @@ class TC_GAME_API Player : public Unit, public GridObject std::vector& GetGlyphs(uint8 spec) { return _specializationInfo.Glyphs[spec]; } ActionButtonList const& GetActionButtons() const { return m_actionButtons; } - uint32 GetFreePrimaryProfessionPoints() const { return GetUInt32Value(PLAYER_CHARACTER_POINTS); } - void SetFreePrimaryProfessions(uint16 profs) { SetUInt32Value(PLAYER_CHARACTER_POINTS, profs); } + uint32 GetFreePrimaryProfessionPoints() const { return GetUInt32Value(ACTIVE_PLAYER_FIELD_CHARACTER_POINTS); } + void SetFreePrimaryProfessions(uint16 profs) { SetUInt32Value(ACTIVE_PLAYER_FIELD_CHARACTER_POINTS, profs); } void InitPrimaryProfessions(); PlayerSpellMap const& GetSpellMap() const { return m_spells; } @@ -1757,7 +1764,7 @@ class TC_GAME_API Player : public Unit, public GridObject void SetGuildLevel(uint32 level) { SetUInt32Value(PLAYER_GUILDLEVEL, level); } uint32 GetGuildLevel() const { return GetUInt32Value(PLAYER_GUILDLEVEL); } void SetGuildIdInvited(ObjectGuid::LowType GuildId) { m_GuildIdInvited = GuildId; } - ObjectGuid::LowType GetGuildId() const { return GetUInt64Value(OBJECT_FIELD_DATA); /* return only lower part */ } + ObjectGuid::LowType GetGuildId() const { return GetUInt64Value(UNIT_FIELD_GUILD_GUID); /* return only lower part */ } Guild* GetGuild(); Guild const* GetGuild() const; static ObjectGuid::LowType GetGuildIdFromDB(ObjectGuid guid); @@ -1770,8 +1777,8 @@ class TC_GAME_API Player : public Unit, public GridObject void SetArenaTeamInfoField(uint8 slot, ArenaTeamInfoType type, uint32 value); static uint32 GetArenaTeamIdFromDB(ObjectGuid guid, uint8 slot); static void LeaveAllArenaTeams(ObjectGuid guid); - uint32 GetArenaTeamId(uint8 slot) const { return GetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (slot * ARENA_TEAM_END) + ARENA_TEAM_ID); } - uint32 GetArenaPersonalRating(uint8 slot) const { return GetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (slot * ARENA_TEAM_END) + ARENA_TEAM_PERSONAL_RATING); } + uint32 GetArenaTeamId(uint8 slot) const { return GetUInt32Value(ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO + (slot * ARENA_TEAM_END) + ARENA_TEAM_ID); } + uint32 GetArenaPersonalRating(uint8 slot) const { return GetUInt32Value(ACTIVE_PLAYER_FIELD_ARENA_TEAM_INFO + (slot * ARENA_TEAM_END) + ARENA_TEAM_PERSONAL_RATING); } void SetArenaTeamIdInvited(uint32 ArenaTeamId) { m_ArenaTeamIdInvited = ArenaTeamId; } uint32 GetArenaTeamIdInvited() const { return m_ArenaTeamIdInvited; } uint32 GetRBGPersonalRating() const { return 0; } @@ -1986,7 +1993,7 @@ class TC_GAME_API Player : public Unit, public GridObject void RestoreHealthAfterDuel() { SetHealth(healthBeforeDuel); } void RestoreManaAfterDuel() { SetPower(POWER_MANA, manaBeforeDuel); } - uint32 GetPrestigeLevel() const { return GetUInt32Value(PLAYER_FIELD_PRESTIGE); } + uint32 GetPrestigeLevel() const { return 0; } uint32 GetHonorLevel() const { return GetUInt32Value(PLAYER_FIELD_HONOR_LEVEL); } void AddHonorXP(uint32 xp); void SetHonorLevel(uint8 honorLevel); @@ -2008,7 +2015,7 @@ class TC_GAME_API Player : public Unit, public GridObject int32 CalculateCorpseReclaimDelay(bool load = false) const; void SendCorpseReclaimDelay(uint32 delay) const; - uint32 GetBlockPercent() const override { return GetUInt32Value(PLAYER_SHIELD_BLOCK); } + uint32 GetBlockPercent() const override { return GetUInt32Value(ACTIVE_PLAYER_FIELD_SHIELD_BLOCK); } bool CanParry() const { return m_canParry; } void SetCanParry(bool value); bool CanBlock() const { return m_canBlock; } @@ -2724,7 +2731,7 @@ class TC_GAME_API Player : public Unit, public GridObject std::unordered_map m_AELootView; - void _InitHonorLevelOnLoadFromDB(uint32 /*honor*/, uint32 /*honorLevel*/, uint32 /*prestigeLevel*/); + void _InitHonorLevelOnLoadFromDB(uint32 honor, uint32 honorLevel); std::unique_ptr _restMgr; bool _usePvpItemLevels; diff --git a/src/server/game/Entities/Player/RestMgr.cpp b/src/server/game/Entities/Player/RestMgr.cpp index a4309d79d54..fc100d36088 100644 --- a/src/server/game/Entities/Player/RestMgr.cpp +++ b/src/server/game/Entities/Player/RestMgr.cpp @@ -44,7 +44,7 @@ void RestMgr::SetRestBonus(RestTypes restType, float restBonus) rest_rested_offset = REST_RESTED_XP; rest_state_offset = REST_STATE_XP; - next_level_xp_field = PLAYER_NEXT_LEVEL_XP; + next_level_xp_field = ACTIVE_PLAYER_FIELD_NEXT_LEVEL_XP; affectedByRaF = true; break; case REST_TYPE_HONOR: @@ -54,7 +54,7 @@ void RestMgr::SetRestBonus(RestTypes restType, float restBonus) rest_rested_offset = REST_RESTED_HONOR; rest_state_offset = REST_STATE_HONOR; - next_level_xp_field = PLAYER_FIELD_HONOR_NEXT_LEVEL; + next_level_xp_field = ACTIVE_PLAYER_FIELD_HONOR_NEXT_LEVEL; break; default: return; @@ -72,17 +72,17 @@ void RestMgr::SetRestBonus(RestTypes restType, float restBonus) // update data for client if (affectedByRaF && _player->GetsRecruitAFriendBonus(true) && (_player->GetSession()->IsARecruiter() || _player->GetSession()->GetRecruiterId() != 0)) - _player->SetUInt32Value(PLAYER_FIELD_REST_INFO + rest_state_offset, REST_STATE_RAF_LINKED); + _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + rest_state_offset, REST_STATE_RAF_LINKED); else { if (_restBonus[restType] > 10) - _player->SetUInt32Value(PLAYER_FIELD_REST_INFO + rest_state_offset, REST_STATE_RESTED); + _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + rest_state_offset, REST_STATE_RESTED); else if (_restBonus[restType] <= 1) - _player->SetUInt32Value(PLAYER_FIELD_REST_INFO + rest_state_offset, REST_STATE_NOT_RAF_LINKED); + _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + rest_state_offset, REST_STATE_NOT_RAF_LINKED); } // RestTickUpdate - _player->SetUInt32Value(PLAYER_FIELD_REST_INFO + rest_rested_offset, uint32(_restBonus[restType])); + _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + rest_rested_offset, uint32(_restBonus[restType])); } void RestMgr::AddRestBonus(RestTypes restType, float restBonus) @@ -153,8 +153,8 @@ void RestMgr::Update(time_t now) void RestMgr::LoadRestBonus(RestTypes restType, PlayerRestState state, float restBonus) { _restBonus[restType] = restBonus; - _player->SetUInt32Value(PLAYER_FIELD_REST_INFO + restType * 2, state); - _player->SetUInt32Value(PLAYER_FIELD_REST_INFO + restType * 2 + 1, uint32(restBonus)); + _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + restType * 2, state); + _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_REST_INFO + restType * 2 + 1, uint32(restBonus)); } float RestMgr::CalcExtraPerSec(RestTypes restType, float bubble) const @@ -162,9 +162,9 @@ float RestMgr::CalcExtraPerSec(RestTypes restType, float bubble) const switch (restType) { case REST_TYPE_HONOR: - return float(_player->GetUInt32Value(PLAYER_FIELD_HONOR_NEXT_LEVEL)) / 72000.0f * bubble; + return float(_player->GetUInt32Value(ACTIVE_PLAYER_FIELD_HONOR_NEXT_LEVEL)) / 72000.0f * bubble; case REST_TYPE_XP: - return float(_player->GetUInt32Value(PLAYER_NEXT_LEVEL_XP)) / 72000.0f * bubble; + return float(_player->GetUInt32Value(ACTIVE_PLAYER_FIELD_NEXT_LEVEL_XP)) / 72000.0f * bubble; default: return 0.0f; } diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index 7e0d38c9875..6d940a91582 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -160,9 +160,9 @@ void Player::ApplySpellPowerBonus(int32 amount, bool apply) apply = _ModifyUInt32(apply, m_baseSpellPower, amount); // For speed just update for client - ApplyModUInt32Value(PLAYER_FIELD_MOD_HEALING_DONE_POS, amount, apply); + ApplyModUInt32Value(ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_POS, amount, apply); for (int i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i) - ApplyModUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i, amount, apply); + ApplyModUInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i, amount, apply); if (HasAuraType(SPELL_AURA_OVERRIDE_ATTACK_POWER_BY_SP_PCT)) { @@ -176,18 +176,18 @@ void Player::UpdateSpellDamageAndHealingBonus() // Magic damage modifiers implemented in Unit::SpellDamageBonusDone // This information for client side use only // Get healing bonus for all schools - SetStatInt32Value(PLAYER_FIELD_MOD_HEALING_DONE_POS, SpellBaseHealingBonusDone(SPELL_SCHOOL_MASK_ALL)); + SetStatInt32Value(ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_POS, SpellBaseHealingBonusDone(SPELL_SCHOOL_MASK_ALL)); // Get damage bonus for all schools Unit::AuraEffectList const& modDamageAuras = GetAuraEffectsByType(SPELL_AURA_MOD_DAMAGE_DONE); for (uint16 i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i) { - SetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + i, std::accumulate(modDamageAuras.begin(), modDamageAuras.end(), 0, [i](int32 negativeMod, AuraEffect const* aurEff) + SetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + i, std::accumulate(modDamageAuras.begin(), modDamageAuras.end(), 0, [i](int32 negativeMod, AuraEffect const* aurEff) { if (aurEff->GetAmount() < 0 && aurEff->GetMiscValue() & (1 << i)) negativeMod += aurEff->GetAmount(); return negativeMod; })); - SetStatInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i, SpellBaseDamageBonusDone(SpellSchoolMask(1 << i)) - GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + i)); + SetStatInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i, SpellBaseDamageBonusDone(SpellSchoolMask(1 << i)) - GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + i)); } if (HasAuraType(SPELL_AURA_OVERRIDE_ATTACK_POWER_BY_SP_PCT)) @@ -231,7 +231,7 @@ bool Player::UpdateAllStats() void Player::ApplySpellPenetrationBonus(int32 amount, bool apply) { - ApplyModInt32Value(PLAYER_FIELD_MOD_TARGET_RESISTANCE, -amount, apply); + ApplyModInt32Value(ACTIVE_PLAYER_FIELD_MOD_TARGET_RESISTANCE, -amount, apply); m_spellPenetrationItemMod += apply ? amount : -amount; } @@ -239,8 +239,7 @@ void Player::UpdateResistances(uint32 school) { if (school > SPELL_SCHOOL_NORMAL) { - float value = GetTotalAuraModValue(UnitMods(UNIT_MOD_RESISTANCE_START + school)); - SetResistance(SpellSchools(school), int32(value)); + Unit::UpdateResistances(school); Pet* pet = GetPet(); if (pet) @@ -255,6 +254,7 @@ void Player::UpdateArmor() UnitMods unitMod = UNIT_MOD_ARMOR; float value = GetModifierValue(unitMod, BASE_VALUE); // base armor (from items) + float baseValue = value; value *= GetModifierValue(unitMod, BASE_PCT); // armor percent from items value += GetModifierValue(unitMod, TOTAL_VALUE); @@ -268,7 +268,7 @@ void Player::UpdateArmor() value *= GetModifierValue(unitMod, TOTAL_PCT); - SetArmor(int32(value)); + SetArmor(int32(baseValue), int32(value - baseValue)); Pet* pet = GetPet(); if (pet) @@ -360,11 +360,11 @@ void Player::UpdateAttackPowerAndDamage(bool ranged) } else { - int32 minSpellPower = GetInt32Value(PLAYER_FIELD_MOD_HEALING_DONE_POS); + int32 minSpellPower = GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_POS); for (int i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i) - minSpellPower = std::min(minSpellPower, GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i)); + minSpellPower = std::min(minSpellPower, GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + i)); - val2 = CalculatePct(float(minSpellPower), GetFloatValue(PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT)); + val2 = CalculatePct(float(minSpellPower), GetFloatValue(ACTIVE_PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT)); } SetModifierValue(unitMod, BASE_VALUE, val2); @@ -488,7 +488,7 @@ void Player::UpdateBlockPercentage() value = value < 0.0f ? 0.0f : value; } - SetStatFloatValue(PLAYER_BLOCK_PERCENTAGE, value); + SetStatFloatValue(ACTIVE_PLAYER_FIELD_BLOCK_PERCENTAGE, value); } void Player::UpdateCritPercentage(WeaponAttackType attType) @@ -501,18 +501,18 @@ void Player::UpdateCritPercentage(WeaponAttackType attType) { case OFF_ATTACK: modGroup = OFFHAND_CRIT_PERCENTAGE; - index = PLAYER_OFFHAND_CRIT_PERCENTAGE; + index = ACTIVE_PLAYER_FIELD_OFFHAND_CRIT_PERCENTAGE; cr = CR_CRIT_MELEE; break; case RANGED_ATTACK: modGroup = RANGED_CRIT_PERCENTAGE; - index = PLAYER_RANGED_CRIT_PERCENTAGE; + index = ACTIVE_PLAYER_FIELD_RANGED_CRIT_PERCENTAGE; cr = CR_CRIT_RANGED; break; case BASE_ATTACK: default: modGroup = CRIT_PERCENTAGE; - index = PLAYER_CRIT_PERCENTAGE; + index = ACTIVE_PLAYER_FIELD_CRIT_PERCENTAGE; cr = CR_CRIT_MELEE; break; } @@ -545,13 +545,13 @@ void Player::UpdateMastery() { if (!CanUseMastery()) { - SetFloatValue(PLAYER_MASTERY, 0.0f); + SetFloatValue(ACTIVE_PLAYER_FIELD_MASTERY, 0.0f); return; } float value = GetTotalAuraModifier(SPELL_AURA_MASTERY); value += GetRatingBonusValue(CR_MASTERY); - SetFloatValue(PLAYER_MASTERY, value); + SetFloatValue(ACTIVE_PLAYER_FIELD_MASTERY, value); ChrSpecializationEntry const* chrSpec = sChrSpecializationStore.LookupEntry(GetUInt32Value(PLAYER_FIELD_CURRENT_SPEC_ID)); if (!chrSpec) @@ -579,7 +579,7 @@ void Player::UpdateMastery() void Player::UpdateVersatilityDamageDone() { // No proof that CR_VERSATILITY_DAMAGE_DONE is allways = PLAYER_VERSATILITY - SetUInt32Value(PLAYER_VERSATILITY, GetUInt32Value(PLAYER_FIELD_COMBAT_RATING_1 + CR_VERSATILITY_DAMAGE_DONE)); + SetUInt32Value(ACTIVE_PLAYER_FIELD_VERSATILITY, GetUInt32Value(ACTIVE_PLAYER_FIELD_COMBAT_RATING + CR_VERSATILITY_DAMAGE_DONE)); if (getClass() == CLASS_HUNTER) UpdateDamagePhysical(RANGED_ATTACK); @@ -596,7 +596,7 @@ void Player::UpdateHealingDonePercentMod() for (AuraEffect const* auraEffect : GetAuraEffectsByType(SPELL_AURA_MOD_HEALING_DONE_PERCENT)) AddPct(value, auraEffect->GetAmount()); - SetStatFloatValue(PLAYER_FIELD_MOD_HEALING_DONE_PCT, value); + SetStatFloatValue(ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_PCT, value); } const float m_diminishing_k[MAX_CLASSES] = @@ -651,7 +651,7 @@ void Player::UpdateParryPercentage() value = value < 0.0f ? 0.0f : value; } - SetStatFloatValue(PLAYER_PARRY_PERCENTAGE, value); + SetStatFloatValue(ACTIVE_PLAYER_FIELD_PARRY_PERCENTAGE, value); } void Player::UpdateDodgePercentage() @@ -686,7 +686,7 @@ void Player::UpdateDodgePercentage() value = value > sWorld->getFloatConfig(CONFIG_STATS_LIMITS_DODGE) ? sWorld->getFloatConfig(CONFIG_STATS_LIMITS_DODGE) : value; value = value < 0.0f ? 0.0f : value; - SetStatFloatValue(PLAYER_DODGE_PERCENTAGE, value); + SetStatFloatValue(ACTIVE_PLAYER_FIELD_DODGE_PERCENTAGE, value); } void Player::UpdateSpellCritChance() @@ -700,13 +700,13 @@ void Player::UpdateSpellCritChance() crit += GetRatingBonusValue(CR_CRIT_SPELL); // Store crit value - SetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1, crit); + SetFloatValue(ACTIVE_PLAYER_FIELD_SPELL_CRIT_PERCENTAGE1, crit); } void Player::UpdateArmorPenetration(int32 amount) { // Store Rating Value - SetUInt32Value(PLAYER_FIELD_COMBAT_RATING_1 + CR_ARMOR_PENETRATION, amount); + SetUInt32Value(ACTIVE_PLAYER_FIELD_COMBAT_RATING + CR_ARMOR_PENETRATION, amount); } void Player::UpdateMeleeHitChances() @@ -746,10 +746,10 @@ void Player::UpdateExpertise(WeaponAttackType attack) switch (attack) { case BASE_ATTACK: - SetUInt32Value(PLAYER_EXPERTISE, expertise); + SetUInt32Value(ACTIVE_PLAYER_FIELD_EXPERTISE, expertise); break; case OFF_ATTACK: - SetUInt32Value(PLAYER_OFFHAND_EXPERTISE, expertise); + SetUInt32Value(ACTIVE_PLAYER_FIELD_OFFHAND_EXPERTISE, expertise); break; default: break; @@ -855,21 +855,11 @@ bool Creature::UpdateAllStats() return true; } -void Creature::UpdateResistances(uint32 school) -{ - if (school > SPELL_SCHOOL_NORMAL) - { - float value = GetTotalAuraModValue(UnitMods(UNIT_MOD_RESISTANCE_START + school)); - SetResistance(SpellSchools(school), int32(value)); - } - else - UpdateArmor(); -} - void Creature::UpdateArmor() { + float baseValue = GetModifierValue(UNIT_MOD_ARMOR, BASE_VALUE); float value = GetTotalAuraModValue(UNIT_MOD_ARMOR); - SetArmor(int32(value)); + SetArmor(int32(baseValue), int32(value - baseValue)); } void Creature::UpdateMaxHealth() @@ -1077,13 +1067,18 @@ void Guardian::UpdateResistances(uint32 school) { if (school > SPELL_SCHOOL_NORMAL) { - float value = GetTotalAuraModValue(UnitMods(UNIT_MOD_RESISTANCE_START + school)); + float baseValue = GetModifierValue(UnitMods(UNIT_MOD_RESISTANCE_START + school), BASE_VALUE); + float bonusValue = GetTotalAuraModValue(UnitMods(UNIT_MOD_RESISTANCE_START + school)) - baseValue; // hunter and warlock pets gain 40% of owner's resistance if (IsPet()) - value += float(CalculatePct(m_owner->GetResistance(SpellSchools(school)), 40)); + { + baseValue += float(CalculatePct(m_owner->GetResistance(SpellSchools(school)), 40)); + bonusValue += float(CalculatePct(m_owner->GetBonusResistanceMod(SpellSchools(school)), 40)); + } - SetResistance(SpellSchools(school), int32(value)); + SetResistance(SpellSchools(school), int32(baseValue)); + SetBonusResistanceMod(SpellSchools(school), int32(bonusValue)); } else UpdateArmor(); @@ -1091,6 +1086,7 @@ void Guardian::UpdateResistances(uint32 school) void Guardian::UpdateArmor() { + float baseValue = 0.0f; float value = 0.0f; float bonus_armor = 0.0f; UnitMods unitMod = UNIT_MOD_ARMOR; @@ -1102,11 +1098,12 @@ void Guardian::UpdateArmor() bonus_armor = m_owner->GetArmor(); value = GetModifierValue(unitMod, BASE_VALUE); + baseValue = value; value *= GetModifierValue(unitMod, BASE_PCT); value += GetModifierValue(unitMod, TOTAL_VALUE) + bonus_armor; value *= GetModifierValue(unitMod, TOTAL_PCT); - SetArmor(int32(value)); + SetArmor(int32(baseValue), int32(value - baseValue)); } void Guardian::UpdateMaxHealth() @@ -1186,8 +1183,8 @@ void Guardian::UpdateAttackPowerAndDamage(bool ranged) //demons benefit from warlocks shadow or fire damage else if (IsPet()) { - int32 fire = owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE) - owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); - int32 shadow = owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW) - owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_SHADOW); + int32 fire = owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE) - owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); + int32 shadow = owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW) - owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_SHADOW); int32 maximum = (fire > shadow) ? fire : shadow; if (maximum < 0) maximum = 0; @@ -1197,7 +1194,7 @@ void Guardian::UpdateAttackPowerAndDamage(bool ranged) //water elementals benefit from mage's frost damage else if (GetEntry() == ENTRY_WATER_ELEMENTAL) { - int32 frost = owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FROST) - owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FROST); + int32 frost = owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FROST) - owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FROST); if (frost < 0) frost = 0; SetBonusDamage(int32(frost * 0.4f)); @@ -1230,14 +1227,14 @@ void Guardian::UpdateDamagePhysical(WeaponAttackType attType) //force of nature if (GetEntry() == ENTRY_TREANT) { - int32 spellDmg = m_owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_NATURE) - m_owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_NATURE); + int32 spellDmg = m_owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_NATURE) - m_owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_NATURE); if (spellDmg > 0) bonusDamage = spellDmg * 0.09f; } //greater fire elemental else if (GetEntry() == ENTRY_FIRE_ELEMENTAL) { - int32 spellDmg = m_owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE) - m_owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); + int32 spellDmg = m_owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE) - m_owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); if (spellDmg > 0) bonusDamage = spellDmg * 0.4f; } @@ -1266,5 +1263,5 @@ void Guardian::SetBonusDamage(int32 damage) { m_bonusSpellDamage = damage; if (GetOwner()->GetTypeId() == TYPEID_PLAYER) - GetOwner()->SetUInt32Value(PLAYER_PET_SPELL_POWER, damage); + GetOwner()->SetUInt32Value(ACTIVE_PLAYER_FIELD_PET_SPELL_POWER, damage); } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index e6567fb1ff2..6edf0663547 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -2573,7 +2573,7 @@ float Unit::GetUnitDodgeChance(WeaponAttackType attType, Unit const* victim) con float chance = 0.0f; float levelBonus = 0.0f; if (victim->GetTypeId() == TYPEID_PLAYER) - chance = victim->GetFloatValue(PLAYER_DODGE_PERCENTAGE); + chance = victim->GetFloatValue(ACTIVE_PLAYER_FIELD_DODGE_PERCENTAGE); else { if (!victim->IsTotem()) @@ -2617,7 +2617,7 @@ float Unit::GetUnitParryChance(WeaponAttackType attType, Unit const* victim) con tmpitem = playerVictim->GetWeaponForAttack(OFF_ATTACK, true); if (tmpitem) - chance = playerVictim->GetFloatValue(PLAYER_PARRY_PERCENTAGE); + chance = playerVictim->GetFloatValue(ACTIVE_PLAYER_FIELD_PARRY_PERCENTAGE); } } else @@ -2666,7 +2666,7 @@ float Unit::GetUnitBlockChance(WeaponAttackType /*attType*/, Unit const* victim) { Item* tmpitem = playerVictim->GetUseableItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND); if (tmpitem && !tmpitem->IsBroken() && tmpitem->GetTemplate()->GetInventoryType() == INVTYPE_SHIELD) - chance = playerVictim->GetFloatValue(PLAYER_BLOCK_PERCENTAGE); + chance = playerVictim->GetFloatValue(ACTIVE_PLAYER_FIELD_BLOCK_PERCENTAGE); } } else @@ -2693,13 +2693,13 @@ float Unit::GetUnitCriticalChance(WeaponAttackType attackType, Unit const* victi switch (attackType) { case BASE_ATTACK: - chance = GetFloatValue(PLAYER_CRIT_PERCENTAGE); + chance = GetFloatValue(ACTIVE_PLAYER_FIELD_CRIT_PERCENTAGE); break; case OFF_ATTACK: - chance = GetFloatValue(PLAYER_OFFHAND_CRIT_PERCENTAGE); + chance = GetFloatValue(ACTIVE_PLAYER_FIELD_OFFHAND_CRIT_PERCENTAGE); break; case RANGED_ATTACK: - chance = GetFloatValue(PLAYER_RANGED_CRIT_PERCENTAGE); + chance = GetFloatValue(ACTIVE_PLAYER_FIELD_RANGED_CRIT_PERCENTAGE); break; // Just for good manner default: @@ -4724,26 +4724,6 @@ int32 Unit::GetMaxNegativeAuraModifierByAffectMask(AuraType auratype, SpellInfo }); } -float Unit::GetResistanceBuffMods(SpellSchools school, bool positive) const -{ - return GetFloatValue(positive ? UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+school : UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+school); -} - -void Unit::SetResistanceBuffMods(SpellSchools school, bool positive, float val) -{ - SetFloatValue(positive ? UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+school : UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+school, val); -} - -void Unit::ApplyResistanceBuffModsMod(SpellSchools school, bool positive, float val, bool apply) -{ - ApplyModSignedFloatValue(positive ? UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+school : UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+school, val, apply); -} - -void Unit::ApplyResistanceBuffModsPercentMod(SpellSchools school, bool positive, float val, bool apply) -{ - ApplyPercentModFloatValue(positive ? UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+school : UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+school, val, apply); -} - void Unit::InitStatBuffMods() { for (uint8 i = STAT_STRENGTH; i < MAX_STATS; ++i) @@ -5899,7 +5879,7 @@ void Unit::SetMinion(Minion *minion, bool apply) { SetCritterGUID(minion->GetGUID()); if (GetTypeId() == TYPEID_PLAYER) - minion->SetGuidValue(UNIT_FIELD_BATTLE_PET_COMPANION_GUID, GetGuidValue(PLAYER_FIELD_SUMMONED_BATTLE_PET_ID)); + minion->SetGuidValue(UNIT_FIELD_BATTLE_PET_COMPANION_GUID, GetGuidValue(ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID)); } // PvP, FFAPvP @@ -6514,7 +6494,7 @@ float Unit::SpellDamagePctDone(Unit* victim, SpellInfo const* spellProto, Damage { for (uint32 i = 0; i < MAX_SPELL_SCHOOL; ++i) if (spellProto->GetSchoolMask() & (1 << i)) - maxModDamagePercentSchool = std::max(maxModDamagePercentSchool, GetFloatValue(PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i)); + maxModDamagePercentSchool = std::max(maxModDamagePercentSchool, GetFloatValue(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i)); } else maxModDamagePercentSchool = GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_DAMAGE_PERCENT_DONE, spellProto->GetSchoolMask()); @@ -6654,7 +6634,7 @@ int32 Unit::SpellBaseDamageBonusDone(SpellSchoolMask schoolMask) const { if (GetTypeId() == TYPEID_PLAYER) { - float overrideSP = GetFloatValue(PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT); + float overrideSP = GetFloatValue(ACTIVE_PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT); if (overrideSP > 0.0f) return int32(CalculatePct(GetTotalAttackPowerValue(BASE_ATTACK), overrideSP) + 0.5f); } @@ -6734,7 +6714,7 @@ float Unit::GetUnitSpellCriticalChance(Unit* victim, SpellInfo const* spellProto crit_chance = 0.0f; // For other schools else if (GetTypeId() == TYPEID_PLAYER) - crit_chance = GetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1); + crit_chance = GetFloatValue(ACTIVE_PLAYER_FIELD_SPELL_CRIT_PERCENTAGE1); else crit_chance = (float)m_baseSpellCritChance; // taken @@ -6975,7 +6955,7 @@ float Unit::SpellHealingPctDone(Unit* /*victim*/, SpellInfo const* spellProto) c return 1.0f; if (IsPlayer()) - return GetFloatValue(PLAYER_FIELD_MOD_HEALING_DONE_PCT); + return GetFloatValue(ACTIVE_PLAYER_FIELD_MOD_HEALING_DONE_PCT); float DoneTotalMod = 1.0f; @@ -7074,7 +7054,7 @@ int32 Unit::SpellBaseHealingBonusDone(SpellSchoolMask schoolMask) const { if (GetTypeId() == TYPEID_PLAYER) { - float overrideSP = GetFloatValue(PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT); + float overrideSP = GetFloatValue(ACTIVE_PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT); if (overrideSP > 0.0f) return int32(CalculatePct(GetTotalAttackPowerValue(BASE_ATTACK), overrideSP) + 0.5f); } @@ -7344,7 +7324,7 @@ uint32 Unit::MeleeDamageBonusDone(Unit* victim, uint32 pdamage, WeaponAttackType { for (uint32 i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i) if (spellProto->GetSchoolMask() & (1 << i)) - maxModDamagePercentSchool = std::max(maxModDamagePercentSchool, GetFloatValue(PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i)); + maxModDamagePercentSchool = std::max(maxModDamagePercentSchool, GetFloatValue(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i)); } else maxModDamagePercentSchool = GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_DAMAGE_PERCENT_DONE, spellProto->GetSchoolMask()); @@ -9323,6 +9303,19 @@ Stats Unit::GetStatByAuraGroup(UnitMods unitMod) const return stat; } +void Unit::UpdateResistances(uint32 school) +{ + if (school > SPELL_SCHOOL_NORMAL) + { + UnitMods unitMod = UnitMods(UNIT_MOD_RESISTANCE_START + school); + + SetResistance(SpellSchools(school), int32(m_auraModifiersGroup[unitMod][BASE_VALUE])); + SetBonusResistanceMod(SpellSchools(school), int32(GetTotalAuraModValue(unitMod) - GetResistance(SpellSchools(school)))); + } + else + UpdateArmor(); +} + float Unit::GetTotalAttackPowerValue(WeaponAttackType attType) const { if (attType == RANGED_ATTACK) @@ -13106,15 +13099,17 @@ void Unit::SendClearTarget() SendMessageToSet(breakTarget.Write(), false); } -uint32 Unit::GetResistance(SpellSchoolMask mask) const +int32 Unit::GetResistance(SpellSchoolMask mask) const { - int32 resist = -1; + Optional resist; for (int i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i) - if (mask & (1 << i) && (resist < 0 || resist > int32(GetResistance(SpellSchools(i))))) - resist = int32(GetResistance(SpellSchools(i))); + { + int32 schoolResistance = GetResistance(SpellSchools(i)) + GetBonusResistanceMod(SpellSchools(i)); + if (mask & (1 << i) && (!resist || *resist > schoolResistance)) + resist = schoolResistance; + } - // resist value will never be negative here - return uint32(resist); + return resist ? *resist : 0; } void CharmInfo::SetIsCommandAttack(bool val) @@ -13658,7 +13653,7 @@ void Unit::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* target) if (target == this) visibleFlag |= UF_FLAG_PRIVATE; else if (GetTypeId() == TYPEID_PLAYER) - valCount = PLAYER_FIELD_END_NOT_SELF; + valCount = PLAYER_END; std::size_t blockCount = UpdateMask::GetBlockCount(valCount); @@ -13706,8 +13701,6 @@ void Unit::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* target) // FIXME: Some values at server stored in float format but must be sent to client in uint32 format // there are some float values which may be negative or can't get negative due to other checks else if ((index >= UNIT_FIELD_NEGSTAT && index < UNIT_FIELD_NEGSTAT + MAX_STATS) || - (index >= UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE && index < (UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE + MAX_SPELL_SCHOOL)) || - (index >= UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE && index < (UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE + MAX_SPELL_SCHOOL)) || (index >= UNIT_FIELD_POSSTAT && index < UNIT_FIELD_POSSTAT + MAX_STATS)) { *data << uint32(m_floatValues[index]); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 74e2ed60f77..94d2fa06c75 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1033,12 +1033,18 @@ class TC_GAME_API Unit : public WorldObject float GetStat(Stats stat) const { return float(GetUInt32Value(UNIT_FIELD_STAT+stat)); } void SetStat(Stats stat, int32 val) { SetStatInt32Value(UNIT_FIELD_STAT+stat, val); } - uint32 GetArmor() const { return GetResistance(SPELL_SCHOOL_NORMAL); } - void SetArmor(int32 val) { SetResistance(SPELL_SCHOOL_NORMAL, val); } + uint32 GetArmor() const { return GetResistance(SPELL_SCHOOL_NORMAL) + GetBonusResistanceMod(SPELL_SCHOOL_NORMAL); } + void SetArmor(int32 val, int32 bonusVal) + { + SetResistance(SPELL_SCHOOL_NORMAL, val); + SetBonusResistanceMod(SPELL_SCHOOL_NORMAL, bonusVal); + } - uint32 GetResistance(SpellSchools school) const { return GetUInt32Value(UNIT_FIELD_RESISTANCES+school); } - uint32 GetResistance(SpellSchoolMask mask) const; - void SetResistance(SpellSchools school, int32 val) { SetStatInt32Value(UNIT_FIELD_RESISTANCES+school, val); } + int32 GetResistance(SpellSchools school) const { return GetUInt32Value(UNIT_FIELD_RESISTANCES + school); } + int32 GetBonusResistanceMod(SpellSchools school) const { return GetUInt32Value(UNIT_FIELD_BONUS_RESISTANCE_MODS + school); } + int32 GetResistance(SpellSchoolMask mask) const; + void SetResistance(SpellSchools school, int32 val) { SetStatInt32Value(UNIT_FIELD_RESISTANCES + school, val); } + void SetBonusResistanceMod(SpellSchools school, int32 val) { SetStatInt32Value(UNIT_FIELD_BONUS_RESISTANCE_MODS + school, val); } uint64 GetHealth() const { return GetUInt64Value(UNIT_FIELD_HEALTH); } uint64 GetMaxHealth() const { return GetUInt64Value(UNIT_FIELD_MAXHEALTH); } @@ -1533,10 +1539,6 @@ class TC_GAME_API Unit : public WorldObject int32 GetMaxPositiveAuraModifierByAffectMask(AuraType auratype, SpellInfo const* affectedSpell) const; int32 GetMaxNegativeAuraModifierByAffectMask(AuraType auratype, SpellInfo const* affectedSpell) const; - float GetResistanceBuffMods(SpellSchools school, bool positive) const; - void SetResistanceBuffMods(SpellSchools school, bool positive, float val); - void ApplyResistanceBuffModsMod(SpellSchools school, bool positive, float val, bool apply); - void ApplyResistanceBuffModsPercentMod(SpellSchools school, bool positive, float val, bool apply); void InitStatBuffMods(); void ApplyStatBuffMod(Stats stat, float val, bool apply); void ApplyStatPercentBuffMod(Stats stat, float val, bool apply); @@ -1620,7 +1622,7 @@ class TC_GAME_API Unit : public WorldObject void SetCanModifyStats(bool modifyStats) { m_canModifyStats = modifyStats; } virtual bool UpdateStats(Stats stat) = 0; virtual bool UpdateAllStats() = 0; - virtual void UpdateResistances(uint32 school) = 0; + virtual void UpdateResistances(uint32 school); virtual void UpdateAllResistances(); virtual void UpdateArmor() = 0; virtual void UpdateMaxHealth() = 0; diff --git a/src/server/game/Handlers/BattlePetHandler.cpp b/src/server/game/Handlers/BattlePetHandler.cpp index 295b0c52a4d..ed439b8fab6 100644 --- a/src/server/game/Handlers/BattlePetHandler.cpp +++ b/src/server/game/Handlers/BattlePetHandler.cpp @@ -68,7 +68,7 @@ void WorldSession::HandleCageBattlePet(WorldPackets::BattlePet::CageBattlePet& c void WorldSession::HandleBattlePetSummon(WorldPackets::BattlePet::BattlePetSummon& battlePetSummon) { - if (_player->GetGuidValue(PLAYER_FIELD_SUMMONED_BATTLE_PET_ID) != battlePetSummon.PetGuid) + if (_player->GetGuidValue(ACTIVE_PLAYER_FIELD_SUMMONED_BATTLE_PET_ID) != battlePetSummon.PetGuid) GetBattlePetMgr()->SummonPet(battlePetSummon.PetGuid); else GetBattlePetMgr()->DismissPet(); diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 1fc6af5ea00..bc3fb563a57 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1224,7 +1224,7 @@ void WorldSession::HandleTutorialFlag(WorldPackets::Misc::TutorialSetFlag& packe void WorldSession::HandleSetWatchedFactionOpcode(WorldPackets::Character::SetWatchedFaction& packet) { - GetPlayer()->SetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, packet.FactionIndex); + GetPlayer()->SetUInt32Value(ACTIVE_PLAYER_FIELD_WATCHED_FACTION_INDEX, packet.FactionIndex); } void WorldSession::HandleSetFactionInactiveOpcode(WorldPackets::Character::SetFactionInactive& packet) @@ -2342,7 +2342,7 @@ void WorldSession::HandleReorderCharacters(WorldPackets::Character::ReorderChara void WorldSession::HandleOpeningCinematic(WorldPackets::Misc::OpeningCinematic& /*packet*/) { // Only players that has not yet gained any experience can use this - if (_player->GetUInt32Value(PLAYER_XP)) + if (_player->GetUInt32Value(ACTIVE_PLAYER_FIELD_XP)) return; if (ChrClassesEntry const* classEntry = sChrClassesStore.LookupEntry(_player->getClass())) diff --git a/src/server/game/Handlers/InspectHandler.cpp b/src/server/game/Handlers/InspectHandler.cpp index 2d8c559de51..598f00c519f 100644 --- a/src/server/game/Handlers/InspectHandler.cpp +++ b/src/server/game/Handlers/InspectHandler.cpp @@ -97,9 +97,9 @@ void WorldSession::HandleRequestHonorStatsOpcode(WorldPackets::Inspect::RequestH WorldPackets::Inspect::InspectHonorStats honorStats; honorStats.PlayerGUID = request.TargetGUID; - honorStats.LifetimeHK = player->GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS); - honorStats.YesterdayHK = player->GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS); - honorStats.TodayHK = player->GetUInt16Value(PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS); + honorStats.LifetimeHK = player->GetUInt32Value(ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS); + honorStats.YesterdayHK = player->GetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_YESTERDAY_KILLS); + honorStats.TodayHK = player->GetUInt16Value(ACTIVE_PLAYER_FIELD_KILLS, PLAYER_FIELD_KILLS_OFFSET_TODAY_KILLS); honorStats.LifetimeMaxRank = 0; /// @todo SendPacket(honorStats.Write()); diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 0ba24d95ac9..b518001ce34 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -516,7 +516,7 @@ void WorldSession::HandleBuybackItem(WorldPackets::Item::BuyBackItem& packet) Item* pItem = _player->GetItemFromBuyBackSlot(packet.Slot); if (pItem) { - uint32 price = _player->GetUInt32Value(PLAYER_FIELD_BUYBACK_PRICE_1 + packet.Slot - BUYBACK_SLOT_START); + uint32 price = _player->GetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_PRICE + packet.Slot - BUYBACK_SLOT_START); if (!_player->HasEnoughMoney(uint64(price))) { _player->SendBuyError(BUY_ERR_NOT_ENOUGHT_MONEY, creature, pItem->GetEntry(), 0); diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 20081bd36bf..ec3307a0c6b 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -756,7 +756,7 @@ void WorldSession::HandleSetActionBarToggles(WorldPackets::Character::SetActionB return; } - GetPlayer()->SetByteValue(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES, packet.Mask); + GetPlayer()->SetByteValue(ACTIVE_PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_ACTION_BAR_TOGGLES, packet.Mask); } void WorldSession::HandlePlayedTime(WorldPackets::Character::RequestPlayedTime& packet) @@ -824,11 +824,11 @@ void WorldSession::HandleFarSightOpcode(WorldPackets::Misc::FarSight& packet) { if (packet.Enable) { - TC_LOG_DEBUG("network", "Added FarSight %s to %s", _player->GetGuidValue(PLAYER_FARSIGHT).ToString().c_str(), _player->GetGUID().ToString().c_str()); + TC_LOG_DEBUG("network", "Added FarSight %s to %s", _player->GetGuidValue(ACTIVE_PLAYER_FIELD_FARSIGHT).ToString().c_str(), _player->GetGUID().ToString().c_str()); if (WorldObject* target = _player->GetViewpoint()) _player->SetSeer(target); else - TC_LOG_DEBUG("network", "Player %s (%s) requests non-existing seer %s", _player->GetName().c_str(), _player->GetGUID().ToString().c_str(), _player->GetGuidValue(PLAYER_FARSIGHT).ToString().c_str()); + TC_LOG_DEBUG("network", "Player %s (%s) requests non-existing seer %s", _player->GetName().c_str(), _player->GetGUID().ToString().c_str(), _player->GetGuidValue(ACTIVE_PLAYER_FIELD_FARSIGHT).ToString().c_str()); } else { diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index ca011dfd61f..f6d4a7dad5f 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -466,7 +466,7 @@ void WorldSession::HandleSelfResOpcode(WorldPackets::Spells::SelfRes& selfRes) if (_player->HasAuraType(SPELL_AURA_PREVENT_RESURRECTION)) return; // silent return, client should display error by itself and not send this opcode - std::vector const& selfResSpells = _player->GetDynamicValues(PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS); + std::vector const& selfResSpells = _player->GetDynamicValues(ACTIVE_PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS); if (std::find(selfResSpells.begin(), selfResSpells.end(), selfRes.SpellID) == selfResSpells.end()) return; @@ -474,7 +474,7 @@ void WorldSession::HandleSelfResOpcode(WorldPackets::Spells::SelfRes& selfRes) if (spellInfo) _player->CastSpell(_player, spellInfo, false, nullptr); - _player->RemoveDynamicValue(PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS, selfRes.SpellID); + _player->RemoveDynamicValue(ACTIVE_PLAYER_DYNAMIC_FIELD_SELF_RES_SPELLS, selfRes.SpellID); } void WorldSession::HandleSpellClick(WorldPackets::Spells::SpellClick& spellClick) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 44ad75b15af..bb427b5903c 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -5410,842 +5410,864 @@ enum class GameError : uint32 ERR_OUT_OF_RANGE = 149, ERR_PLAYER_DEAD = 150, ERR_CLIENT_LOCKED_OUT = 151, - ERR_KILLED_BY_S = 152, - ERR_LOOT_LOCKED = 153, - ERR_LOOT_TOO_FAR = 154, - ERR_LOOT_DIDNT_KILL = 155, - ERR_LOOT_BAD_FACING = 156, - ERR_LOOT_NOTSTANDING = 157, - ERR_LOOT_STUNNED = 158, - ERR_LOOT_NO_UI = 159, - ERR_LOOT_WHILE_INVULNERABLE = 160, - ERR_NO_LOOT = 161, - ERR_QUEST_ACCEPTED_S = 162, - ERR_QUEST_COMPLETE_S = 163, - ERR_QUEST_FAILED_S = 164, - ERR_QUEST_FAILED_BAG_FULL_S = 165, - ERR_QUEST_FAILED_MAX_COUNT_S = 166, - ERR_QUEST_FAILED_LOW_LEVEL = 167, - ERR_QUEST_FAILED_MISSING_ITEMS = 168, - ERR_QUEST_FAILED_WRONG_RACE = 169, - ERR_QUEST_FAILED_NOT_ENOUGH_MONEY = 170, - ERR_QUEST_FAILED_EXPANSION = 171, - ERR_QUEST_ONLY_ONE_TIMED = 172, - ERR_QUEST_NEED_PREREQS = 173, - ERR_QUEST_NEED_PREREQS_CUSTOM = 174, - ERR_QUEST_ALREADY_ON = 175, - ERR_QUEST_ALREADY_DONE = 176, - ERR_QUEST_ALREADY_DONE_DAILY = 177, - ERR_QUEST_HAS_IN_PROGRESS = 178, - ERR_QUEST_REWARD_EXP_I = 179, - ERR_QUEST_REWARD_MONEY_S = 180, - ERR_QUEST_MUST_CHOOSE = 181, - ERR_QUEST_LOG_FULL = 182, - ERR_COMBAT_DAMAGE_SSI = 183, - ERR_INSPECT_S = 184, - ERR_CANT_USE_ITEM = 185, - ERR_CANT_USE_ITEM_IN_ARENA = 186, - ERR_CANT_USE_ITEM_IN_RATED_BATTLEGROUND = 187, - ERR_MUST_EQUIP_ITEM = 188, - ERR_PASSIVE_ABILITY = 189, - ERR_2HSKILLNOTFOUND = 190, - ERR_NO_ATTACK_TARGET = 191, - ERR_INVALID_ATTACK_TARGET = 192, - ERR_ATTACK_PVP_TARGET_WHILE_UNFLAGGED = 193, - ERR_ATTACK_STUNNED = 194, - ERR_ATTACK_PACIFIED = 195, - ERR_ATTACK_MOUNTED = 196, - ERR_ATTACK_FLEEING = 197, - ERR_ATTACK_CONFUSED = 198, - ERR_ATTACK_CHARMED = 199, - ERR_ATTACK_DEAD = 200, - ERR_ATTACK_PREVENTED_BY_MECHANIC_S = 201, - ERR_ATTACK_CHANNEL = 202, - ERR_TAXISAMENODE = 203, - ERR_TAXINOSUCHPATH = 204, - ERR_TAXIUNSPECIFIEDSERVERERROR = 205, - ERR_TAXINOTENOUGHMONEY = 206, - ERR_TAXITOOFARAWAY = 207, - ERR_TAXINOVENDORNEARBY = 208, - ERR_TAXINOTVISITED = 209, - ERR_TAXIPLAYERBUSY = 210, - ERR_TAXIPLAYERALREADYMOUNTED = 211, - ERR_TAXIPLAYERSHAPESHIFTED = 212, - ERR_TAXIPLAYERMOVING = 213, - ERR_TAXINOPATHS = 214, - ERR_TAXINOTELIGIBLE = 215, - ERR_TAXINOTSTANDING = 216, - ERR_NO_REPLY_TARGET = 217, - ERR_GENERIC_NO_TARGET = 218, - ERR_INITIATE_TRADE_S = 219, - ERR_TRADE_REQUEST_S = 220, - ERR_TRADE_BLOCKED_S = 221, - ERR_TRADE_TARGET_DEAD = 222, - ERR_TRADE_TOO_FAR = 223, - ERR_TRADE_CANCELLED = 224, - ERR_TRADE_COMPLETE = 225, - ERR_TRADE_BAG_FULL = 226, - ERR_TRADE_TARGET_BAG_FULL = 227, - ERR_TRADE_MAX_COUNT_EXCEEDED = 228, - ERR_TRADE_TARGET_MAX_COUNT_EXCEEDED = 229, - ERR_ALREADY_TRADING = 230, - ERR_MOUNT_INVALIDMOUNTEE = 231, - ERR_MOUNT_TOOFARAWAY = 232, - ERR_MOUNT_ALREADYMOUNTED = 233, - ERR_MOUNT_NOTMOUNTABLE = 234, - ERR_MOUNT_NOTYOURPET = 235, - ERR_MOUNT_OTHER = 236, - ERR_MOUNT_LOOTING = 237, - ERR_MOUNT_RACECANTMOUNT = 238, - ERR_MOUNT_SHAPESHIFTED = 239, - ERR_MOUNT_NO_FAVORITES = 240, - ERR_DISMOUNT_NOPET = 241, - ERR_DISMOUNT_NOTMOUNTED = 242, - ERR_DISMOUNT_NOTYOURPET = 243, - ERR_SPELL_FAILED_TOTEMS = 244, - ERR_SPELL_FAILED_REAGENTS = 245, - ERR_SPELL_FAILED_REAGENTS_GENERIC = 246, - ERR_SPELL_FAILED_EQUIPPED_ITEM = 247, - ERR_SPELL_FAILED_EQUIPPED_ITEM_CLASS_S = 248, - ERR_SPELL_FAILED_SHAPESHIFT_FORM_S = 249, - ERR_SPELL_FAILED_ANOTHER_IN_PROGRESS = 250, - ERR_BADATTACKFACING = 251, - ERR_BADATTACKPOS = 252, - ERR_CHEST_IN_USE = 253, - ERR_USE_CANT_OPEN = 254, - ERR_USE_LOCKED = 255, - ERR_DOOR_LOCKED = 256, - ERR_BUTTON_LOCKED = 257, - ERR_USE_LOCKED_WITH_ITEM_S = 258, - ERR_USE_LOCKED_WITH_SPELL_S = 259, - ERR_USE_LOCKED_WITH_SPELL_KNOWN_SI = 260, - ERR_USE_TOO_FAR = 261, - ERR_USE_BAD_ANGLE = 262, - ERR_USE_OBJECT_MOVING = 263, - ERR_USE_SPELL_FOCUS = 264, - ERR_USE_DESTROYED = 265, - ERR_SET_LOOT_FREEFORALL = 266, - ERR_SET_LOOT_ROUNDROBIN = 267, - ERR_SET_LOOT_MASTER = 268, - ERR_SET_LOOT_GROUP = 269, - ERR_SET_LOOT_THRESHOLD_S = 270, - ERR_NEW_LOOT_MASTER_S = 271, - ERR_SPECIFY_MASTER_LOOTER = 272, - ERR_LOOT_SPEC_CHANGED_S = 273, - ERR_TAME_FAILED = 274, - ERR_CHAT_WHILE_DEAD = 275, - ERR_CHAT_PLAYER_NOT_FOUND_S = 276, - ERR_NEWTAXIPATH = 277, - ERR_NO_PET = 278, - ERR_NOTYOURPET = 279, - ERR_PET_NOT_RENAMEABLE = 280, - ERR_QUEST_OBJECTIVE_COMPLETE_S = 281, - ERR_QUEST_UNKNOWN_COMPLETE = 282, - ERR_QUEST_ADD_KILL_SII = 283, - ERR_QUEST_ADD_FOUND_SII = 284, - ERR_QUEST_ADD_ITEM_SII = 285, - ERR_QUEST_ADD_PLAYER_KILL_SII = 286, - ERR_CANNOTCREATEDIRECTORY = 287, - ERR_CANNOTCREATEFILE = 288, - ERR_PLAYER_WRONG_FACTION = 289, - ERR_PLAYER_IS_NEUTRAL = 290, - ERR_BANKSLOT_FAILED_TOO_MANY = 291, - ERR_BANKSLOT_INSUFFICIENT_FUNDS = 292, - ERR_BANKSLOT_NOTBANKER = 293, - ERR_FRIEND_DB_ERROR = 294, - ERR_FRIEND_LIST_FULL = 295, - ERR_FRIEND_ADDED_S = 296, - ERR_BATTLETAG_FRIEND_ADDED_S = 297, - ERR_FRIEND_ONLINE_SS = 298, - ERR_FRIEND_OFFLINE_S = 299, - ERR_FRIEND_NOT_FOUND = 300, - ERR_FRIEND_WRONG_FACTION = 301, - ERR_FRIEND_REMOVED_S = 302, - ERR_BATTLETAG_FRIEND_REMOVED_S = 303, - ERR_FRIEND_ERROR = 304, - ERR_FRIEND_ALREADY_S = 305, - ERR_FRIEND_SELF = 306, - ERR_FRIEND_DELETED = 307, - ERR_IGNORE_FULL = 308, - ERR_IGNORE_SELF = 309, - ERR_IGNORE_NOT_FOUND = 310, - ERR_IGNORE_ALREADY_S = 311, - ERR_IGNORE_ADDED_S = 312, - ERR_IGNORE_REMOVED_S = 313, - ERR_IGNORE_AMBIGUOUS = 314, - ERR_IGNORE_DELETED = 315, - ERR_ONLY_ONE_BOLT = 316, - ERR_ONLY_ONE_AMMO = 317, - ERR_SPELL_FAILED_EQUIPPED_SPECIFIC_ITEM = 318, - ERR_WRONG_BAG_TYPE_SUBCLASS = 319, - ERR_CANT_WRAP_STACKABLE = 320, - ERR_CANT_WRAP_EQUIPPED = 321, - ERR_CANT_WRAP_WRAPPED = 322, - ERR_CANT_WRAP_BOUND = 323, - ERR_CANT_WRAP_UNIQUE = 324, - ERR_CANT_WRAP_BAGS = 325, - ERR_OUT_OF_MANA = 326, - ERR_OUT_OF_RAGE = 327, - ERR_OUT_OF_FOCUS = 328, - ERR_OUT_OF_ENERGY = 329, - ERR_OUT_OF_CHI = 330, - ERR_OUT_OF_HEALTH = 331, - ERR_OUT_OF_RUNES = 332, - ERR_OUT_OF_RUNIC_POWER = 333, - ERR_OUT_OF_SOUL_SHARDS = 334, - ERR_OUT_OF_LUNAR_POWER = 335, - ERR_OUT_OF_HOLY_POWER = 336, - ERR_OUT_OF_MAELSTROM = 337, - ERR_OUT_OF_COMBO_POINTS = 338, - ERR_OUT_OF_INSANITY = 339, - ERR_OUT_OF_ARCANE_CHARGES = 340, - ERR_OUT_OF_FURY = 341, - ERR_OUT_OF_PAIN = 342, - ERR_OUT_OF_POWER_DISPLAY = 343, - ERR_LOOT_GONE = 344, - ERR_MOUNT_FORCEDDISMOUNT = 345, - ERR_AUTOFOLLOW_TOO_FAR = 346, - ERR_UNIT_NOT_FOUND = 347, - ERR_INVALID_FOLLOW_TARGET = 348, - ERR_INVALID_INSPECT_TARGET = 349, - ERR_GUILDEMBLEM_SUCCESS = 350, - ERR_GUILDEMBLEM_INVALID_TABARD_COLORS = 351, - ERR_GUILDEMBLEM_NOGUILD = 352, - ERR_GUILDEMBLEM_NOTGUILDMASTER = 353, - ERR_GUILDEMBLEM_NOTENOUGHMONEY = 354, - ERR_GUILDEMBLEM_INVALIDVENDOR = 355, - ERR_EMBLEMERROR_NOTABARDGEOSET = 356, - ERR_SPELL_OUT_OF_RANGE = 357, - ERR_COMMAND_NEEDS_TARGET = 358, - ERR_NOAMMO_S = 359, - ERR_TOOBUSYTOFOLLOW = 360, - ERR_DUEL_REQUESTED = 361, - ERR_DUEL_CANCELLED = 362, - ERR_DEATHBINDALREADYBOUND = 363, - ERR_DEATHBIND_SUCCESS_S = 364, - ERR_NOEMOTEWHILERUNNING = 365, - ERR_ZONE_EXPLORED = 366, - ERR_ZONE_EXPLORED_XP = 367, - ERR_INVALID_ITEM_TARGET = 368, - ERR_INVALID_QUEST_TARGET = 369, - ERR_IGNORING_YOU_S = 370, - ERR_FISH_NOT_HOOKED = 371, - ERR_FISH_ESCAPED = 372, - ERR_SPELL_FAILED_NOTUNSHEATHED = 373, - ERR_PETITION_OFFERED_S = 374, - ERR_PETITION_SIGNED = 375, - ERR_PETITION_SIGNED_S = 376, - ERR_PETITION_DECLINED_S = 377, - ERR_PETITION_ALREADY_SIGNED = 378, - ERR_PETITION_RESTRICTED_ACCOUNT_TRIAL = 379, - ERR_PETITION_ALREADY_SIGNED_OTHER = 380, - ERR_PETITION_IN_GUILD = 381, - ERR_PETITION_CREATOR = 382, - ERR_PETITION_NOT_ENOUGH_SIGNATURES = 383, - ERR_PETITION_NOT_SAME_SERVER = 384, - ERR_PETITION_FULL = 385, - ERR_PETITION_ALREADY_SIGNED_BY_S = 386, - ERR_GUILD_NAME_INVALID = 387, - ERR_SPELL_UNLEARNED_S = 388, - ERR_PET_SPELL_ROOTED = 389, - ERR_PET_SPELL_AFFECTING_COMBAT = 390, - ERR_PET_SPELL_OUT_OF_RANGE = 391, - ERR_PET_SPELL_NOT_BEHIND = 392, - ERR_PET_SPELL_TARGETS_DEAD = 393, - ERR_PET_SPELL_DEAD = 394, - ERR_PET_SPELL_NOPATH = 395, - ERR_ITEM_CANT_BE_DESTROYED = 396, - ERR_TICKET_ALREADY_EXISTS = 397, - ERR_TICKET_CREATE_ERROR = 398, - ERR_TICKET_UPDATE_ERROR = 399, - ERR_TICKET_DB_ERROR = 400, - ERR_TICKET_NO_TEXT = 401, - ERR_TICKET_TEXT_TOO_LONG = 402, - ERR_OBJECT_IS_BUSY = 403, - ERR_EXHAUSTION_WELLRESTED = 404, - ERR_EXHAUSTION_RESTED = 405, - ERR_EXHAUSTION_NORMAL = 406, - ERR_EXHAUSTION_TIRED = 407, - ERR_EXHAUSTION_EXHAUSTED = 408, - ERR_NO_ITEMS_WHILE_SHAPESHIFTED = 409, - ERR_CANT_INTERACT_SHAPESHIFTED = 410, - ERR_REALM_NOT_FOUND = 411, - ERR_MAIL_QUEST_ITEM = 412, - ERR_MAIL_BOUND_ITEM = 413, - ERR_MAIL_CONJURED_ITEM = 414, - ERR_MAIL_BAG = 415, - ERR_MAIL_TO_SELF = 416, - ERR_MAIL_TARGET_NOT_FOUND = 417, - ERR_MAIL_DATABASE_ERROR = 418, - ERR_MAIL_DELETE_ITEM_ERROR = 419, - ERR_MAIL_WRAPPED_COD = 420, - ERR_MAIL_CANT_SEND_REALM = 421, - ERR_MAIL_SENT = 422, - ERR_NOT_HAPPY_ENOUGH = 423, - ERR_USE_CANT_IMMUNE = 424, - ERR_CANT_BE_DISENCHANTED = 425, - ERR_CANT_USE_DISARMED = 426, - ERR_AUCTION_QUEST_ITEM = 427, - ERR_AUCTION_BOUND_ITEM = 428, - ERR_AUCTION_CONJURED_ITEM = 429, - ERR_AUCTION_LIMITED_DURATION_ITEM = 430, - ERR_AUCTION_WRAPPED_ITEM = 431, - ERR_AUCTION_LOOT_ITEM = 432, - ERR_AUCTION_BAG = 433, - ERR_AUCTION_EQUIPPED_BAG = 434, - ERR_AUCTION_DATABASE_ERROR = 435, - ERR_AUCTION_BID_OWN = 436, - ERR_AUCTION_BID_INCREMENT = 437, - ERR_AUCTION_HIGHER_BID = 438, - ERR_AUCTION_MIN_BID = 439, - ERR_AUCTION_REPAIR_ITEM = 440, - ERR_AUCTION_USED_CHARGES = 441, - ERR_AUCTION_ALREADY_BID = 442, - ERR_AUCTION_STARTED = 443, - ERR_AUCTION_REMOVED = 444, - ERR_AUCTION_OUTBID_S = 445, - ERR_AUCTION_WON_S = 446, - ERR_AUCTION_SOLD_S = 447, - ERR_AUCTION_EXPIRED_S = 448, - ERR_AUCTION_REMOVED_S = 449, - ERR_AUCTION_BID_PLACED = 450, - ERR_LOGOUT_FAILED = 451, - ERR_QUEST_PUSH_SUCCESS_S = 452, - ERR_QUEST_PUSH_INVALID_S = 453, - ERR_QUEST_PUSH_ACCEPTED_S = 454, - ERR_QUEST_PUSH_DECLINED_S = 455, - ERR_QUEST_PUSH_BUSY_S = 456, - ERR_QUEST_PUSH_DEAD_S = 457, - ERR_QUEST_PUSH_LOG_FULL_S = 458, - ERR_QUEST_PUSH_ONQUEST_S = 459, - ERR_QUEST_PUSH_ALREADY_DONE_S = 460, - ERR_QUEST_PUSH_NOT_DAILY_S = 461, - ERR_QUEST_PUSH_TIMER_EXPIRED_S = 462, - ERR_QUEST_PUSH_NOT_IN_PARTY_S = 463, - ERR_QUEST_PUSH_DIFFERENT_SERVER_DAILY_S = 464, - ERR_QUEST_PUSH_NOT_ALLOWED_S = 465, - ERR_RAID_GROUP_LOWLEVEL = 466, - ERR_RAID_GROUP_ONLY = 467, - ERR_RAID_GROUP_FULL = 468, - ERR_RAID_GROUP_REQUIREMENTS_UNMATCH = 469, - ERR_CORPSE_IS_NOT_IN_INSTANCE = 470, - ERR_PVP_KILL_HONORABLE = 471, - ERR_PVP_KILL_DISHONORABLE = 472, - ERR_SPELL_FAILED_ALREADY_AT_FULL_HEALTH = 473, - ERR_SPELL_FAILED_ALREADY_AT_FULL_MANA = 474, - ERR_SPELL_FAILED_ALREADY_AT_FULL_POWER_S = 475, - ERR_AUTOLOOT_MONEY_S = 476, - ERR_GENERIC_STUNNED = 477, - ERR_TARGET_STUNNED = 478, - ERR_MUST_REPAIR_DURABILITY = 479, - ERR_RAID_YOU_JOINED = 480, - ERR_RAID_YOU_LEFT = 481, - ERR_INSTANCE_GROUP_JOINED_WITH_PARTY = 482, - ERR_INSTANCE_GROUP_JOINED_WITH_RAID = 483, - ERR_RAID_MEMBER_ADDED_S = 484, - ERR_RAID_MEMBER_REMOVED_S = 485, - ERR_INSTANCE_GROUP_ADDED_S = 486, - ERR_INSTANCE_GROUP_REMOVED_S = 487, - ERR_CLICK_ON_ITEM_TO_FEED = 488, - ERR_TOO_MANY_CHAT_CHANNELS = 489, - ERR_LOOT_ROLL_PENDING = 490, - ERR_LOOT_PLAYER_NOT_FOUND = 491, - ERR_NOT_IN_RAID = 492, - ERR_LOGGING_OUT = 493, - ERR_TARGET_LOGGING_OUT = 494, - ERR_NOT_WHILE_MOUNTED = 495, - ERR_NOT_WHILE_SHAPESHIFTED = 496, - ERR_NOT_IN_COMBAT = 497, - ERR_NOT_WHILE_DISARMED = 498, - ERR_PET_BROKEN = 499, - ERR_TALENT_WIPE_ERROR = 500, - ERR_SPEC_WIPE_ERROR = 501, - ERR_GLYPH_WIPE_ERROR = 502, - ERR_PET_SPEC_WIPE_ERROR = 503, - ERR_FEIGN_DEATH_RESISTED = 504, - ERR_MEETING_STONE_IN_QUEUE_S = 505, - ERR_MEETING_STONE_LEFT_QUEUE_S = 506, - ERR_MEETING_STONE_OTHER_MEMBER_LEFT = 507, - ERR_MEETING_STONE_PARTY_KICKED_FROM_QUEUE = 508, - ERR_MEETING_STONE_MEMBER_STILL_IN_QUEUE = 509, - ERR_MEETING_STONE_SUCCESS = 510, - ERR_MEETING_STONE_IN_PROGRESS = 511, - ERR_MEETING_STONE_MEMBER_ADDED_S = 512, - ERR_MEETING_STONE_GROUP_FULL = 513, - ERR_MEETING_STONE_NOT_LEADER = 514, - ERR_MEETING_STONE_INVALID_LEVEL = 515, - ERR_MEETING_STONE_TARGET_NOT_IN_PARTY = 516, - ERR_MEETING_STONE_TARGET_INVALID_LEVEL = 517, - ERR_MEETING_STONE_MUST_BE_LEADER = 518, - ERR_MEETING_STONE_NO_RAID_GROUP = 519, - ERR_MEETING_STONE_NEED_PARTY = 520, - ERR_MEETING_STONE_NOT_FOUND = 521, - ERR_GUILDEMBLEM_SAME = 522, - ERR_EQUIP_TRADE_ITEM = 523, - ERR_PVP_TOGGLE_ON = 524, - ERR_PVP_TOGGLE_OFF = 525, - ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS = 526, - ERR_GROUP_JOIN_BATTLEGROUND_DEAD = 527, - ERR_GROUP_JOIN_BATTLEGROUND_S = 528, - ERR_GROUP_JOIN_BATTLEGROUND_FAIL = 529, - ERR_GROUP_JOIN_BATTLEGROUND_TOO_MANY = 530, - ERR_SOLO_JOIN_BATTLEGROUND_S = 531, - ERR_BATTLEGROUND_TOO_MANY_QUEUES = 532, - ERR_BATTLEGROUND_CANNOT_QUEUE_FOR_RATED = 533, - ERR_BATTLEDGROUND_QUEUED_FOR_RATED = 534, - ERR_BATTLEGROUND_TEAM_LEFT_QUEUE = 535, - ERR_BATTLEGROUND_NOT_IN_BATTLEGROUND = 536, - ERR_ALREADY_IN_ARENA_TEAM_S = 537, - ERR_INVALID_PROMOTION_CODE = 538, - ERR_BG_PLAYER_JOINED_SS = 539, - ERR_BG_PLAYER_LEFT_S = 540, - ERR_RESTRICTED_ACCOUNT = 541, - ERR_RESTRICTED_ACCOUNT_TRIAL = 542, - ERR_PLAY_TIME_EXCEEDED = 543, - ERR_APPROACHING_PARTIAL_PLAY_TIME = 544, - ERR_APPROACHING_PARTIAL_PLAY_TIME_2 = 545, - ERR_APPROACHING_NO_PLAY_TIME = 546, - ERR_APPROACHING_NO_PLAY_TIME_2 = 547, - ERR_UNHEALTHY_TIME = 548, - ERR_CHAT_RESTRICTED_TRIAL = 549, - ERR_CHAT_THROTTLED = 550, - ERR_MAIL_REACHED_CAP = 551, - ERR_INVALID_RAID_TARGET = 552, - ERR_RAID_LEADER_READY_CHECK_START_S = 553, - ERR_READY_CHECK_IN_PROGRESS = 554, - ERR_READY_CHECK_THROTTLED = 555, - ERR_DUNGEON_DIFFICULTY_FAILED = 556, - ERR_DUNGEON_DIFFICULTY_CHANGED_S = 557, - ERR_TRADE_WRONG_REALM = 558, - ERR_TRADE_NOT_ON_TAPLIST = 559, - ERR_CHAT_PLAYER_AMBIGUOUS_S = 560, - ERR_LOOT_CANT_LOOT_THAT_NOW = 561, - ERR_LOOT_MASTER_INV_FULL = 562, - ERR_LOOT_MASTER_UNIQUE_ITEM = 563, - ERR_LOOT_MASTER_OTHER = 564, - ERR_FILTERING_YOU_S = 565, - ERR_USE_PREVENTED_BY_MECHANIC_S = 566, - ERR_ITEM_UNIQUE_EQUIPPABLE = 567, - ERR_LFG_LEADER_IS_LFM_S = 568, - ERR_LFG_PENDING = 569, - ERR_CANT_SPEAK_LANGAGE = 570, - ERR_VENDOR_MISSING_TURNINS = 571, - ERR_BATTLEGROUND_NOT_IN_TEAM = 572, - ERR_NOT_IN_BATTLEGROUND = 573, - ERR_NOT_ENOUGH_HONOR_POINTS = 574, - ERR_NOT_ENOUGH_ARENA_POINTS = 575, - ERR_SOCKETING_REQUIRES_META_GEM = 576, - ERR_SOCKETING_META_GEM_ONLY_IN_METASLOT = 577, - ERR_SOCKETING_REQUIRES_HYDRAULIC_GEM = 578, - ERR_SOCKETING_HYDRAULIC_GEM_ONLY_IN_HYDRAULICSLOT = 579, - ERR_SOCKETING_REQUIRES_COGWHEEL_GEM = 580, - ERR_SOCKETING_COGWHEEL_GEM_ONLY_IN_COGWHEELSLOT = 581, - ERR_SOCKETING_ITEM_TOO_LOW_LEVEL = 582, - ERR_ITEM_MAX_COUNT_SOCKETED = 583, - ERR_SYSTEM_DISABLED = 584, - ERR_QUEST_FAILED_TOO_MANY_DAILY_QUESTS_I = 585, - ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED = 586, - ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED = 587, - ERR_USER_SQUELCHED = 588, - ERR_TOO_MUCH_GOLD = 589, - ERR_NOT_BARBER_SITTING = 590, - ERR_QUEST_FAILED_CAIS = 591, - ERR_INVITE_RESTRICTED_TRIAL = 592, - ERR_VOICE_IGNORE_FULL = 593, - ERR_VOICE_IGNORE_SELF = 594, - ERR_VOICE_IGNORE_NOT_FOUND = 595, - ERR_VOICE_IGNORE_ALREADY_S = 596, - ERR_VOICE_IGNORE_ADDED_S = 597, - ERR_VOICE_IGNORE_REMOVED_S = 598, - ERR_VOICE_IGNORE_AMBIGUOUS = 599, - ERR_VOICE_IGNORE_DELETED = 600, - ERR_UNKNOWN_MACRO_OPTION_S = 601, - ERR_NOT_DURING_ARENA_MATCH = 602, - ERR_PLAYER_SILENCED = 603, - ERR_PLAYER_UNSILENCED = 604, - ERR_COMSAT_DISCONNECT = 605, - ERR_COMSAT_RECONNECT_ATTEMPT = 606, - ERR_COMSAT_CONNECT_FAIL = 607, - ERR_MAIL_INVALID_ATTACHMENT_SLOT = 608, - ERR_MAIL_TOO_MANY_ATTACHMENTS = 609, - ERR_MAIL_INVALID_ATTACHMENT = 610, - ERR_MAIL_ATTACHMENT_EXPIRED = 611, - ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 612, - ERR_VOICE_CHAT_PARENTAL_DISABLE_MIC = 613, - ERR_PROFANE_CHAT_NAME = 614, - ERR_PLAYER_SILENCED_ECHO = 615, - ERR_PLAYER_UNSILENCED_ECHO = 616, - ERR_VOICESESSION_FULL = 617, - ERR_LOOT_CANT_LOOT_THAT = 618, - ERR_ARENA_EXPIRED_CAIS = 619, - ERR_GROUP_ACTION_THROTTLED = 620, - ERR_ALREADY_PICKPOCKETED = 621, - ERR_NAME_INVALID = 622, - ERR_NAME_NO_NAME = 623, - ERR_NAME_TOO_SHORT = 624, - ERR_NAME_TOO_LONG = 625, - ERR_NAME_MIXED_LANGUAGES = 626, - ERR_NAME_PROFANE = 627, - ERR_NAME_RESERVED = 628, - ERR_NAME_THREE_CONSECUTIVE = 629, - ERR_NAME_INVALID_SPACE = 630, - ERR_NAME_CONSECUTIVE_SPACES = 631, - ERR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS = 632, - ERR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 633, - ERR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 634, - ERR_REFER_A_FRIEND_NOT_REFERRED_BY = 635, - ERR_REFER_A_FRIEND_TARGET_TOO_HIGH = 636, - ERR_REFER_A_FRIEND_INSUFFICIENT_GRANTABLE_LEVELS = 637, - ERR_REFER_A_FRIEND_TOO_FAR = 638, - ERR_REFER_A_FRIEND_DIFFERENT_FACTION = 639, - ERR_REFER_A_FRIEND_NOT_NOW = 640, - ERR_REFER_A_FRIEND_GRANT_LEVEL_MAX_I = 641, - ERR_REFER_A_FRIEND_SUMMON_LEVEL_MAX_I = 642, - ERR_REFER_A_FRIEND_SUMMON_COOLDOWN = 643, - ERR_REFER_A_FRIEND_SUMMON_OFFLINE_S = 644, - ERR_REFER_A_FRIEND_INSUF_EXPAN_LVL = 645, - ERR_REFER_A_FRIEND_NOT_IN_LFG = 646, - ERR_REFER_A_FRIEND_NO_XREALM = 647, - ERR_REFER_A_FRIEND_MAP_INCOMING_TRANSFER_NOT_ALLOWED = 648, - ERR_NOT_SAME_ACCOUNT = 649, - ERR_BAD_ON_USE_ENCHANT = 650, - ERR_TRADE_SELF = 651, - ERR_TOO_MANY_SOCKETS = 652, - ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 653, - ERR_TRADE_TARGET_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 654, - ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS = 655, - ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS = 656, - ERR_SHAPESHIFT_FORM_CANNOT_EQUIP = 657, - ERR_ITEM_INVENTORY_FULL_SATCHEL = 658, - ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED = 659, - ERR_SCALING_STAT_ITEM_LEVEL_TOO_LOW = 660, - ERR_PURCHASE_LEVEL_TOO_LOW = 661, - ERR_GROUP_SWAP_FAILED = 662, - ERR_INVITE_IN_COMBAT = 663, - ERR_INVALID_GLYPH_SLOT = 664, - ERR_GENERIC_NO_VALID_TARGETS = 665, - ERR_CALENDAR_EVENT_ALERT_S = 666, - ERR_PET_LEARN_SPELL_S = 667, - ERR_PET_LEARN_ABILITY_S = 668, - ERR_PET_SPELL_UNLEARNED_S = 669, - ERR_INVITE_UNKNOWN_REALM = 670, - ERR_INVITE_NO_PARTY_SERVER = 671, - ERR_INVITE_PARTY_BUSY = 672, - ERR_PARTY_TARGET_AMBIGUOUS = 673, - ERR_PARTY_LFG_INVITE_RAID_LOCKED = 674, - ERR_PARTY_LFG_BOOT_LIMIT = 675, - ERR_PARTY_LFG_BOOT_COOLDOWN_S = 676, - ERR_PARTY_LFG_BOOT_NOT_ELIGIBLE_S = 677, - ERR_PARTY_LFG_BOOT_INPATIENT_TIMER_S = 678, - ERR_PARTY_LFG_BOOT_IN_PROGRESS = 679, - ERR_PARTY_LFG_BOOT_TOO_FEW_PLAYERS = 680, - ERR_PARTY_LFG_BOOT_VOTE_SUCCEEDED = 681, - ERR_PARTY_LFG_BOOT_VOTE_FAILED = 682, - ERR_PARTY_LFG_BOOT_IN_COMBAT = 683, - ERR_PARTY_LFG_BOOT_DUNGEON_COMPLETE = 684, - ERR_PARTY_LFG_BOOT_LOOT_ROLLS = 685, - ERR_PARTY_LFG_BOOT_VOTE_REGISTERED = 686, - ERR_PARTY_PRIVATE_GROUP_ONLY = 687, - ERR_PARTY_LFG_TELEPORT_IN_COMBAT = 688, - ERR_RAID_DISALLOWED_BY_LEVEL = 689, - ERR_RAID_DISALLOWED_BY_CROSS_REALM = 690, - ERR_PARTY_ROLE_NOT_AVAILABLE = 691, - ERR_JOIN_LFG_OBJECT_FAILED = 692, - ERR_LFG_REMOVED_LEVELUP = 693, - ERR_LFG_REMOVED_XP_TOGGLE = 694, - ERR_LFG_REMOVED_FACTION_CHANGE = 695, - ERR_BATTLEGROUND_INFO_THROTTLED = 696, - ERR_BATTLEGROUND_ALREADY_IN = 697, - ERR_ARENA_TEAM_CHANGE_FAILED_QUEUED = 698, - ERR_ARENA_TEAM_PERMISSIONS = 699, - ERR_NOT_WHILE_FALLING = 700, - ERR_NOT_WHILE_MOVING = 701, - ERR_NOT_WHILE_FATIGUED = 702, - ERR_MAX_SOCKETS = 703, - ERR_MULTI_CAST_ACTION_TOTEM_S = 704, - ERR_BATTLEGROUND_JOIN_LEVELUP = 705, - ERR_REMOVE_FROM_PVP_QUEUE_XP_GAIN = 706, - ERR_BATTLEGROUND_JOIN_XP_GAIN = 707, - ERR_BATTLEGROUND_JOIN_MERCENARY = 708, - ERR_BATTLEGROUND_JOIN_TOO_MANY_HEALERS = 709, - ERR_BATTLEGROUND_JOIN_TOO_MANY_TANKS = 710, - ERR_BATTLEGROUND_JOIN_TOO_MANY_DAMAGE = 711, - ERR_RAID_DIFFICULTY_FAILED = 712, - ERR_RAID_DIFFICULTY_CHANGED_S = 713, - ERR_LEGACY_RAID_DIFFICULTY_CHANGED_S = 714, - ERR_RAID_LOCKOUT_CHANGED_S = 715, - ERR_RAID_CONVERTED_TO_PARTY = 716, - ERR_PARTY_CONVERTED_TO_RAID = 717, - ERR_PLAYER_DIFFICULTY_CHANGED_S = 718, - ERR_GMRESPONSE_DB_ERROR = 719, - ERR_BATTLEGROUND_JOIN_RANGE_INDEX = 720, - ERR_ARENA_JOIN_RANGE_INDEX = 721, - ERR_REMOVE_FROM_PVP_QUEUE_FACTION_CHANGE = 722, - ERR_BATTLEGROUND_JOIN_FAILED = 723, - ERR_BATTLEGROUND_JOIN_NO_VALID_SPEC_FOR_ROLE = 724, - ERR_BATTLEGROUND_JOIN_RESPEC = 725, - ERR_BATTLEGROUND_INVITATION_DECLINED = 726, - ERR_BATTLEGROUND_JOIN_TIMED_OUT = 727, - ERR_BATTLEGROUND_DUPE_QUEUE = 728, - ERR_BATTLEGROUND_JOIN_MUST_COMPLETE_QUEST = 729, - ERR_IN_BATTLEGROUND_RESPEC = 730, - ERR_MAIL_LIMITED_DURATION_ITEM = 731, - ERR_YELL_RESTRICTED_TRIAL = 732, - ERR_CHAT_RAID_RESTRICTED_TRIAL = 733, - ERR_LFG_ROLE_CHECK_FAILED = 734, - ERR_LFG_ROLE_CHECK_FAILED_TIMEOUT = 735, - ERR_LFG_ROLE_CHECK_FAILED_NOT_VIABLE = 736, - ERR_LFG_READY_CHECK_FAILED = 737, - ERR_LFG_READY_CHECK_FAILED_TIMEOUT = 738, - ERR_LFG_GROUP_FULL = 739, - ERR_LFG_NO_LFG_OBJECT = 740, - ERR_LFG_NO_SLOTS_PLAYER = 741, - ERR_LFG_NO_SLOTS_PARTY = 742, - ERR_LFG_NO_SPEC = 743, - ERR_LFG_MISMATCHED_SLOTS = 744, - ERR_LFG_MISMATCHED_SLOTS_LOCAL_XREALM = 745, - ERR_LFG_PARTY_PLAYERS_FROM_DIFFERENT_REALMS = 746, - ERR_LFG_MEMBERS_NOT_PRESENT = 747, - ERR_LFG_GET_INFO_TIMEOUT = 748, - ERR_LFG_INVALID_SLOT = 749, - ERR_LFG_DESERTER_PLAYER = 750, - ERR_LFG_DESERTER_PARTY = 751, - ERR_LFG_DEAD = 752, - ERR_LFG_RANDOM_COOLDOWN_PLAYER = 753, - ERR_LFG_RANDOM_COOLDOWN_PARTY = 754, - ERR_LFG_TOO_MANY_MEMBERS = 755, - ERR_LFG_TOO_FEW_MEMBERS = 756, - ERR_LFG_PROPOSAL_FAILED = 757, - ERR_LFG_PROPOSAL_DECLINED_SELF = 758, - ERR_LFG_PROPOSAL_DECLINED_PARTY = 759, - ERR_LFG_NO_SLOTS_SELECTED = 760, - ERR_LFG_NO_ROLES_SELECTED = 761, - ERR_LFG_ROLE_CHECK_INITIATED = 762, - ERR_LFG_READY_CHECK_INITIATED = 763, - ERR_LFG_PLAYER_DECLINED_ROLE_CHECK = 764, - ERR_LFG_PLAYER_DECLINED_READY_CHECK = 765, - ERR_LFG_JOINED_QUEUE = 766, - ERR_LFG_JOINED_FLEX_QUEUE = 767, - ERR_LFG_JOINED_RF_QUEUE = 768, - ERR_LFG_JOINED_SCENARIO_QUEUE = 769, - ERR_LFG_JOINED_WORLD_PVP_QUEUE = 770, - ERR_LFG_JOINED_BATTLEFIELD_QUEUE = 771, - ERR_LFG_JOINED_LIST = 772, - ERR_LFG_LEFT_QUEUE = 773, - ERR_LFG_LEFT_LIST = 774, - ERR_LFG_ROLE_CHECK_ABORTED = 775, - ERR_LFG_READY_CHECK_ABORTED = 776, - ERR_LFG_CANT_USE_BATTLEGROUND = 777, - ERR_LFG_CANT_USE_DUNGEONS = 778, - ERR_LFG_REASON_TOO_MANY_LFG = 779, - ERR_INVALID_TELEPORT_LOCATION = 780, - ERR_TOO_FAR_TO_INTERACT = 781, - ERR_BATTLEGROUND_PLAYERS_FROM_DIFFERENT_REALMS = 782, - ERR_DIFFICULTY_CHANGE_COOLDOWN_S = 783, - ERR_DIFFICULTY_CHANGE_COMBAT_COOLDOWN_S = 784, - ERR_DIFFICULTY_CHANGE_WORLDSTATE = 785, - ERR_DIFFICULTY_CHANGE_ENCOUNTER = 786, - ERR_DIFFICULTY_CHANGE_COMBAT = 787, - ERR_DIFFICULTY_CHANGE_PLAYER_BUSY = 788, - ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 789, - ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 790, - ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 791, - ERR_ARENA_TEAM_PARTY_SIZE = 792, - ERR_QUEST_FORCE_REMOVED_S = 793, - ERR_ATTACK_NO_ACTIONS = 794, - ERR_IN_RANDOM_BG = 795, - ERR_IN_NON_RANDOM_BG = 796, - ERR_AUCTION_ENOUGH_ITEMS = 797, - ERR_BN_FRIEND_SELF = 798, - ERR_BN_FRIEND_ALREADY = 799, - ERR_BN_FRIEND_BLOCKED = 800, - ERR_BN_FRIEND_LIST_FULL = 801, - ERR_BN_FRIEND_REQUEST_SENT = 802, - ERR_BN_BROADCAST_THROTTLE = 803, - ERR_BG_DEVELOPER_ONLY = 804, - ERR_CURRENCY_SPELL_SLOT_MISMATCH = 805, - ERR_CURRENCY_NOT_TRADABLE = 806, - ERR_REQUIRES_EXPANSION_S = 807, - ERR_QUEST_FAILED_SPELL = 808, - ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 809, - ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 810, - ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 811, - ERR_TALENT_FAILED_UNKNOWN = 812, - ERR_WARGAME_REQUEST_FAILURE = 813, - ERR_RANK_REQUIRES_AUTHENTICATOR = 814, - ERR_GUILD_BANK_VOUCHER_FAILED = 815, - ERR_WARGAME_REQUEST_SENT = 816, - ERR_REQUIRES_ACHIEVEMENT_I = 817, - ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 818, - ERR_CANT_BUY_QUANTITY = 819, - ERR_ITEM_IS_BATTLE_PAY_LOCKED = 820, - ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 821, - ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 822, - ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 823, - ERR_INSUFF_TRACKED_CURRENCY_IS = 824, - ERR_NOT_ON_TOURNAMENT_REALM = 825, - ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 826, - ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 827, - ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 828, - ERR_CANT_DO_THAT_IN_A_GROUP = 829, - ERR_GUILD_LEADER_REPLACED = 830, - ERR_TRANSMOGRIFY_CANT_EQUIP = 831, - ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 832, - ERR_TRANSMOGRIFY_NOT_SOULBOUND = 833, - ERR_TRANSMOGRIFY_INVALID_SOURCE = 834, - ERR_TRANSMOGRIFY_INVALID_DESTINATION = 835, - ERR_TRANSMOGRIFY_MISMATCH = 836, - ERR_TRANSMOGRIFY_LEGENDARY = 837, - ERR_TRANSMOGRIFY_SAME_ITEM = 838, - ERR_TRANSMOGRIFY_SAME_APPEARANCE = 839, - ERR_TRANSMOGRIFY_NOT_EQUIPPED = 840, - ERR_VOID_DEPOSIT_FULL = 841, - ERR_VOID_WITHDRAW_FULL = 842, - ERR_VOID_STORAGE_WRAPPED = 843, - ERR_VOID_STORAGE_STACKABLE = 844, - ERR_VOID_STORAGE_UNBOUND = 845, - ERR_VOID_STORAGE_REPAIR = 846, - ERR_VOID_STORAGE_CHARGES = 847, - ERR_VOID_STORAGE_QUEST = 848, - ERR_VOID_STORAGE_CONJURED = 849, - ERR_VOID_STORAGE_MAIL = 850, - ERR_VOID_STORAGE_BAG = 851, - ERR_VOID_TRANSFER_STORAGE_FULL = 852, - ERR_VOID_TRANSFER_INV_FULL = 853, - ERR_VOID_TRANSFER_INTERNAL_ERROR = 854, - ERR_VOID_TRANSFER_ITEM_INVALID = 855, - ERR_DIFFICULTY_DISABLED_IN_LFG = 856, - ERR_VOID_STORAGE_UNIQUE = 857, - ERR_VOID_STORAGE_LOOT = 858, - ERR_VOID_STORAGE_HOLIDAY = 859, - ERR_VOID_STORAGE_DURATION = 860, - ERR_VOID_STORAGE_LOAD_FAILED = 861, - ERR_VOID_STORAGE_INVALID_ITEM = 862, - ERR_PARENTAL_CONTROLS_CHAT_MUTED = 863, - ERR_SOR_START_EXPERIENCE_INCOMPLETE = 864, - ERR_SOR_INVALID_EMAIL = 865, - ERR_SOR_INVALID_COMMENT = 866, - ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 867, - ERR_CHALLENGE_MODE_RESET_KEYSTONE = 868, - ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 869, - ERR_REPORT_SUBMITTED_SUCCESSFULLY = 870, - ERR_REPORT_SUBMISSION_FAILED = 871, - ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 872, - ERR_BUG_SUBMITTED_SUCCESSFULLY = 873, - ERR_CHALLENGE_MODE_ENABLED = 874, - ERR_CHALLENGE_MODE_DISABLED = 875, - ERR_PETBATTLE_CREATE_FAILED = 876, - ERR_PETBATTLE_NOT_HERE = 877, - ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 878, - ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 879, - ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 880, - ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 881, - ERR_PETBATTLE_NOT_WHILE_DEAD = 882, - ERR_PETBATTLE_NOT_WHILE_FLYING = 883, - ERR_PETBATTLE_TARGET_INVALID = 884, - ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 885, - ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 886, - ERR_PETBATTLE_NOT_A_TRAINER = 887, - ERR_PETBATTLE_DECLINED = 888, - ERR_PETBATTLE_IN_BATTLE = 889, - ERR_PETBATTLE_INVALID_LOADOUT = 890, - ERR_PETBATTLE_ALL_PETS_DEAD = 891, - ERR_PETBATTLE_NO_PETS_IN_SLOTS = 892, - ERR_PETBATTLE_NO_ACCOUNT_LOCK = 893, - ERR_PETBATTLE_WILD_PET_TAPPED = 894, - ERR_PETBATTLE_RESTRICTED_ACCOUNT = 895, - ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 896, - ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 897, - ERR_CANT_HAVE_MORE_PETS = 898, - ERR_PVP_MAP_NOT_FOUND = 899, - ERR_PVP_MAP_NOT_SET = 900, - ERR_PETBATTLE_QUEUE_QUEUED = 901, - ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 902, - ERR_PETBATTLE_QUEUE_JOIN_FAILED = 903, - ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 904, - ERR_PETBATTLE_QUEUE_REMOVED = 905, - ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 906, - ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 907, - ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 908, - ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 909, - ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 910, - ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 911, - ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 912, - ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 913, - ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 914, - ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 915, - ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 916, - ERR_PETBATTLE_QUEUE_SLOT_DEAD = 917, - ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 918, - ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 919, - ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 920, - ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 921, - ERR_HAS_RESTRICTION = 922, - ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 923, - ERR_ITEM_UPGRADE_NO_PATH = 924, - ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 925, - ERR_BONUS_ROLL_EMPTY = 926, - ERR_CHALLENGE_MODE_FULL = 927, - ERR_CHALLENGE_MODE_IN_PROGRESS = 928, - ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 929, - ERR_BATTLETAG_FRIEND_NOT_FOUND = 930, - ERR_BATTLETAG_FRIEND_NOT_VALID = 931, - ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 932, - ERR_BATTLETAG_FRIEND_THROTTLED = 933, - ERR_BATTLETAG_FRIEND_SUCCESS = 934, - ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 935, - ERR_PETBATTLE_INTERNAL = 936, - ERR_CANT_CAGE_PET_YET = 937, - ERR_NO_LOOT_IN_CHALLENGE_MODE = 938, - ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 939, - ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 940, - ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 941, - ERR_RECRUIT_A_FRIEND_FAILED = 942, - ERR_SET_LOOT_PERSONAL = 943, - ERR_SET_LOOT_METHOD_FAILED_COMBAT = 944, - ERR_REAGENT_BANK_FULL = 945, - ERR_REAGENT_BANK_LOCKED = 946, - ERR_GARRISON_BUILDING_EXISTS = 947, - ERR_GARRISON_INVALID_PLOT = 948, - ERR_GARRISON_INVALID_BUILDINGID = 949, - ERR_GARRISON_INVALID_PLOT_BUILDING = 950, - ERR_GARRISON_REQUIRES_BLUEPRINT = 951, - ERR_GARRISON_NOT_ENOUGH_CURRENCY = 952, - ERR_GARRISON_NOT_ENOUGH_GOLD = 953, - ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 954, - ERR_ALREADY_USING_LFG_LIST = 955, - ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 956, - ERR_TOY_USE_LIMIT_REACHED = 957, - ERR_TOY_ALREADY_KNOWN = 958, - ERR_TRANSMOG_SET_ALREADY_KNOWN = 959, - ERR_NOT_ENOUGH_CURRENCY = 960, - ERR_SPEC_IS_DISABLED = 961, - ERR_FEATURE_RESTRICTED_TRIAL = 962, - ERR_CANT_BE_OBLITERATED = 963, - ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 964, - ERR_MUST_EQUIP_ARTIFACT = 965, - ERR_CANT_DO_THAT_RIGHT_NOW = 966, - ERR_AFFECTING_COMBAT = 967, - ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 968, - ERR_EQUIPMENT_MANAGER_BAGS_FULL = 969, - ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 970, - ERR_MOVIE_RECORDING_WARNING_PERF = 971, - ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 972, - ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 973, - ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 974, - ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 975, - ERR_NO_CHALLENGE_MODE_REWARD = 976, - ERR_CLAIMED_CHALLENGE_MODE_REWARD = 977, - ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 978, - ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 979, - ERR_TALENT_FAILED_REST_AREA = 980, - ERR_CANNOT_ABANDON_LAST_PET = 981, - ERR_TEST_CVAR_SET_SSS = 982, - ERR_QUEST_TURN_IN_FAIL_REASON = 983, - ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 984, - ERR_TALENT_GRANTED_BY_AURA = 985, - ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 986, - ERR_GLYPH_TARGET_NOT_AVAILABLE = 987, + ERR_CLIENT_ON_TRANSPORT = 152, + ERR_KILLED_BY_S = 153, + ERR_LOOT_LOCKED = 154, + ERR_LOOT_TOO_FAR = 155, + ERR_LOOT_DIDNT_KILL = 156, + ERR_LOOT_BAD_FACING = 157, + ERR_LOOT_NOTSTANDING = 158, + ERR_LOOT_STUNNED = 159, + ERR_LOOT_NO_UI = 160, + ERR_LOOT_WHILE_INVULNERABLE = 161, + ERR_NO_LOOT = 162, + ERR_QUEST_ACCEPTED_S = 163, + ERR_QUEST_COMPLETE_S = 164, + ERR_QUEST_FAILED_S = 165, + ERR_QUEST_FAILED_BAG_FULL_S = 166, + ERR_QUEST_FAILED_MAX_COUNT_S = 167, + ERR_QUEST_FAILED_LOW_LEVEL = 168, + ERR_QUEST_FAILED_MISSING_ITEMS = 169, + ERR_QUEST_FAILED_WRONG_RACE = 170, + ERR_QUEST_FAILED_NOT_ENOUGH_MONEY = 171, + ERR_QUEST_FAILED_EXPANSION = 172, + ERR_QUEST_ONLY_ONE_TIMED = 173, + ERR_QUEST_NEED_PREREQS = 174, + ERR_QUEST_NEED_PREREQS_CUSTOM = 175, + ERR_QUEST_ALREADY_ON = 176, + ERR_QUEST_ALREADY_DONE = 177, + ERR_QUEST_ALREADY_DONE_DAILY = 178, + ERR_QUEST_HAS_IN_PROGRESS = 179, + ERR_QUEST_REWARD_EXP_I = 180, + ERR_QUEST_REWARD_MONEY_S = 181, + ERR_QUEST_MUST_CHOOSE = 182, + ERR_QUEST_LOG_FULL = 183, + ERR_COMBAT_DAMAGE_SSI = 184, + ERR_INSPECT_S = 185, + ERR_CANT_USE_ITEM = 186, + ERR_CANT_USE_ITEM_IN_ARENA = 187, + ERR_CANT_USE_ITEM_IN_RATED_BATTLEGROUND = 188, + ERR_MUST_EQUIP_ITEM = 189, + ERR_PASSIVE_ABILITY = 190, + ERR_2HSKILLNOTFOUND = 191, + ERR_NO_ATTACK_TARGET = 192, + ERR_INVALID_ATTACK_TARGET = 193, + ERR_ATTACK_PVP_TARGET_WHILE_UNFLAGGED = 194, + ERR_ATTACK_STUNNED = 195, + ERR_ATTACK_PACIFIED = 196, + ERR_ATTACK_MOUNTED = 197, + ERR_ATTACK_FLEEING = 198, + ERR_ATTACK_CONFUSED = 199, + ERR_ATTACK_CHARMED = 200, + ERR_ATTACK_DEAD = 201, + ERR_ATTACK_PREVENTED_BY_MECHANIC_S = 202, + ERR_ATTACK_CHANNEL = 203, + ERR_TAXISAMENODE = 204, + ERR_TAXINOSUCHPATH = 205, + ERR_TAXIUNSPECIFIEDSERVERERROR = 206, + ERR_TAXINOTENOUGHMONEY = 207, + ERR_TAXITOOFARAWAY = 208, + ERR_TAXINOVENDORNEARBY = 209, + ERR_TAXINOTVISITED = 210, + ERR_TAXIPLAYERBUSY = 211, + ERR_TAXIPLAYERALREADYMOUNTED = 212, + ERR_TAXIPLAYERSHAPESHIFTED = 213, + ERR_TAXIPLAYERMOVING = 214, + ERR_TAXINOPATHS = 215, + ERR_TAXINOTELIGIBLE = 216, + ERR_TAXINOTSTANDING = 217, + ERR_NO_REPLY_TARGET = 218, + ERR_GENERIC_NO_TARGET = 219, + ERR_INITIATE_TRADE_S = 220, + ERR_TRADE_REQUEST_S = 221, + ERR_TRADE_BLOCKED_S = 222, + ERR_TRADE_TARGET_DEAD = 223, + ERR_TRADE_TOO_FAR = 224, + ERR_TRADE_CANCELLED = 225, + ERR_TRADE_COMPLETE = 226, + ERR_TRADE_BAG_FULL = 227, + ERR_TRADE_TARGET_BAG_FULL = 228, + ERR_TRADE_MAX_COUNT_EXCEEDED = 229, + ERR_TRADE_TARGET_MAX_COUNT_EXCEEDED = 230, + ERR_ALREADY_TRADING = 231, + ERR_MOUNT_INVALIDMOUNTEE = 232, + ERR_MOUNT_TOOFARAWAY = 233, + ERR_MOUNT_ALREADYMOUNTED = 234, + ERR_MOUNT_NOTMOUNTABLE = 235, + ERR_MOUNT_NOTYOURPET = 236, + ERR_MOUNT_OTHER = 237, + ERR_MOUNT_LOOTING = 238, + ERR_MOUNT_RACECANTMOUNT = 239, + ERR_MOUNT_SHAPESHIFTED = 240, + ERR_MOUNT_NO_FAVORITES = 241, + ERR_DISMOUNT_NOPET = 242, + ERR_DISMOUNT_NOTMOUNTED = 243, + ERR_DISMOUNT_NOTYOURPET = 244, + ERR_SPELL_FAILED_TOTEMS = 245, + ERR_SPELL_FAILED_REAGENTS = 246, + ERR_SPELL_FAILED_REAGENTS_GENERIC = 247, + ERR_CANT_TRADE_GOLD = 248, + ERR_SPELL_FAILED_EQUIPPED_ITEM = 249, + ERR_SPELL_FAILED_EQUIPPED_ITEM_CLASS_S = 250, + ERR_SPELL_FAILED_SHAPESHIFT_FORM_S = 251, + ERR_SPELL_FAILED_ANOTHER_IN_PROGRESS = 252, + ERR_BADATTACKFACING = 253, + ERR_BADATTACKPOS = 254, + ERR_CHEST_IN_USE = 255, + ERR_USE_CANT_OPEN = 256, + ERR_USE_LOCKED = 257, + ERR_DOOR_LOCKED = 258, + ERR_BUTTON_LOCKED = 259, + ERR_USE_LOCKED_WITH_ITEM_S = 260, + ERR_USE_LOCKED_WITH_SPELL_S = 261, + ERR_USE_LOCKED_WITH_SPELL_KNOWN_SI = 262, + ERR_USE_TOO_FAR = 263, + ERR_USE_BAD_ANGLE = 264, + ERR_USE_OBJECT_MOVING = 265, + ERR_USE_SPELL_FOCUS = 266, + ERR_USE_DESTROYED = 267, + ERR_SET_LOOT_FREEFORALL = 268, + ERR_SET_LOOT_ROUNDROBIN = 269, + ERR_SET_LOOT_MASTER = 270, + ERR_SET_LOOT_GROUP = 271, + ERR_SET_LOOT_THRESHOLD_S = 272, + ERR_NEW_LOOT_MASTER_S = 273, + ERR_SPECIFY_MASTER_LOOTER = 274, + ERR_LOOT_SPEC_CHANGED_S = 275, + ERR_TAME_FAILED = 276, + ERR_CHAT_WHILE_DEAD = 277, + ERR_CHAT_PLAYER_NOT_FOUND_S = 278, + ERR_NEWTAXIPATH = 279, + ERR_NO_PET = 280, + ERR_NOTYOURPET = 281, + ERR_PET_NOT_RENAMEABLE = 282, + ERR_QUEST_OBJECTIVE_COMPLETE_S = 283, + ERR_QUEST_UNKNOWN_COMPLETE = 284, + ERR_QUEST_ADD_KILL_SII = 285, + ERR_QUEST_ADD_FOUND_SII = 286, + ERR_QUEST_ADD_ITEM_SII = 287, + ERR_QUEST_ADD_PLAYER_KILL_SII = 288, + ERR_CANNOTCREATEDIRECTORY = 289, + ERR_CANNOTCREATEFILE = 290, + ERR_PLAYER_WRONG_FACTION = 291, + ERR_PLAYER_IS_NEUTRAL = 292, + ERR_BANKSLOT_FAILED_TOO_MANY = 293, + ERR_BANKSLOT_INSUFFICIENT_FUNDS = 294, + ERR_BANKSLOT_NOTBANKER = 295, + ERR_FRIEND_DB_ERROR = 296, + ERR_FRIEND_LIST_FULL = 297, + ERR_FRIEND_ADDED_S = 298, + ERR_BATTLETAG_FRIEND_ADDED_S = 299, + ERR_FRIEND_ONLINE_SS = 300, + ERR_FRIEND_OFFLINE_S = 301, + ERR_FRIEND_NOT_FOUND = 302, + ERR_FRIEND_WRONG_FACTION = 303, + ERR_FRIEND_REMOVED_S = 304, + ERR_BATTLETAG_FRIEND_REMOVED_S = 305, + ERR_FRIEND_ERROR = 306, + ERR_FRIEND_ALREADY_S = 307, + ERR_FRIEND_SELF = 308, + ERR_FRIEND_DELETED = 309, + ERR_IGNORE_FULL = 310, + ERR_IGNORE_SELF = 311, + ERR_IGNORE_NOT_FOUND = 312, + ERR_IGNORE_ALREADY_S = 313, + ERR_IGNORE_ADDED_S = 314, + ERR_IGNORE_REMOVED_S = 315, + ERR_IGNORE_AMBIGUOUS = 316, + ERR_IGNORE_DELETED = 317, + ERR_ONLY_ONE_BOLT = 318, + ERR_ONLY_ONE_AMMO = 319, + ERR_SPELL_FAILED_EQUIPPED_SPECIFIC_ITEM = 320, + ERR_WRONG_BAG_TYPE_SUBCLASS = 321, + ERR_CANT_WRAP_STACKABLE = 322, + ERR_CANT_WRAP_EQUIPPED = 323, + ERR_CANT_WRAP_WRAPPED = 324, + ERR_CANT_WRAP_BOUND = 325, + ERR_CANT_WRAP_UNIQUE = 326, + ERR_CANT_WRAP_BAGS = 327, + ERR_OUT_OF_MANA = 328, + ERR_OUT_OF_RAGE = 329, + ERR_OUT_OF_FOCUS = 330, + ERR_OUT_OF_ENERGY = 331, + ERR_OUT_OF_CHI = 332, + ERR_OUT_OF_HEALTH = 333, + ERR_OUT_OF_RUNES = 334, + ERR_OUT_OF_RUNIC_POWER = 335, + ERR_OUT_OF_SOUL_SHARDS = 336, + ERR_OUT_OF_LUNAR_POWER = 337, + ERR_OUT_OF_HOLY_POWER = 338, + ERR_OUT_OF_MAELSTROM = 339, + ERR_OUT_OF_COMBO_POINTS = 340, + ERR_OUT_OF_INSANITY = 341, + ERR_OUT_OF_ARCANE_CHARGES = 342, + ERR_OUT_OF_FURY = 343, + ERR_OUT_OF_PAIN = 344, + ERR_OUT_OF_POWER_DISPLAY = 345, + ERR_LOOT_GONE = 346, + ERR_MOUNT_FORCEDDISMOUNT = 347, + ERR_AUTOFOLLOW_TOO_FAR = 348, + ERR_UNIT_NOT_FOUND = 349, + ERR_INVALID_FOLLOW_TARGET = 350, + ERR_INVALID_FOLLOW_PVP_COMBAT = 351, + ERR_INVALID_FOLLOW_TARGET_PVP_COMBAT = 352, + ERR_INVALID_INSPECT_TARGET = 353, + ERR_GUILDEMBLEM_SUCCESS = 354, + ERR_GUILDEMBLEM_INVALID_TABARD_COLORS = 355, + ERR_GUILDEMBLEM_NOGUILD = 356, + ERR_GUILDEMBLEM_NOTGUILDMASTER = 357, + ERR_GUILDEMBLEM_NOTENOUGHMONEY = 358, + ERR_GUILDEMBLEM_INVALIDVENDOR = 359, + ERR_EMBLEMERROR_NOTABARDGEOSET = 360, + ERR_SPELL_OUT_OF_RANGE = 361, + ERR_COMMAND_NEEDS_TARGET = 362, + ERR_NOAMMO_S = 363, + ERR_TOOBUSYTOFOLLOW = 364, + ERR_DUEL_REQUESTED = 365, + ERR_DUEL_CANCELLED = 366, + ERR_DEATHBINDALREADYBOUND = 367, + ERR_DEATHBIND_SUCCESS_S = 368, + ERR_NOEMOTEWHILERUNNING = 369, + ERR_ZONE_EXPLORED = 370, + ERR_ZONE_EXPLORED_XP = 371, + ERR_INVALID_ITEM_TARGET = 372, + ERR_INVALID_QUEST_TARGET = 373, + ERR_IGNORING_YOU_S = 374, + ERR_FISH_NOT_HOOKED = 375, + ERR_FISH_ESCAPED = 376, + ERR_SPELL_FAILED_NOTUNSHEATHED = 377, + ERR_PETITION_OFFERED_S = 378, + ERR_PETITION_SIGNED = 379, + ERR_PETITION_SIGNED_S = 380, + ERR_PETITION_DECLINED_S = 381, + ERR_PETITION_ALREADY_SIGNED = 382, + ERR_PETITION_RESTRICTED_ACCOUNT_TRIAL = 383, + ERR_PETITION_ALREADY_SIGNED_OTHER = 384, + ERR_PETITION_IN_GUILD = 385, + ERR_PETITION_CREATOR = 386, + ERR_PETITION_NOT_ENOUGH_SIGNATURES = 387, + ERR_PETITION_NOT_SAME_SERVER = 388, + ERR_PETITION_FULL = 389, + ERR_PETITION_ALREADY_SIGNED_BY_S = 390, + ERR_GUILD_NAME_INVALID = 391, + ERR_SPELL_UNLEARNED_S = 392, + ERR_PET_SPELL_ROOTED = 393, + ERR_PET_SPELL_AFFECTING_COMBAT = 394, + ERR_PET_SPELL_OUT_OF_RANGE = 395, + ERR_PET_SPELL_NOT_BEHIND = 396, + ERR_PET_SPELL_TARGETS_DEAD = 397, + ERR_PET_SPELL_DEAD = 398, + ERR_PET_SPELL_NOPATH = 399, + ERR_ITEM_CANT_BE_DESTROYED = 400, + ERR_TICKET_ALREADY_EXISTS = 401, + ERR_TICKET_CREATE_ERROR = 402, + ERR_TICKET_UPDATE_ERROR = 403, + ERR_TICKET_DB_ERROR = 404, + ERR_TICKET_NO_TEXT = 405, + ERR_TICKET_TEXT_TOO_LONG = 406, + ERR_OBJECT_IS_BUSY = 407, + ERR_EXHAUSTION_WELLRESTED = 408, + ERR_EXHAUSTION_RESTED = 409, + ERR_EXHAUSTION_NORMAL = 410, + ERR_EXHAUSTION_TIRED = 411, + ERR_EXHAUSTION_EXHAUSTED = 412, + ERR_NO_ITEMS_WHILE_SHAPESHIFTED = 413, + ERR_CANT_INTERACT_SHAPESHIFTED = 414, + ERR_REALM_NOT_FOUND = 415, + ERR_MAIL_QUEST_ITEM = 416, + ERR_MAIL_BOUND_ITEM = 417, + ERR_MAIL_CONJURED_ITEM = 418, + ERR_MAIL_BAG = 419, + ERR_MAIL_TO_SELF = 420, + ERR_MAIL_TARGET_NOT_FOUND = 421, + ERR_MAIL_DATABASE_ERROR = 422, + ERR_MAIL_DELETE_ITEM_ERROR = 423, + ERR_MAIL_WRAPPED_COD = 424, + ERR_MAIL_CANT_SEND_REALM = 425, + ERR_MAIL_SENT = 426, + ERR_NOT_HAPPY_ENOUGH = 427, + ERR_USE_CANT_IMMUNE = 428, + ERR_CANT_BE_DISENCHANTED = 429, + ERR_CANT_USE_DISARMED = 430, + ERR_AUCTION_QUEST_ITEM = 431, + ERR_AUCTION_BOUND_ITEM = 432, + ERR_AUCTION_CONJURED_ITEM = 433, + ERR_AUCTION_LIMITED_DURATION_ITEM = 434, + ERR_AUCTION_WRAPPED_ITEM = 435, + ERR_AUCTION_LOOT_ITEM = 436, + ERR_AUCTION_BAG = 437, + ERR_AUCTION_EQUIPPED_BAG = 438, + ERR_AUCTION_DATABASE_ERROR = 439, + ERR_AUCTION_BID_OWN = 440, + ERR_AUCTION_BID_INCREMENT = 441, + ERR_AUCTION_HIGHER_BID = 442, + ERR_AUCTION_MIN_BID = 443, + ERR_AUCTION_REPAIR_ITEM = 444, + ERR_AUCTION_USED_CHARGES = 445, + ERR_AUCTION_ALREADY_BID = 446, + ERR_AUCTION_STARTED = 447, + ERR_AUCTION_REMOVED = 448, + ERR_AUCTION_OUTBID_S = 449, + ERR_AUCTION_WON_S = 450, + ERR_AUCTION_SOLD_S = 451, + ERR_AUCTION_EXPIRED_S = 452, + ERR_AUCTION_REMOVED_S = 453, + ERR_AUCTION_BID_PLACED = 454, + ERR_LOGOUT_FAILED = 455, + ERR_QUEST_PUSH_SUCCESS_S = 456, + ERR_QUEST_PUSH_INVALID_S = 457, + ERR_QUEST_PUSH_ACCEPTED_S = 458, + ERR_QUEST_PUSH_DECLINED_S = 459, + ERR_QUEST_PUSH_BUSY_S = 460, + ERR_QUEST_PUSH_DEAD_S = 461, + ERR_QUEST_PUSH_LOG_FULL_S = 462, + ERR_QUEST_PUSH_ONQUEST_S = 463, + ERR_QUEST_PUSH_ALREADY_DONE_S = 464, + ERR_QUEST_PUSH_NOT_DAILY_S = 465, + ERR_QUEST_PUSH_TIMER_EXPIRED_S = 466, + ERR_QUEST_PUSH_NOT_IN_PARTY_S = 467, + ERR_QUEST_PUSH_DIFFERENT_SERVER_DAILY_S = 468, + ERR_QUEST_PUSH_NOT_ALLOWED_S = 469, + ERR_RAID_GROUP_LOWLEVEL = 470, + ERR_RAID_GROUP_ONLY = 471, + ERR_RAID_GROUP_FULL = 472, + ERR_RAID_GROUP_REQUIREMENTS_UNMATCH = 473, + ERR_CORPSE_IS_NOT_IN_INSTANCE = 474, + ERR_PVP_KILL_HONORABLE = 475, + ERR_PVP_KILL_DISHONORABLE = 476, + ERR_SPELL_FAILED_ALREADY_AT_FULL_HEALTH = 477, + ERR_SPELL_FAILED_ALREADY_AT_FULL_MANA = 478, + ERR_SPELL_FAILED_ALREADY_AT_FULL_POWER_S = 479, + ERR_AUTOLOOT_MONEY_S = 480, + ERR_GENERIC_STUNNED = 481, + ERR_TARGET_STUNNED = 482, + ERR_MUST_REPAIR_DURABILITY = 483, + ERR_RAID_YOU_JOINED = 484, + ERR_RAID_YOU_LEFT = 485, + ERR_INSTANCE_GROUP_JOINED_WITH_PARTY = 486, + ERR_INSTANCE_GROUP_JOINED_WITH_RAID = 487, + ERR_RAID_MEMBER_ADDED_S = 488, + ERR_RAID_MEMBER_REMOVED_S = 489, + ERR_INSTANCE_GROUP_ADDED_S = 490, + ERR_INSTANCE_GROUP_REMOVED_S = 491, + ERR_CLICK_ON_ITEM_TO_FEED = 492, + ERR_TOO_MANY_CHAT_CHANNELS = 493, + ERR_LOOT_ROLL_PENDING = 494, + ERR_LOOT_PLAYER_NOT_FOUND = 495, + ERR_NOT_IN_RAID = 496, + ERR_LOGGING_OUT = 497, + ERR_TARGET_LOGGING_OUT = 498, + ERR_NOT_WHILE_MOUNTED = 499, + ERR_NOT_WHILE_SHAPESHIFTED = 500, + ERR_NOT_IN_COMBAT = 501, + ERR_NOT_WHILE_DISARMED = 502, + ERR_PET_BROKEN = 503, + ERR_TALENT_WIPE_ERROR = 504, + ERR_SPEC_WIPE_ERROR = 505, + ERR_GLYPH_WIPE_ERROR = 506, + ERR_PET_SPEC_WIPE_ERROR = 507, + ERR_FEIGN_DEATH_RESISTED = 508, + ERR_MEETING_STONE_IN_QUEUE_S = 509, + ERR_MEETING_STONE_LEFT_QUEUE_S = 510, + ERR_MEETING_STONE_OTHER_MEMBER_LEFT = 511, + ERR_MEETING_STONE_PARTY_KICKED_FROM_QUEUE = 512, + ERR_MEETING_STONE_MEMBER_STILL_IN_QUEUE = 513, + ERR_MEETING_STONE_SUCCESS = 514, + ERR_MEETING_STONE_IN_PROGRESS = 515, + ERR_MEETING_STONE_MEMBER_ADDED_S = 516, + ERR_MEETING_STONE_GROUP_FULL = 517, + ERR_MEETING_STONE_NOT_LEADER = 518, + ERR_MEETING_STONE_INVALID_LEVEL = 519, + ERR_MEETING_STONE_TARGET_NOT_IN_PARTY = 520, + ERR_MEETING_STONE_TARGET_INVALID_LEVEL = 521, + ERR_MEETING_STONE_MUST_BE_LEADER = 522, + ERR_MEETING_STONE_NO_RAID_GROUP = 523, + ERR_MEETING_STONE_NEED_PARTY = 524, + ERR_MEETING_STONE_NOT_FOUND = 525, + ERR_GUILDEMBLEM_SAME = 526, + ERR_EQUIP_TRADE_ITEM = 527, + ERR_PVP_TOGGLE_ON = 528, + ERR_PVP_TOGGLE_OFF = 529, + ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS = 530, + ERR_GROUP_JOIN_BATTLEGROUND_DEAD = 531, + ERR_GROUP_JOIN_BATTLEGROUND_S = 532, + ERR_GROUP_JOIN_BATTLEGROUND_FAIL = 533, + ERR_GROUP_JOIN_BATTLEGROUND_TOO_MANY = 534, + ERR_SOLO_JOIN_BATTLEGROUND_S = 535, + ERR_JOIN_SINGLE_SCENARIO_S = 536, + ERR_BATTLEGROUND_TOO_MANY_QUEUES = 537, + ERR_BATTLEGROUND_CANNOT_QUEUE_FOR_RATED = 538, + ERR_BATTLEDGROUND_QUEUED_FOR_RATED = 539, + ERR_BATTLEGROUND_TEAM_LEFT_QUEUE = 540, + ERR_BATTLEGROUND_NOT_IN_BATTLEGROUND = 541, + ERR_ALREADY_IN_ARENA_TEAM_S = 542, + ERR_INVALID_PROMOTION_CODE = 543, + ERR_BG_PLAYER_JOINED_SS = 544, + ERR_BG_PLAYER_LEFT_S = 545, + ERR_RESTRICTED_ACCOUNT = 546, + ERR_RESTRICTED_ACCOUNT_TRIAL = 547, + ERR_PLAY_TIME_EXCEEDED = 548, + ERR_APPROACHING_PARTIAL_PLAY_TIME = 549, + ERR_APPROACHING_PARTIAL_PLAY_TIME_2 = 550, + ERR_APPROACHING_NO_PLAY_TIME = 551, + ERR_APPROACHING_NO_PLAY_TIME_2 = 552, + ERR_UNHEALTHY_TIME = 553, + ERR_CHAT_RESTRICTED_TRIAL = 554, + ERR_CHAT_THROTTLED = 555, + ERR_MAIL_REACHED_CAP = 556, + ERR_INVALID_RAID_TARGET = 557, + ERR_RAID_LEADER_READY_CHECK_START_S = 558, + ERR_READY_CHECK_IN_PROGRESS = 559, + ERR_READY_CHECK_THROTTLED = 560, + ERR_DUNGEON_DIFFICULTY_FAILED = 561, + ERR_DUNGEON_DIFFICULTY_CHANGED_S = 562, + ERR_TRADE_WRONG_REALM = 563, + ERR_TRADE_NOT_ON_TAPLIST = 564, + ERR_CHAT_PLAYER_AMBIGUOUS_S = 565, + ERR_LOOT_CANT_LOOT_THAT_NOW = 566, + ERR_LOOT_MASTER_INV_FULL = 567, + ERR_LOOT_MASTER_UNIQUE_ITEM = 568, + ERR_LOOT_MASTER_OTHER = 569, + ERR_FILTERING_YOU_S = 570, + ERR_USE_PREVENTED_BY_MECHANIC_S = 571, + ERR_ITEM_UNIQUE_EQUIPPABLE = 572, + ERR_LFG_LEADER_IS_LFM_S = 573, + ERR_LFG_PENDING = 574, + ERR_CANT_SPEAK_LANGAGE = 575, + ERR_VENDOR_MISSING_TURNINS = 576, + ERR_BATTLEGROUND_NOT_IN_TEAM = 577, + ERR_NOT_IN_BATTLEGROUND = 578, + ERR_NOT_ENOUGH_HONOR_POINTS = 579, + ERR_NOT_ENOUGH_ARENA_POINTS = 580, + ERR_SOCKETING_REQUIRES_META_GEM = 581, + ERR_SOCKETING_META_GEM_ONLY_IN_METASLOT = 582, + ERR_SOCKETING_REQUIRES_HYDRAULIC_GEM = 583, + ERR_SOCKETING_HYDRAULIC_GEM_ONLY_IN_HYDRAULICSLOT = 584, + ERR_SOCKETING_REQUIRES_COGWHEEL_GEM = 585, + ERR_SOCKETING_COGWHEEL_GEM_ONLY_IN_COGWHEELSLOT = 586, + ERR_SOCKETING_ITEM_TOO_LOW_LEVEL = 587, + ERR_ITEM_MAX_COUNT_SOCKETED = 588, + ERR_SYSTEM_DISABLED = 589, + ERR_QUEST_FAILED_TOO_MANY_DAILY_QUESTS_I = 590, + ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED = 591, + ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED = 592, + ERR_USER_SQUELCHED = 593, + ERR_TOO_MUCH_GOLD = 594, + ERR_NOT_BARBER_SITTING = 595, + ERR_QUEST_FAILED_CAIS = 596, + ERR_INVITE_RESTRICTED_TRIAL = 597, + ERR_VOICE_IGNORE_FULL = 598, + ERR_VOICE_IGNORE_SELF = 599, + ERR_VOICE_IGNORE_NOT_FOUND = 600, + ERR_VOICE_IGNORE_ALREADY_S = 601, + ERR_VOICE_IGNORE_ADDED_S = 602, + ERR_VOICE_IGNORE_REMOVED_S = 603, + ERR_VOICE_IGNORE_AMBIGUOUS = 604, + ERR_VOICE_IGNORE_DELETED = 605, + ERR_UNKNOWN_MACRO_OPTION_S = 606, + ERR_NOT_DURING_ARENA_MATCH = 607, + ERR_PLAYER_SILENCED = 608, + ERR_PLAYER_UNSILENCED = 609, + ERR_COMSAT_DISCONNECT = 610, + ERR_COMSAT_RECONNECT_ATTEMPT = 611, + ERR_COMSAT_CONNECT_FAIL = 612, + ERR_MAIL_INVALID_ATTACHMENT_SLOT = 613, + ERR_MAIL_TOO_MANY_ATTACHMENTS = 614, + ERR_MAIL_INVALID_ATTACHMENT = 615, + ERR_MAIL_ATTACHMENT_EXPIRED = 616, + ERR_VOICE_CHAT_PARENTAL_DISABLE_MIC = 617, + ERR_PROFANE_CHAT_NAME = 618, + ERR_PLAYER_SILENCED_ECHO = 619, + ERR_PLAYER_UNSILENCED_ECHO = 620, + ERR_LOOT_CANT_LOOT_THAT = 621, + ERR_ARENA_EXPIRED_CAIS = 622, + ERR_GROUP_ACTION_THROTTLED = 623, + ERR_ALREADY_PICKPOCKETED = 624, + ERR_NAME_INVALID = 625, + ERR_NAME_NO_NAME = 626, + ERR_NAME_TOO_SHORT = 627, + ERR_NAME_TOO_LONG = 628, + ERR_NAME_MIXED_LANGUAGES = 629, + ERR_NAME_PROFANE = 630, + ERR_NAME_RESERVED = 631, + ERR_NAME_THREE_CONSECUTIVE = 632, + ERR_NAME_INVALID_SPACE = 633, + ERR_NAME_CONSECUTIVE_SPACES = 634, + ERR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS = 635, + ERR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 636, + ERR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 637, + ERR_REFER_A_FRIEND_NOT_REFERRED_BY = 638, + ERR_REFER_A_FRIEND_TARGET_TOO_HIGH = 639, + ERR_REFER_A_FRIEND_INSUFFICIENT_GRANTABLE_LEVELS = 640, + ERR_REFER_A_FRIEND_TOO_FAR = 641, + ERR_REFER_A_FRIEND_DIFFERENT_FACTION = 642, + ERR_REFER_A_FRIEND_NOT_NOW = 643, + ERR_REFER_A_FRIEND_GRANT_LEVEL_MAX_I = 644, + ERR_REFER_A_FRIEND_SUMMON_LEVEL_MAX_I = 645, + ERR_REFER_A_FRIEND_SUMMON_COOLDOWN = 646, + ERR_REFER_A_FRIEND_SUMMON_OFFLINE_S = 647, + ERR_REFER_A_FRIEND_INSUF_EXPAN_LVL = 648, + ERR_REFER_A_FRIEND_NOT_IN_LFG = 649, + ERR_REFER_A_FRIEND_NO_XREALM = 650, + ERR_REFER_A_FRIEND_MAP_INCOMING_TRANSFER_NOT_ALLOWED = 651, + ERR_NOT_SAME_ACCOUNT = 652, + ERR_BAD_ON_USE_ENCHANT = 653, + ERR_TRADE_SELF = 654, + ERR_TOO_MANY_SOCKETS = 655, + ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 656, + ERR_TRADE_TARGET_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS = 657, + ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS = 658, + ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS = 659, + ERR_SHAPESHIFT_FORM_CANNOT_EQUIP = 660, + ERR_ITEM_INVENTORY_FULL_SATCHEL = 661, + ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED = 662, + ERR_SCALING_STAT_ITEM_LEVEL_TOO_LOW = 663, + ERR_PURCHASE_LEVEL_TOO_LOW = 664, + ERR_GROUP_SWAP_FAILED = 665, + ERR_INVITE_IN_COMBAT = 666, + ERR_INVALID_GLYPH_SLOT = 667, + ERR_GENERIC_NO_VALID_TARGETS = 668, + ERR_CALENDAR_EVENT_ALERT_S = 669, + ERR_PET_LEARN_SPELL_S = 670, + ERR_PET_LEARN_ABILITY_S = 671, + ERR_PET_SPELL_UNLEARNED_S = 672, + ERR_INVITE_UNKNOWN_REALM = 673, + ERR_INVITE_NO_PARTY_SERVER = 674, + ERR_INVITE_PARTY_BUSY = 675, + ERR_PARTY_TARGET_AMBIGUOUS = 676, + ERR_PARTY_LFG_INVITE_RAID_LOCKED = 677, + ERR_PARTY_LFG_BOOT_LIMIT = 678, + ERR_PARTY_LFG_BOOT_COOLDOWN_S = 679, + ERR_PARTY_LFG_BOOT_NOT_ELIGIBLE_S = 680, + ERR_PARTY_LFG_BOOT_INPATIENT_TIMER_S = 681, + ERR_PARTY_LFG_BOOT_IN_PROGRESS = 682, + ERR_PARTY_LFG_BOOT_TOO_FEW_PLAYERS = 683, + ERR_PARTY_LFG_BOOT_VOTE_SUCCEEDED = 684, + ERR_PARTY_LFG_BOOT_VOTE_FAILED = 685, + ERR_PARTY_LFG_BOOT_IN_COMBAT = 686, + ERR_PARTY_LFG_BOOT_DUNGEON_COMPLETE = 687, + ERR_PARTY_LFG_BOOT_LOOT_ROLLS = 688, + ERR_PARTY_LFG_BOOT_VOTE_REGISTERED = 689, + ERR_PARTY_PRIVATE_GROUP_ONLY = 690, + ERR_PARTY_LFG_TELEPORT_IN_COMBAT = 691, + ERR_RAID_DISALLOWED_BY_LEVEL = 692, + ERR_RAID_DISALLOWED_BY_CROSS_REALM = 693, + ERR_PARTY_ROLE_NOT_AVAILABLE = 694, + ERR_JOIN_LFG_OBJECT_FAILED = 695, + ERR_LFG_REMOVED_LEVELUP = 696, + ERR_LFG_REMOVED_XP_TOGGLE = 697, + ERR_LFG_REMOVED_FACTION_CHANGE = 698, + ERR_BATTLEGROUND_INFO_THROTTLED = 699, + ERR_BATTLEGROUND_ALREADY_IN = 700, + ERR_ARENA_TEAM_CHANGE_FAILED_QUEUED = 701, + ERR_ARENA_TEAM_PERMISSIONS = 702, + ERR_NOT_WHILE_FALLING = 703, + ERR_NOT_WHILE_MOVING = 704, + ERR_NOT_WHILE_FATIGUED = 705, + ERR_MAX_SOCKETS = 706, + ERR_MULTI_CAST_ACTION_TOTEM_S = 707, + ERR_BATTLEGROUND_JOIN_LEVELUP = 708, + ERR_REMOVE_FROM_PVP_QUEUE_XP_GAIN = 709, + ERR_BATTLEGROUND_JOIN_XP_GAIN = 710, + ERR_BATTLEGROUND_JOIN_MERCENARY = 711, + ERR_BATTLEGROUND_JOIN_TOO_MANY_HEALERS = 712, + ERR_BATTLEGROUND_JOIN_TOO_MANY_TANKS = 713, + ERR_BATTLEGROUND_JOIN_TOO_MANY_DAMAGE = 714, + ERR_RAID_DIFFICULTY_FAILED = 715, + ERR_RAID_DIFFICULTY_CHANGED_S = 716, + ERR_LEGACY_RAID_DIFFICULTY_CHANGED_S = 717, + ERR_RAID_LOCKOUT_CHANGED_S = 718, + ERR_RAID_CONVERTED_TO_PARTY = 719, + ERR_PARTY_CONVERTED_TO_RAID = 720, + ERR_PLAYER_DIFFICULTY_CHANGED_S = 721, + ERR_GMRESPONSE_DB_ERROR = 722, + ERR_BATTLEGROUND_JOIN_RANGE_INDEX = 723, + ERR_ARENA_JOIN_RANGE_INDEX = 724, + ERR_REMOVE_FROM_PVP_QUEUE_FACTION_CHANGE = 725, + ERR_BATTLEGROUND_JOIN_FAILED = 726, + ERR_BATTLEGROUND_JOIN_NO_VALID_SPEC_FOR_ROLE = 727, + ERR_BATTLEGROUND_JOIN_RESPEC = 728, + ERR_BATTLEGROUND_INVITATION_DECLINED = 729, + ERR_BATTLEGROUND_JOIN_TIMED_OUT = 730, + ERR_BATTLEGROUND_DUPE_QUEUE = 731, + ERR_BATTLEGROUND_JOIN_MUST_COMPLETE_QUEST = 732, + ERR_IN_BATTLEGROUND_RESPEC = 733, + ERR_MAIL_LIMITED_DURATION_ITEM = 734, + ERR_YELL_RESTRICTED_TRIAL = 735, + ERR_CHAT_RAID_RESTRICTED_TRIAL = 736, + ERR_LFG_ROLE_CHECK_FAILED = 737, + ERR_LFG_ROLE_CHECK_FAILED_TIMEOUT = 738, + ERR_LFG_ROLE_CHECK_FAILED_NOT_VIABLE = 739, + ERR_LFG_READY_CHECK_FAILED = 740, + ERR_LFG_READY_CHECK_FAILED_TIMEOUT = 741, + ERR_LFG_GROUP_FULL = 742, + ERR_LFG_NO_LFG_OBJECT = 743, + ERR_LFG_NO_SLOTS_PLAYER = 744, + ERR_LFG_NO_SLOTS_PARTY = 745, + ERR_LFG_NO_SPEC = 746, + ERR_LFG_MISMATCHED_SLOTS = 747, + ERR_LFG_MISMATCHED_SLOTS_LOCAL_XREALM = 748, + ERR_LFG_PARTY_PLAYERS_FROM_DIFFERENT_REALMS = 749, + ERR_LFG_MEMBERS_NOT_PRESENT = 750, + ERR_LFG_GET_INFO_TIMEOUT = 751, + ERR_LFG_INVALID_SLOT = 752, + ERR_LFG_DESERTER_PLAYER = 753, + ERR_LFG_DESERTER_PARTY = 754, + ERR_LFG_DEAD = 755, + ERR_LFG_RANDOM_COOLDOWN_PLAYER = 756, + ERR_LFG_RANDOM_COOLDOWN_PARTY = 757, + ERR_LFG_TOO_MANY_MEMBERS = 758, + ERR_LFG_TOO_FEW_MEMBERS = 759, + ERR_LFG_PROPOSAL_FAILED = 760, + ERR_LFG_PROPOSAL_DECLINED_SELF = 761, + ERR_LFG_PROPOSAL_DECLINED_PARTY = 762, + ERR_LFG_NO_SLOTS_SELECTED = 763, + ERR_LFG_NO_ROLES_SELECTED = 764, + ERR_LFG_ROLE_CHECK_INITIATED = 765, + ERR_LFG_READY_CHECK_INITIATED = 766, + ERR_LFG_PLAYER_DECLINED_ROLE_CHECK = 767, + ERR_LFG_PLAYER_DECLINED_READY_CHECK = 768, + ERR_LFG_JOINED_QUEUE = 769, + ERR_LFG_JOINED_FLEX_QUEUE = 770, + ERR_LFG_JOINED_RF_QUEUE = 771, + ERR_LFG_JOINED_SCENARIO_QUEUE = 772, + ERR_LFG_JOINED_WORLD_PVP_QUEUE = 773, + ERR_LFG_JOINED_BATTLEFIELD_QUEUE = 774, + ERR_LFG_JOINED_LIST = 775, + ERR_LFG_LEFT_QUEUE = 776, + ERR_LFG_LEFT_LIST = 777, + ERR_LFG_ROLE_CHECK_ABORTED = 778, + ERR_LFG_READY_CHECK_ABORTED = 779, + ERR_LFG_CANT_USE_BATTLEGROUND = 780, + ERR_LFG_CANT_USE_DUNGEONS = 781, + ERR_LFG_REASON_TOO_MANY_LFG = 782, + ERR_INVALID_TELEPORT_LOCATION = 783, + ERR_TOO_FAR_TO_INTERACT = 784, + ERR_BATTLEGROUND_PLAYERS_FROM_DIFFERENT_REALMS = 785, + ERR_DIFFICULTY_CHANGE_COOLDOWN_S = 786, + ERR_DIFFICULTY_CHANGE_COMBAT_COOLDOWN_S = 787, + ERR_DIFFICULTY_CHANGE_WORLDSTATE = 788, + ERR_DIFFICULTY_CHANGE_ENCOUNTER = 789, + ERR_DIFFICULTY_CHANGE_COMBAT = 790, + ERR_DIFFICULTY_CHANGE_PLAYER_BUSY = 791, + ERR_DIFFICULTY_CHANGE_ALREADY_STARTED = 792, + ERR_DIFFICULTY_CHANGE_OTHER_HEROIC_S = 793, + ERR_DIFFICULTY_CHANGE_HEROIC_INSTANCE_ALREADY_RUNNING = 794, + ERR_ARENA_TEAM_PARTY_SIZE = 795, + ERR_QUEST_FORCE_REMOVED_S = 796, + ERR_ATTACK_NO_ACTIONS = 797, + ERR_IN_RANDOM_BG = 798, + ERR_IN_NON_RANDOM_BG = 799, + ERR_AUCTION_ENOUGH_ITEMS = 800, + ERR_BN_FRIEND_SELF = 801, + ERR_BN_FRIEND_ALREADY = 802, + ERR_BN_FRIEND_BLOCKED = 803, + ERR_BN_FRIEND_LIST_FULL = 804, + ERR_BN_FRIEND_REQUEST_SENT = 805, + ERR_BN_BROADCAST_THROTTLE = 806, + ERR_BG_DEVELOPER_ONLY = 807, + ERR_CURRENCY_SPELL_SLOT_MISMATCH = 808, + ERR_CURRENCY_NOT_TRADABLE = 809, + ERR_REQUIRES_EXPANSION_S = 810, + ERR_QUEST_FAILED_SPELL = 811, + ERR_TALENT_FAILED_NOT_ENOUGH_TALENTS_IN_PRIMARY_TREE = 812, + ERR_TALENT_FAILED_NO_PRIMARY_TREE_SELECTED = 813, + ERR_TALENT_FAILED_CANT_REMOVE_TALENT = 814, + ERR_TALENT_FAILED_UNKNOWN = 815, + ERR_WARGAME_REQUEST_FAILURE = 816, + ERR_RANK_REQUIRES_AUTHENTICATOR = 817, + ERR_GUILD_BANK_VOUCHER_FAILED = 818, + ERR_WARGAME_REQUEST_SENT = 819, + ERR_REQUIRES_ACHIEVEMENT_I = 820, + ERR_REFUND_RESULT_EXCEED_MAX_CURRENCY = 821, + ERR_CANT_BUY_QUANTITY = 822, + ERR_ITEM_IS_BATTLE_PAY_LOCKED = 823, + ERR_PARTY_ALREADY_IN_BATTLEGROUND_QUEUE = 824, + ERR_PARTY_CONFIRMING_BATTLEGROUND_QUEUE = 825, + ERR_BATTLEFIELD_TEAM_PARTY_SIZE = 826, + ERR_INSUFF_TRACKED_CURRENCY_IS = 827, + ERR_NOT_ON_TOURNAMENT_REALM = 828, + ERR_GUILD_TRIAL_ACCOUNT_TRIAL = 829, + ERR_GUILD_TRIAL_ACCOUNT_VETERAN = 830, + ERR_GUILD_UNDELETABLE_DUE_TO_LEVEL = 831, + ERR_CANT_DO_THAT_IN_A_GROUP = 832, + ERR_GUILD_LEADER_REPLACED = 833, + ERR_TRANSMOGRIFY_CANT_EQUIP = 834, + ERR_TRANSMOGRIFY_INVALID_ITEM_TYPE = 835, + ERR_TRANSMOGRIFY_NOT_SOULBOUND = 836, + ERR_TRANSMOGRIFY_INVALID_SOURCE = 837, + ERR_TRANSMOGRIFY_INVALID_DESTINATION = 838, + ERR_TRANSMOGRIFY_MISMATCH = 839, + ERR_TRANSMOGRIFY_LEGENDARY = 840, + ERR_TRANSMOGRIFY_SAME_ITEM = 841, + ERR_TRANSMOGRIFY_SAME_APPEARANCE = 842, + ERR_TRANSMOGRIFY_NOT_EQUIPPED = 843, + ERR_VOID_DEPOSIT_FULL = 844, + ERR_VOID_WITHDRAW_FULL = 845, + ERR_VOID_STORAGE_WRAPPED = 846, + ERR_VOID_STORAGE_STACKABLE = 847, + ERR_VOID_STORAGE_UNBOUND = 848, + ERR_VOID_STORAGE_REPAIR = 849, + ERR_VOID_STORAGE_CHARGES = 850, + ERR_VOID_STORAGE_QUEST = 851, + ERR_VOID_STORAGE_CONJURED = 852, + ERR_VOID_STORAGE_MAIL = 853, + ERR_VOID_STORAGE_BAG = 854, + ERR_VOID_TRANSFER_STORAGE_FULL = 855, + ERR_VOID_TRANSFER_INV_FULL = 856, + ERR_VOID_TRANSFER_INTERNAL_ERROR = 857, + ERR_VOID_TRANSFER_ITEM_INVALID = 858, + ERR_DIFFICULTY_DISABLED_IN_LFG = 859, + ERR_VOID_STORAGE_UNIQUE = 860, + ERR_VOID_STORAGE_LOOT = 861, + ERR_VOID_STORAGE_HOLIDAY = 862, + ERR_VOID_STORAGE_DURATION = 863, + ERR_VOID_STORAGE_LOAD_FAILED = 864, + ERR_VOID_STORAGE_INVALID_ITEM = 865, + ERR_PARENTAL_CONTROLS_CHAT_MUTED = 866, + ERR_SOR_START_EXPERIENCE_INCOMPLETE = 867, + ERR_SOR_INVALID_EMAIL = 868, + ERR_SOR_INVALID_COMMENT = 869, + ERR_CHALLENGE_MODE_RESET_COOLDOWN_S = 870, + ERR_CHALLENGE_MODE_RESET_KEYSTONE = 871, + ERR_PET_JOURNAL_ALREADY_IN_LOADOUT = 872, + ERR_REPORT_SUBMITTED_SUCCESSFULLY = 873, + ERR_REPORT_SUBMISSION_FAILED = 874, + ERR_SUGGESTION_SUBMITTED_SUCCESSFULLY = 875, + ERR_BUG_SUBMITTED_SUCCESSFULLY = 876, + ERR_CHALLENGE_MODE_ENABLED = 877, + ERR_CHALLENGE_MODE_DISABLED = 878, + ERR_PETBATTLE_CREATE_FAILED = 879, + ERR_PETBATTLE_NOT_HERE = 880, + ERR_PETBATTLE_NOT_HERE_ON_TRANSPORT = 881, + ERR_PETBATTLE_NOT_HERE_UNEVEN_GROUND = 882, + ERR_PETBATTLE_NOT_HERE_OBSTRUCTED = 883, + ERR_PETBATTLE_NOT_WHILE_IN_COMBAT = 884, + ERR_PETBATTLE_NOT_WHILE_DEAD = 885, + ERR_PETBATTLE_NOT_WHILE_FLYING = 886, + ERR_PETBATTLE_TARGET_INVALID = 887, + ERR_PETBATTLE_TARGET_OUT_OF_RANGE = 888, + ERR_PETBATTLE_TARGET_NOT_CAPTURABLE = 889, + ERR_PETBATTLE_NOT_A_TRAINER = 890, + ERR_PETBATTLE_DECLINED = 891, + ERR_PETBATTLE_IN_BATTLE = 892, + ERR_PETBATTLE_INVALID_LOADOUT = 893, + ERR_PETBATTLE_ALL_PETS_DEAD = 894, + ERR_PETBATTLE_NO_PETS_IN_SLOTS = 895, + ERR_PETBATTLE_NO_ACCOUNT_LOCK = 896, + ERR_PETBATTLE_WILD_PET_TAPPED = 897, + ERR_PETBATTLE_RESTRICTED_ACCOUNT = 898, + ERR_PETBATTLE_OPPONENT_NOT_AVAILABLE = 899, + ERR_PETBATTLE_NOT_WHILE_IN_MATCHED_BATTLE = 900, + ERR_CANT_HAVE_MORE_PETS_OF_THAT_TYPE = 901, + ERR_CANT_HAVE_MORE_PETS = 902, + ERR_PVP_MAP_NOT_FOUND = 903, + ERR_PVP_MAP_NOT_SET = 904, + ERR_PETBATTLE_QUEUE_QUEUED = 905, + ERR_PETBATTLE_QUEUE_ALREADY_QUEUED = 906, + ERR_PETBATTLE_QUEUE_JOIN_FAILED = 907, + ERR_PETBATTLE_QUEUE_JOURNAL_LOCK = 908, + ERR_PETBATTLE_QUEUE_REMOVED = 909, + ERR_PETBATTLE_QUEUE_PROPOSAL_DECLINED = 910, + ERR_PETBATTLE_QUEUE_PROPOSAL_TIMEOUT = 911, + ERR_PETBATTLE_QUEUE_OPPONENT_DECLINED = 912, + ERR_PETBATTLE_QUEUE_REQUEUED_INTERNAL = 913, + ERR_PETBATTLE_QUEUE_REQUEUED_REMOVED = 914, + ERR_PETBATTLE_QUEUE_SLOT_LOCKED = 915, + ERR_PETBATTLE_QUEUE_SLOT_EMPTY = 916, + ERR_PETBATTLE_QUEUE_SLOT_NO_TRACKER = 917, + ERR_PETBATTLE_QUEUE_SLOT_NO_SPECIES = 918, + ERR_PETBATTLE_QUEUE_SLOT_CANT_BATTLE = 919, + ERR_PETBATTLE_QUEUE_SLOT_REVOKED = 920, + ERR_PETBATTLE_QUEUE_SLOT_DEAD = 921, + ERR_PETBATTLE_QUEUE_SLOT_NO_PET = 922, + ERR_PETBATTLE_QUEUE_NOT_WHILE_NEUTRAL = 923, + ERR_PETBATTLE_GAME_TIME_LIMIT_WARNING = 924, + ERR_PETBATTLE_GAME_ROUNDS_LIMIT_WARNING = 925, + ERR_HAS_RESTRICTION = 926, + ERR_ITEM_UPGRADE_ITEM_TOO_LOW_LEVEL = 927, + ERR_ITEM_UPGRADE_NO_PATH = 928, + ERR_ITEM_UPGRADE_NO_MORE_UPGRADES = 929, + ERR_BONUS_ROLL_EMPTY = 930, + ERR_CHALLENGE_MODE_FULL = 931, + ERR_CHALLENGE_MODE_IN_PROGRESS = 932, + ERR_CHALLENGE_MODE_INCORRECT_KEYSTONE = 933, + ERR_BATTLETAG_FRIEND_NOT_FOUND = 934, + ERR_BATTLETAG_FRIEND_NOT_VALID = 935, + ERR_BATTLETAG_FRIEND_NOT_ALLOWED = 936, + ERR_BATTLETAG_FRIEND_THROTTLED = 937, + ERR_BATTLETAG_FRIEND_SUCCESS = 938, + ERR_PET_TOO_HIGH_LEVEL_TO_UNCAGE = 939, + ERR_PETBATTLE_INTERNAL = 940, + ERR_CANT_CAGE_PET_YET = 941, + ERR_NO_LOOT_IN_CHALLENGE_MODE = 942, + ERR_QUEST_PET_BATTLE_VICTORIES_PVP_II = 943, + ERR_ROLE_CHECK_ALREADY_IN_PROGRESS = 944, + ERR_RECRUIT_A_FRIEND_ACCOUNT_LIMIT = 945, + ERR_RECRUIT_A_FRIEND_FAILED = 946, + ERR_SET_LOOT_PERSONAL = 947, + ERR_SET_LOOT_METHOD_FAILED_COMBAT = 948, + ERR_REAGENT_BANK_FULL = 949, + ERR_REAGENT_BANK_LOCKED = 950, + ERR_GARRISON_BUILDING_EXISTS = 951, + ERR_GARRISON_INVALID_PLOT = 952, + ERR_GARRISON_INVALID_BUILDINGID = 953, + ERR_GARRISON_INVALID_PLOT_BUILDING = 954, + ERR_GARRISON_REQUIRES_BLUEPRINT = 955, + ERR_GARRISON_NOT_ENOUGH_CURRENCY = 956, + ERR_GARRISON_NOT_ENOUGH_GOLD = 957, + ERR_GARRISON_COMPLETE_MISSION_WRONG_FOLLOWER_TYPE = 958, + ERR_ALREADY_USING_LFG_LIST = 959, + ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL = 960, + ERR_TOY_USE_LIMIT_REACHED = 961, + ERR_TOY_ALREADY_KNOWN = 962, + ERR_TRANSMOG_SET_ALREADY_KNOWN = 963, + ERR_NOT_ENOUGH_CURRENCY = 964, + ERR_SPEC_IS_DISABLED = 965, + ERR_FEATURE_RESTRICTED_TRIAL = 966, + ERR_CANT_BE_OBLITERATED = 967, + ERR_CANT_BE_SCRAPPED = 968, + ERR_ARTIFACT_RELIC_DOES_NOT_MATCH_ARTIFACT = 969, + ERR_MUST_EQUIP_ARTIFACT = 970, + ERR_CANT_DO_THAT_RIGHT_NOW = 971, + ERR_AFFECTING_COMBAT = 972, + ERR_EQUIPMENT_MANAGER_COMBAT_SWAP_S = 973, + ERR_EQUIPMENT_MANAGER_BAGS_FULL = 974, + ERR_EQUIPMENT_MANAGER_MISSING_ITEM_S = 975, + ERR_MOVIE_RECORDING_WARNING_PERF = 976, + ERR_MOVIE_RECORDING_WARNING_DISK_FULL = 977, + ERR_MOVIE_RECORDING_WARNING_NO_MOVIE = 978, + ERR_MOVIE_RECORDING_WARNING_REQUIREMENTS = 979, + ERR_MOVIE_RECORDING_WARNING_COMPRESSING = 980, + ERR_NO_CHALLENGE_MODE_REWARD = 981, + ERR_CLAIMED_CHALLENGE_MODE_REWARD = 982, + ERR_CHALLENGE_MODE_PERIOD_RESET_SS = 983, + ERR_CANT_DO_THAT_CHALLENGE_MODE_ACTIVE = 984, + ERR_TALENT_FAILED_REST_AREA = 985, + ERR_CANNOT_ABANDON_LAST_PET = 986, + ERR_TEST_CVAR_SET_SSS = 987, + ERR_QUEST_TURN_IN_FAIL_REASON = 988, + ERR_CLAIMED_CHALLENGE_MODE_REWARD_OLD = 989, + ERR_TALENT_GRANTED_BY_AURA = 990, + ERR_CHALLENGE_MODE_ALREADY_COMPLETE = 991, + ERR_GLYPH_TARGET_NOT_AVAILABLE = 992, + ERR_PVP_WARMODE_TOGGLE_ON = 993, + ERR_PVP_WARMODE_TOGGLE_OFF = 994, + ERR_SPELL_FAILED_LEVEL_REQUIREMENT = 995, + ERR_BATTLEGROUND_JOIN_REQUIRES_LEVEL = 996, + ERR_BATTLEGROUND_JOIN_DISQUALIFIED = 997, + ERR_VOICE_CHAT_GENERIC_UNABLE_TO_CONNECT = 998, + ERR_VOICE_CHAT_SERVICE_LOST = 999, + ERR_VOICE_CHAT_CHANNEL_NAME_TOO_SHORT = 1000, + ERR_VOICE_CHAT_CHANNEL_NAME_TOO_LONG = 1001, + ERR_VOICE_CHAT_CHANNEL_ALREADY_EXISTS = 1002, + ERR_VOICE_CHAT_TARGET_NOT_FOUND = 1003, + ERR_VOICE_CHAT_TOO_MANY_REQUESTS = 1004, + ERR_VOICE_CHAT_PLAYER_SILENCED = 1005, + ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL = 1006, + ERR_VOICE_CHAT_DISABLED = 1007, + ERR_NO_PVP_REWARD = 1008, + ERR_CLAIMED_PVP_REWARD = 1009, }; #endif diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp index e2f18ace45e..532779af445 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp @@ -64,7 +64,7 @@ namespace WorldPackets CreatureTemplate const* creatureTemplate = attacker->GetCreatureTemplate(); Type = TYPE_CREATURE_TO_PLAYER_DAMAGE; - PlayerLevelDelta = target->GetInt32Value(PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA); + PlayerLevelDelta = target->GetInt32Value(ACTIVE_PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA); PlayerItemLevel = target->GetAverageItemLevel(); TargetLevel = target->getLevel(); Expansion = creatureTemplate->RequiredExpansion; @@ -81,7 +81,7 @@ namespace WorldPackets CreatureTemplate const* creatureTemplate = target->GetCreatureTemplate(); Type = TYPE_PLAYER_TO_CREATURE_DAMAGE; - PlayerLevelDelta = attacker->GetInt32Value(PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA); + PlayerLevelDelta = attacker->GetInt32Value(ACTIVE_PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA); PlayerItemLevel = attacker->GetAverageItemLevel(); TargetLevel = target->getLevel(); Expansion = creatureTemplate->RequiredExpansion; diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 0197441f0b5..b7994e19bf6 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -572,9 +572,9 @@ void WorldSession::LogoutPlayer(bool save) for (int j = BUYBACK_SLOT_START; j < BUYBACK_SLOT_END; ++j) { eslot = j - BUYBACK_SLOT_START; - _player->SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (j * 4), ObjectGuid::Empty); - _player->SetUInt32Value(PLAYER_FIELD_BUYBACK_PRICE_1 + eslot, 0); - _player->SetUInt32Value(PLAYER_FIELD_BUYBACK_TIMESTAMP_1 + eslot, 0); + _player->SetGuidValue(ACTIVE_PLAYER_FIELD_INV_SLOT_HEAD + (j * 4), ObjectGuid::Empty); + _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_PRICE + eslot, 0); + _player->SetUInt32Value(ACTIVE_PLAYER_FIELD_BUYBACK_TIMESTAMP + eslot, 0); } _player->SaveToDB(); } diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index b639fe12d75..76547257af2 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -609,7 +609,7 @@ int32 AuraEffect::CalculateAmount(Unit* caster) if (!m_spellInfo->HasAttribute(SPELL_ATTR8_MASTERY_SPECIALIZATION) || G3D::fuzzyEq(GetSpellEffectInfo()->BonusCoefficient, 0.0f)) amount = GetSpellEffectInfo()->CalcValue(caster, &m_baseAmount, GetBase()->GetOwner()->ToUnit(), nullptr, GetBase()->GetCastItemLevel()); else if (caster && caster->GetTypeId() == TYPEID_PLAYER) - amount = int32(caster->GetFloatValue(PLAYER_MASTERY) * GetSpellEffectInfo()->BonusCoefficient); + amount = int32(caster->GetFloatValue(ACTIVE_PLAYER_FIELD_MASTERY) * GetSpellEffectInfo()->BonusCoefficient); // check item enchant aura cast if (!amount && caster) @@ -1483,7 +1483,7 @@ void AuraEffect::HandleModInvisibility(AuraApplication const* aurApp, uint8 mode { // apply glow vision if (target->GetTypeId() == TYPEID_PLAYER) - target->SetByteFlag(PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, PLAYER_FIELD_BYTE2_INVISIBILITY_GLOW); + target->SetByteFlag(ACTIVE_PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, PLAYER_FIELD_BYTE2_INVISIBILITY_GLOW); target->m_invisibility.AddFlag(type); target->m_invisibility.AddValue(type, GetAmount()); @@ -1495,7 +1495,7 @@ void AuraEffect::HandleModInvisibility(AuraApplication const* aurApp, uint8 mode // if not have different invisibility auras. // remove glow vision if (target->GetTypeId() == TYPEID_PLAYER) - target->RemoveByteFlag(PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, PLAYER_FIELD_BYTE2_INVISIBILITY_GLOW); + target->RemoveByteFlag(ACTIVE_PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, PLAYER_FIELD_BYTE2_INVISIBILITY_GLOW); target->m_invisibility.DelFlag(type); } @@ -1567,7 +1567,7 @@ void AuraEffect::HandleModStealth(AuraApplication const* aurApp, uint8 mode, boo target->SetStandFlags(UNIT_STAND_FLAGS_CREEP); if (target->GetTypeId() == TYPEID_PLAYER) - target->SetByteFlag(PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, PLAYER_FIELD_BYTE2_STEALTH); + target->SetByteFlag(ACTIVE_PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, PLAYER_FIELD_BYTE2_STEALTH); } else { @@ -1579,7 +1579,7 @@ void AuraEffect::HandleModStealth(AuraApplication const* aurApp, uint8 mode, boo target->RemoveStandFlags(UNIT_STAND_FLAGS_CREEP); if (target->GetTypeId() == TYPEID_PLAYER) - target->RemoveByteFlag(PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, PLAYER_FIELD_BYTE2_STEALTH); + target->RemoveByteFlag(ACTIVE_PLAYER_FIELD_BYTES2, PLAYER_FIELD_BYTES_2_OFFSET_AURA_VISION, PLAYER_FIELD_BYTE2_STEALTH); } } @@ -2400,9 +2400,9 @@ void AuraEffect::HandleAuraTrackCreatures(AuraApplication const* aurApp, uint8 m return; if (apply) - target->SetFlag(PLAYER_TRACK_CREATURES, uint32(1) << (GetMiscValue() - 1)); + target->SetFlag(ACTIVE_PLAYER_FIELD_TRACK_CREATURES, uint32(1) << (GetMiscValue() - 1)); else - target->RemoveFlag(PLAYER_TRACK_CREATURES, uint32(1) << (GetMiscValue() - 1)); + target->RemoveFlag(ACTIVE_PLAYER_FIELD_TRACK_CREATURES, uint32(1) << (GetMiscValue() - 1)); } void AuraEffect::HandleAuraTrackResources(AuraApplication const* aurApp, uint8 mode, bool apply) const @@ -2416,9 +2416,9 @@ void AuraEffect::HandleAuraTrackResources(AuraApplication const* aurApp, uint8 m return; if (apply) - target->SetFlag(PLAYER_TRACK_RESOURCES, uint32(1) << (GetMiscValue() - 1)); + target->SetFlag(ACTIVE_PLAYER_FIELD_TRACK_RESOURCES, uint32(1) << (GetMiscValue() - 1)); else - target->RemoveFlag(PLAYER_TRACK_RESOURCES, uint32(1) << (GetMiscValue() - 1)); + target->RemoveFlag(ACTIVE_PLAYER_FIELD_TRACK_RESOURCES, uint32(1) << (GetMiscValue() - 1)); } void AuraEffect::HandleAuraTrackStealthed(AuraApplication const* aurApp, uint8 mode, bool apply) const @@ -2437,7 +2437,7 @@ void AuraEffect::HandleAuraTrackStealthed(AuraApplication const* aurApp, uint8 m if (target->HasAuraType(GetAuraType())) return; } - target->ApplyModFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_TRACK_STEALTHED, apply); + target->ApplyModFlag(ACTIVE_PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_TRACK_STEALTHED, apply); } void AuraEffect::HandleAuraModStalked(AuraApplication const* aurApp, uint8 mode, bool apply) const @@ -3202,14 +3202,8 @@ void AuraEffect::HandleAuraModResistance(AuraApplication const* aurApp, uint8 mo Unit* target = aurApp->GetTarget(); for (int8 x = SPELL_SCHOOL_NORMAL; x < MAX_SPELL_SCHOOL; x++) - { if (GetMiscValue() & int32(1<HandleStatModifier(UnitMods(UNIT_MOD_RESISTANCE_START + x), TOTAL_VALUE, float(GetAmount()), apply); - if (target->GetTypeId() == TYPEID_PLAYER || target->IsPet()) - target->ApplyResistanceBuffModsMod(SpellSchools(x), GetAmount() > 0, (float)GetAmount(), apply); - } - } } void AuraEffect::HandleAuraModBaseResistancePCT(AuraApplication const* aurApp, uint8 mode, bool apply) const @@ -3251,20 +3245,9 @@ void AuraEffect::HandleModResistancePercent(AuraApplication const* aurApp, uint8 if (GetMiscValue() & int32(1<HandleStatModifier(UnitMods(UNIT_MOD_RESISTANCE_START + i), TOTAL_PCT, (float)spellGroupVal, !apply); - if (target->GetTypeId() == TYPEID_PLAYER || target->IsPet()) - { - target->ApplyResistanceBuffModsPercentMod(SpellSchools(i), true, (float)spellGroupVal, !apply); - target->ApplyResistanceBuffModsPercentMod(SpellSchools(i), false, (float)spellGroupVal, !apply); - } - } + target->HandleStatModifier(UnitMods(UNIT_MOD_RESISTANCE_START + i), TOTAL_PCT, float(GetAmount()), apply); - if (target->GetTypeId() == TYPEID_PLAYER || target->IsPet()) - { - target->ApplyResistanceBuffModsPercentMod(SpellSchools(i), true, (float)GetAmount(), apply); - target->ApplyResistanceBuffModsPercentMod(SpellSchools(i), false, (float)GetAmount(), apply); - } } } } @@ -3302,11 +3285,11 @@ void AuraEffect::HandleModTargetResistance(AuraApplication const* aurApp, uint8 // show armor penetration if (target->GetTypeId() == TYPEID_PLAYER && (GetMiscValue() & SPELL_SCHOOL_MASK_NORMAL)) - target->ApplyModInt32Value(PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE, GetAmount(), apply); + target->ApplyModInt32Value(ACTIVE_PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE, GetAmount(), apply); // show as spell penetration only full spell penetration bonuses (all resistances except armor and holy if (target->GetTypeId() == TYPEID_PLAYER && (GetMiscValue() & SPELL_SCHOOL_MASK_SPELL) == SPELL_SCHOOL_MASK_SPELL) - target->ApplyModInt32Value(PLAYER_FIELD_MOD_TARGET_RESISTANCE, GetAmount(), apply); + target->ApplyModInt32Value(ACTIVE_PLAYER_FIELD_MOD_TARGET_RESISTANCE, GetAmount(), apply); } /********************************/ @@ -3582,7 +3565,7 @@ void AuraEffect::HandleOverrideSpellPowerByAttackPower(AuraApplication const* au if (!target) return; - target->ApplyModSignedFloatValue(PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT, float(m_amount), apply); + target->ApplyModSignedFloatValue(ACTIVE_PLAYER_FIELD_OVERRIDE_SPELL_POWER_BY_AP_PCT, float(m_amount), apply); target->UpdateSpellDamageAndHealingBonus(); } @@ -3595,7 +3578,7 @@ void AuraEffect::HandleOverrideAttackPowerBySpellPower(AuraApplication const* au if (!target) return; - target->ApplyModSignedFloatValue(PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT, float(m_amount), apply); + target->ApplyModSignedFloatValue(ACTIVE_PLAYER_FIELD_OVERRIDE_AP_BY_SPELL_POWER_PERCENT, float(m_amount), apply); target->UpdateAttackPowerAndDamage(); target->UpdateAttackPowerAndDamage(true); } @@ -3607,7 +3590,7 @@ void AuraEffect::HandleModVersatilityByPct(AuraApplication const* aurApp, uint8 if (Player* target = aurApp->GetTarget()->ToPlayer()) { - target->SetStatFloatValue(PLAYER_VERSATILITY_BONUS, target->GetTotalAuraModifier(SPELL_AURA_MOD_VERSATILITY)); + target->SetStatFloatValue(ACTIVE_PLAYER_FIELD_VERSATILITY_BONUS, target->GetTotalAuraModifier(SPELL_AURA_MOD_VERSATILITY)); target->UpdateHealingDonePercentMod(); target->UpdateVersatilityDamageDone(); } @@ -4210,7 +4193,7 @@ void AuraEffect::HandleModDamageDone(AuraApplication const* aurApp, uint8 mode, // This information for client side use only if (target->GetTypeId() == TYPEID_PLAYER) { - uint16 baseField = GetAmount() >= 0 ? PLAYER_FIELD_MOD_DAMAGE_DONE_POS : PLAYER_FIELD_MOD_DAMAGE_DONE_NEG; + uint16 baseField = GetAmount() >= 0 ? ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS : ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG; for (uint16 i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i) if (GetMiscValue() & (1 << i)) target->ApplyModInt32Value(baseField + i, GetAmount(), apply); @@ -4251,9 +4234,9 @@ void AuraEffect::HandleModDamagePercentDone(AuraApplication const* aurApp, uint8 if (GetMiscValue() & (1 << i)) { if (spellGroupVal) - target->ApplyPercentModFloatValue(PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i, float(spellGroupVal), !apply); + target->ApplyPercentModFloatValue(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i, float(spellGroupVal), !apply); - target->ApplyPercentModFloatValue(PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i, float(GetAmount()), apply); + target->ApplyPercentModFloatValue(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_PCT + i, float(GetAmount()), apply); } } } @@ -4341,10 +4324,10 @@ void AuraEffect::HandleNoReagentUseAura(AuraApplication const* aurApp, uint8 mod if (SpellEffectInfo const* effect = (*i)->GetSpellEffectInfo()) mask |= effect->SpellClassMask; - target->SetUInt32Value(PLAYER_NO_REAGENT_COST_1 , mask[0]); - target->SetUInt32Value(PLAYER_NO_REAGENT_COST_1+1, mask[1]); - target->SetUInt32Value(PLAYER_NO_REAGENT_COST_1+2, mask[2]); - target->SetUInt32Value(PLAYER_NO_REAGENT_COST_1+3, mask[3]); + target->SetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST , mask[0]); + target->SetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST+1, mask[1]); + target->SetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST+2, mask[2]); + target->SetUInt32Value(ACTIVE_PLAYER_FIELD_NO_REAGENT_COST+3, mask[3]); } void AuraEffect::HandleAuraRetainComboPoints(AuraApplication const* aurApp, uint8 mode, bool apply) const @@ -4953,7 +4936,7 @@ void AuraEffect::HandleAuraOverrideSpells(AuraApplication const* aurApp, uint8 m if (apply) { - target->SetUInt16Value(PLAYER_FIELD_BYTES3, PLAYER_BYTES_3_OVERRIDE_SPELLS_UINT16_OFFSET, overrideId); + target->SetUInt16Value(ACTIVE_PLAYER_FIELD_BYTES3, PLAYER_BYTES_3_OVERRIDE_SPELLS_UINT16_OFFSET, overrideId); if (OverrideSpellDataEntry const* overrideSpells = sOverrideSpellDataStore.LookupEntry(overrideId)) for (uint8 i = 0; i < MAX_OVERRIDE_SPELL; ++i) if (uint32 spellId = overrideSpells->Spells[i]) @@ -4961,7 +4944,7 @@ void AuraEffect::HandleAuraOverrideSpells(AuraApplication const* aurApp, uint8 m } else { - target->SetUInt16Value(PLAYER_FIELD_BYTES3, PLAYER_BYTES_3_OVERRIDE_SPELLS_UINT16_OFFSET, 0); + target->SetUInt16Value(ACTIVE_PLAYER_FIELD_BYTES3, PLAYER_BYTES_3_OVERRIDE_SPELLS_UINT16_OFFSET, 0); if (OverrideSpellDataEntry const* overrideSpells = sOverrideSpellDataStore.LookupEntry(overrideId)) for (uint8 i = 0; i < MAX_OVERRIDE_SPELL; ++i) if (uint32 spellId = overrideSpells->Spells[i]) @@ -5005,9 +4988,9 @@ void AuraEffect::HandlePreventResurrection(AuraApplication const* aurApp, uint8 return; if (apply) - aurApp->GetTarget()->RemoveFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER); + aurApp->GetTarget()->RemoveFlag(ACTIVE_PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER); else if (!aurApp->GetTarget()->GetMap()->Instanceable()) - aurApp->GetTarget()->SetFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER); + aurApp->GetTarget()->SetFlag(ACTIVE_PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_RELEASE_TIMER); } void AuraEffect::HandleMastery(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const @@ -6156,9 +6139,9 @@ void AuraEffect::HandleAllowUsingGameobjectsWhileMounted(AuraApplication const* return; if (apply) - aurApp->GetTarget()->SetFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_CAN_USE_OBJECTS_MOUNTED); + aurApp->GetTarget()->SetFlag(ACTIVE_PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_CAN_USE_OBJECTS_MOUNTED); else if (!aurApp->GetTarget()->HasAuraType(SPELL_AURA_ALLOW_USING_GAMEOBJECTS_WHILE_MOUNTED)) - aurApp->GetTarget()->RemoveFlag(PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_CAN_USE_OBJECTS_MOUNTED); + aurApp->GetTarget()->RemoveFlag(ACTIVE_PLAYER_FIELD_LOCAL_FLAGS, PLAYER_LOCAL_FLAG_CAN_USE_OBJECTS_MOUNTED); } void AuraEffect::HandlePlayScene(AuraApplication const* aurApp, uint8 mode, bool apply) const diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 796f0c1c803..f33472669b7 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -3925,9 +3925,9 @@ inline float CalcPPMCritMod(SpellProcsPerMinuteModEntry const* mod, Unit* caster if (caster->GetTypeId() != TYPEID_PLAYER) return 0.0f; - float crit = caster->GetFloatValue(PLAYER_CRIT_PERCENTAGE); - float rangedCrit = caster->GetFloatValue(PLAYER_RANGED_CRIT_PERCENTAGE); - float spellCrit = caster->GetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1); + float crit = caster->GetFloatValue(ACTIVE_PLAYER_FIELD_CRIT_PERCENTAGE); + float rangedCrit = caster->GetFloatValue(ACTIVE_PLAYER_FIELD_RANGED_CRIT_PERCENTAGE); + float spellCrit = caster->GetFloatValue(ACTIVE_PLAYER_FIELD_SPELL_CRIT_PERCENTAGE1); switch (mod->Param) { diff --git a/src/server/scripts/Commands/cs_character.cpp b/src/server/scripts/Commands/cs_character.cpp index 9107c0c2ebb..101d522e85b 100644 --- a/src/server/scripts/Commands/cs_character.cpp +++ b/src/server/scripts/Commands/cs_character.cpp @@ -234,7 +234,7 @@ public: { player->GiveLevel(newLevel); player->InitTalentForLevel(); - player->SetUInt32Value(PLAYER_XP, 0); + player->SetUInt32Value(ACTIVE_PLAYER_FIELD_XP, 0); if (handler->needReportToTarget(player)) { diff --git a/src/server/scripts/Commands/cs_cheat.cpp b/src/server/scripts/Commands/cs_cheat.cpp index b9c2e78b98a..c4100d84438 100644 --- a/src/server/scripts/Commands/cs_cheat.cpp +++ b/src/server/scripts/Commands/cs_cheat.cpp @@ -276,9 +276,9 @@ public: for (uint16 i = 0; i < PLAYER_EXPLORED_ZONES_SIZE; ++i) { if (flag != 0) - handler->GetSession()->GetPlayer()->SetFlag(PLAYER_EXPLORED_ZONES_1+i, 0xFFFFFFFF); + handler->GetSession()->GetPlayer()->SetFlag(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + i, 0xFFFFFFFF); else - handler->GetSession()->GetPlayer()->SetFlag(PLAYER_EXPLORED_ZONES_1+i, 0); + handler->GetSession()->GetPlayer()->SetFlag(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + i, 0); } return true; diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 9be3ff64559..a5a3fe831b2 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -1203,8 +1203,8 @@ public: } uint32 val = uint32((1 << (area->AreaBit % 32))); - uint32 currFields = playerTarget->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset); - playerTarget->SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, uint32((currFields | val))); + uint32 currFields = playerTarget->GetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + offset); + playerTarget->SetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + offset, uint32((currFields | val))); handler->SendSysMessage(LANG_EXPLORE_AREA); return true; @@ -1247,8 +1247,8 @@ public: } uint32 val = uint32((1 << (area->AreaBit % 32))); - uint32 currFields = playerTarget->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset); - playerTarget->SetUInt32Value(PLAYER_EXPLORED_ZONES_1 + offset, uint32((currFields ^ val))); + uint32 currFields = playerTarget->GetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + offset); + playerTarget->SetUInt32Value(ACTIVE_PLAYER_FIELD_EXPLORED_ZONES + offset, uint32((currFields ^ val))); handler->SendSysMessage(LANG_UNEXPLORE_AREA); return true; diff --git a/src/server/scripts/Commands/cs_reset.cpp b/src/server/scripts/Commands/cs_reset.cpp index 10c924b89ed..1c62712f5bd 100644 --- a/src/server/scripts/Commands/cs_reset.cpp +++ b/src/server/scripts/Commands/cs_reset.cpp @@ -83,8 +83,8 @@ public: if (!handler->extractPlayerTarget((char*)args, &target)) return false; - target->SetUInt32Value(PLAYER_FIELD_KILLS, 0); - target->SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, 0); + target->SetUInt32Value(ACTIVE_PLAYER_FIELD_KILLS, 0); + target->SetUInt32Value(ACTIVE_PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, 0); target->UpdateCriteria(CRITERIA_TYPE_EARN_HONORABLE_KILL); return true; @@ -117,7 +117,7 @@ public: player->SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP_ATTACKABLE); //-1 is default value - player->SetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, uint32(-1)); + player->SetUInt32Value(ACTIVE_PLAYER_FIELD_WATCHED_FACTION_INDEX, uint32(-1)); return true; } @@ -143,7 +143,7 @@ public: target->InitStatsForLevel(true); target->InitTaxiNodesForLevel(); target->InitTalentForLevel(); - target->SetUInt32Value(PLAYER_XP, 0); + target->SetUInt32Value(ACTIVE_PLAYER_FIELD_XP, 0); target->_ApplyAllLevelScaleItemMods(true); diff --git a/src/server/scripts/Commands/cs_titles.cpp b/src/server/scripts/Commands/cs_titles.cpp index b493f810e13..c910d9ca8ce 100644 --- a/src/server/scripts/Commands/cs_titles.cpp +++ b/src/server/scripts/Commands/cs_titles.cpp @@ -234,7 +234,7 @@ public: titles &= ~titles2; // remove non-existing titles - target->SetUInt64Value(PLAYER__FIELD_KNOWN_TITLES, titles); + target->SetUInt64Value(ACTIVE_PLAYER_FIELD_KNOWN_TITLES, titles); handler->SendSysMessage(LANG_DONE); if (!target->HasTitle(target->GetInt32Value(PLAYER_CHOSEN_TITLE))) diff --git a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp index 4acf2099f51..e869ee3e6c1 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp @@ -173,7 +173,7 @@ class boss_sapphiron : public CreatureScript switch(spell->Id) { case SPELL_CHECK_RESISTS: - if (target && target->GetResistance(SPELL_SCHOOL_FROST) > MAX_FROST_RESISTANCE) + if (target && target->GetResistance(SPELL_SCHOOL_MASK_FROST) > MAX_FROST_RESISTANCE) _canTheHundredClub = false; break; } diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp index a1376de652f..8649c4c1601 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp @@ -150,7 +150,7 @@ class boss_high_astromancer_solarian : public CreatureScript { Initialize(); _Reset(); - me->SetArmor(defaultarmor); + me->SetArmor(defaultarmor, 0); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetVisible(true); me->SetObjectScale(defaultsize); @@ -403,7 +403,7 @@ class boss_high_astromancer_solarian : public CreatureScript me->SetVisible(true); Talk(SAY_VOIDA); Talk(SAY_VOIDB); - me->SetArmor(WV_ARMOR); + me->SetArmor(WV_ARMOR, 0); me->SetDisplayId(MODEL_VOIDWALKER); me->SetObjectScale(defaultsize*2.5f); } diff --git a/src/server/scripts/Spells/spell_pet.cpp b/src/server/scripts/Spells/spell_pet.cpp index 81bfe4fcd0c..5e46c2dfda4 100644 --- a/src/server/scripts/Spells/spell_pet.cpp +++ b/src/server/scripts/Spells/spell_pet.cpp @@ -300,8 +300,8 @@ public: if (Unit* owner = pet->ToPet()->GetOwner()) { - int32 fire = owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE) - owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); - int32 shadow = owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW) - owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_SHADOW); + int32 fire = owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE) - owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); + int32 shadow = owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW) - owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_SHADOW); int32 maximum = (fire > shadow) ? fire : shadow; if (maximum < 0) maximum = 0; @@ -328,8 +328,8 @@ public: if (Unit* owner = pet->ToPet()->GetOwner()) { //the damage bonus used for pets is either fire or shadow damage, whatever is higher - int32 fire = owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE) - owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); - int32 shadow = owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW) - owner->GetInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_SHADOW); + int32 fire = owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE) - owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_FIRE); + int32 shadow = owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW) - owner->GetInt32Value(ACTIVE_PLAYER_FIELD_MOD_DAMAGE_DONE_NEG + SPELL_SCHOOL_SHADOW); int32 maximum = (fire > shadow) ? fire : shadow; float bonusDamage = 0.0f; @@ -450,7 +450,7 @@ public: if (pet->IsPet()) if (Unit* owner = pet->ToPet()->GetOwner()) { - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_FIRE), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_FIRE), 40); amount += ownerBonus; } } @@ -496,7 +496,7 @@ public: if (pet->IsPet()) if (Unit* owner = pet->ToPet()->GetOwner()) { - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_FROST), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_FROST), 40); amount += ownerBonus; } } @@ -507,7 +507,7 @@ public: if (pet->IsPet()) if (Unit* owner = pet->ToPet()->GetOwner()) { - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_ARCANE), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_ARCANE), 40); amount += ownerBonus; } } @@ -518,7 +518,7 @@ public: if (pet->IsPet()) if (Unit* owner = pet->ToPet()->GetOwner()) { - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_NATURE), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_NATURE), 40); amount += ownerBonus; } } @@ -559,7 +559,7 @@ public: if (pet->IsPet()) if (Unit* owner = pet->ToPet()->GetOwner()) { - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_SHADOW), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_SHADOW), 40); amount += ownerBonus; } } @@ -1025,7 +1025,7 @@ public: if (!owner) return; - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_FROST), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_FROST), 40); amount += ownerBonus; } } @@ -1041,7 +1041,7 @@ public: if (!owner) return; - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_FIRE), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_FIRE), 40); amount += ownerBonus; } } @@ -1057,7 +1057,7 @@ public: if (!owner) return; - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_NATURE), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_NATURE), 40); amount += ownerBonus; } } @@ -1103,7 +1103,7 @@ public: if (!owner) return; - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_SHADOW), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_SHADOW), 40); amount += ownerBonus; } } @@ -1119,7 +1119,7 @@ public: if (!owner) return; - int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_ARCANE), 40); + int32 const ownerBonus = CalculatePct(owner->GetResistance(SPELL_SCHOOL_MASK_ARCANE), 40); amount += ownerBonus; } } -- cgit v1.2.3 From 0a779bd791fb63b2fc1663206279c7eaa9c02c6f Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 4 Oct 2018 18:50:21 +0200 Subject: Core/PacketIO: Updated packet structures to 8.0.1 --- .../hotfixes/master/2018_10_16_00_hotfixes.sql | 27 ++ sql/updates/world/master/2018_10_16_00_world.sql | 104 ++++++++ .../Database/Implementation/HotfixDatabase.cpp | 7 + .../Database/Implementation/HotfixDatabase.h | 4 + src/server/game/Achievements/CriteriaHandler.cpp | 4 +- src/server/game/Battlegrounds/Battleground.cpp | 5 +- src/server/game/Calendar/CalendarMgr.cpp | 16 +- src/server/game/DataStores/DB2LoadInfo.h | 34 +++ src/server/game/DataStores/DB2Stores.cpp | 36 +++ src/server/game/DataStores/DB2Stores.h | 5 +- src/server/game/DataStores/DB2Structure.h | 17 ++ .../game/Entities/AreaTrigger/AreaTrigger.cpp | 19 +- .../Entities/AreaTrigger/AreaTriggerTemplate.cpp | 3 + .../Entities/AreaTrigger/AreaTriggerTemplate.h | 12 +- .../game/Entities/Conversation/Conversation.cpp | 7 +- .../game/Entities/Conversation/Conversation.h | 9 +- src/server/game/Entities/Corpse/Corpse.cpp | 2 +- src/server/game/Entities/Creature/Creature.cpp | 2 + src/server/game/Entities/Creature/GossipDef.cpp | 8 +- .../game/Entities/DynamicObject/DynamicObject.cpp | 2 +- src/server/game/Entities/GameObject/GameObject.cpp | 11 +- .../game/Entities/GameObject/GameObjectData.h | 49 +++- src/server/game/Entities/Item/Item.cpp | 2 - src/server/game/Entities/Object/Object.cpp | 161 +++++++----- src/server/game/Entities/Object/Object.h | 31 ++- src/server/game/Entities/Object/ObjectGuid.cpp | 1 + src/server/game/Entities/Object/ObjectGuid.h | 56 ++-- .../game/Entities/Object/Updates/UpdateData.h | 23 -- src/server/game/Entities/Player/Player.cpp | 91 ++++--- src/server/game/Entities/Player/Player.h | 20 +- src/server/game/Entities/Transport/Transport.cpp | 4 +- src/server/game/Entities/Unit/Unit.cpp | 80 +++--- src/server/game/Entities/Unit/Unit.h | 11 +- src/server/game/Globals/AreaTriggerDataStore.cpp | 13 +- src/server/game/Globals/ConversationDataStore.cpp | 7 +- src/server/game/Globals/ConversationDataStore.h | 3 +- src/server/game/Globals/ObjectMgr.cpp | 172 ++++++------ src/server/game/Globals/ObjectMgr.h | 17 +- src/server/game/Handlers/AuthHandler.cpp | 3 + src/server/game/Handlers/CalendarHandler.cpp | 3 +- src/server/game/Handlers/CharacterHandler.cpp | 6 +- src/server/game/Handlers/DuelHandler.cpp | 2 +- src/server/game/Handlers/InspectHandler.cpp | 4 + src/server/game/Handlers/QueryHandler.cpp | 29 ++- src/server/game/Handlers/SkillHandler.cpp | 6 +- src/server/game/Miscellaneous/SharedDefines.h | 289 +++++++++++++++------ src/server/game/Quests/QuestDef.cpp | 155 +++++------ src/server/game/Quests/QuestDef.h | 26 +- src/server/game/Scenarios/ScenarioMgr.cpp | 37 ++- src/server/game/Scenarios/ScenarioMgr.h | 15 +- .../game/Server/Packets/AchievementPackets.h | 2 +- .../game/Server/Packets/AreaTriggerPackets.cpp | 14 +- .../game/Server/Packets/AreaTriggerPackets.h | 13 +- .../game/Server/Packets/AuthenticationPackets.cpp | 6 +- .../game/Server/Packets/AuthenticationPackets.h | 3 +- .../game/Server/Packets/BattlegroundPackets.cpp | 10 +- .../game/Server/Packets/BattlegroundPackets.h | 6 +- src/server/game/Server/Packets/CalendarPackets.cpp | 73 ++++-- src/server/game/Server/Packets/CalendarPackets.h | 17 +- .../game/Server/Packets/CharacterPackets.cpp | 7 +- src/server/game/Server/Packets/CharacterPackets.h | 25 +- src/server/game/Server/Packets/ChatPackets.cpp | 17 +- src/server/game/Server/Packets/ChatPackets.h | 7 +- .../game/Server/Packets/CombatLogPackets.cpp | 63 ++--- src/server/game/Server/Packets/CombatLogPackets.h | 13 +- .../game/Server/Packets/CombatLogPacketsCommon.cpp | 40 +-- .../game/Server/Packets/CombatLogPacketsCommon.h | 16 +- src/server/game/Server/Packets/CombatPackets.cpp | 6 +- src/server/game/Server/Packets/CombatPackets.h | 4 +- src/server/game/Server/Packets/DuelPackets.cpp | 1 + src/server/game/Server/Packets/DuelPackets.h | 1 + .../game/Server/Packets/EquipmentSetPackets.h | 4 +- src/server/game/Server/Packets/GarrisonPackets.h | 2 +- .../game/Server/Packets/GuildFinderPackets.cpp | 2 +- .../game/Server/Packets/GuildFinderPackets.h | 2 +- src/server/game/Server/Packets/GuildPackets.cpp | 168 ++++++------ src/server/game/Server/Packets/GuildPackets.h | 12 +- src/server/game/Server/Packets/InspectPackets.cpp | 18 +- src/server/game/Server/Packets/InspectPackets.h | 11 +- src/server/game/Server/Packets/InstancePackets.cpp | 32 +-- src/server/game/Server/Packets/InstancePackets.h | 8 +- src/server/game/Server/Packets/ItemPackets.cpp | 2 +- src/server/game/Server/Packets/LFGPackets.cpp | 13 +- src/server/game/Server/Packets/LFGPackets.h | 26 +- src/server/game/Server/Packets/MiscPackets.cpp | 3 +- src/server/game/Server/Packets/MiscPackets.h | 5 +- src/server/game/Server/Packets/MovementPackets.cpp | 44 +++- src/server/game/Server/Packets/MovementPackets.h | 12 +- src/server/game/Server/Packets/NPCPackets.cpp | 24 +- src/server/game/Server/Packets/NPCPackets.h | 7 +- src/server/game/Server/Packets/PacketUtilities.h | 5 + src/server/game/Server/Packets/PartyPackets.cpp | 27 +- src/server/game/Server/Packets/PartyPackets.h | 29 ++- src/server/game/Server/Packets/PetPackets.cpp | 13 +- src/server/game/Server/Packets/PetPackets.h | 2 +- src/server/game/Server/Packets/PetitionPackets.cpp | 41 ++- src/server/game/Server/Packets/PetitionPackets.h | 2 +- src/server/game/Server/Packets/QueryPackets.cpp | 58 +++-- src/server/game/Server/Packets/QueryPackets.h | 32 ++- src/server/game/Server/Packets/QuestPackets.cpp | 26 +- src/server/game/Server/Packets/QuestPackets.h | 15 +- .../game/Server/Packets/ReputationPackets.cpp | 2 - src/server/game/Server/Packets/ReputationPackets.h | 2 +- src/server/game/Server/Packets/ScenarioPackets.cpp | 3 +- src/server/game/Server/Packets/SpellPackets.cpp | 25 +- src/server/game/Server/Packets/SpellPackets.h | 12 +- src/server/game/Server/Packets/SystemPackets.cpp | 21 +- src/server/game/Server/Packets/SystemPackets.h | 21 +- src/server/game/Server/Packets/TalentPackets.cpp | 30 ++- src/server/game/Server/Packets/TalentPackets.h | 12 +- src/server/game/Server/Packets/TaxiPackets.h | 2 +- src/server/game/Server/Packets/TicketPackets.cpp | 8 + src/server/game/Server/Packets/TicketPackets.h | 7 +- src/server/game/Server/Packets/TotemPackets.cpp | 2 +- src/server/game/Server/Packets/TotemPackets.h | 2 +- .../Server/Packets/TransmogrificationPackets.cpp | 4 +- src/server/game/Server/Packets/WhoPackets.cpp | 4 +- .../game/Server/Packets/WorldStatePackets.cpp | 8 +- src/server/game/Server/Packets/WorldStatePackets.h | 10 +- src/server/game/Server/Protocol/Opcodes.cpp | 8 +- src/server/game/Server/Protocol/Opcodes.h | 6 +- src/server/game/Server/WorldSession.h | 2 +- src/server/game/Server/WorldSocket.cpp | 7 +- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 11 +- src/server/game/Spells/SpellEffects.cpp | 3 +- src/server/game/Spells/SpellMgr.h | 2 +- src/server/shared/Packets/ByteBuffer.h | 23 +- 127 files changed, 1820 insertions(+), 1056 deletions(-) create mode 100644 sql/updates/hotfixes/master/2018_10_16_00_hotfixes.sql create mode 100644 sql/updates/world/master/2018_10_16_00_world.sql (limited to 'src/server/game/Entities/Player') diff --git a/sql/updates/hotfixes/master/2018_10_16_00_hotfixes.sql b/sql/updates/hotfixes/master/2018_10_16_00_hotfixes.sql new file mode 100644 index 00000000000..88498a167dc --- /dev/null +++ b/sql/updates/hotfixes/master/2018_10_16_00_hotfixes.sql @@ -0,0 +1,27 @@ +-- +-- Table structure for table `animation_data` +-- +DROP TABLE IF EXISTS `animation_data`; +CREATE TABLE `animation_data` ( + `ID` int(10) unsigned NOT NULL DEFAULT '0', + `Fallback` smallint(5) unsigned NOT NULL DEFAULT '0', + `BehaviorTier` tinyint(3) unsigned NOT NULL DEFAULT '0', + `BehaviorID` int(11) NOT NULL DEFAULT '0', + `Flags1` int(11) NOT NULL DEFAULT '0', + `Flags2` int(11) NOT NULL DEFAULT '0', + `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Table structure for table `num_talents_at_level` +-- +DROP TABLE IF EXISTS `num_talents_at_level`; +CREATE TABLE `num_talents_at_level` ( + `ID` int(10) unsigned NOT NULL DEFAULT '0', + `NumTalents` int(11) NOT NULL DEFAULT '0', + `NumTalentsDeathKnight` int(11) NOT NULL DEFAULT '0', + `NumTalentsDemonHunter` int(11) NOT NULL DEFAULT '0', + `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/sql/updates/world/master/2018_10_16_00_world.sql b/sql/updates/world/master/2018_10_16_00_world.sql new file mode 100644 index 00000000000..8a747a34db2 --- /dev/null +++ b/sql/updates/world/master/2018_10_16_00_world.sql @@ -0,0 +1,104 @@ +ALTER TABLE `conversation_template` ADD `TextureKitId` int(10) unsigned NOT NULL DEFAULT '0' AFTER `LastLineEndTime`; +ALTER TABLE `gameobject_template` ADD `Data33` int(11) NOT NULL DEFAULT '0' AFTER `Data32`; +ALTER TABLE `playerchoice` ADD `KeepOpenAfterChoice` tinyint(3) unsigned NOT NULL DEFAULT '0' AFTER `HideWarboardHeader`; +ALTER TABLE `playerchoice_response` + ADD `Flags` int(11) NOT NULL DEFAULT '0' AFTER `ChoiceArtFileId`, + ADD `WidgetSetID` int(10) unsigned NOT NULL DEFAULT '0' AFTER `Flags`, + ADD `GroupID` tinyint(3) unsigned NOT NULL DEFAULT '0' AFTER `WidgetSetID`; + +ALTER TABLE `quest_poi` + ADD `UiMapID` int(11) DEFAULT NULL AFTER `MapID`, + CHANGE `WoDUnk1` `SpawnTrackingID` int(11) NOT NULL DEFAULT '0' AFTER `PlayerConditionID`; + +ALTER TABLE `quest_template` + ADD `ScalingFactionGroup` int(11) NOT NULL DEFAULT '0' AFTER `QuestLevel`, + ADD `FlagsEx2` int(10) unsigned NOT NULL DEFAULT '0' AFTER `FlagsEx`, + ADD `PortraitGiverMount` int(11) NOT NULL DEFAULT '0' AFTER `PortraitGiver`, + CHANGE `QuestRewardID` `TreasurePickerID` int(11) NOT NULL DEFAULT '0' AFTER `AllowableRaces`; + +ALTER TABLE `scenario_poi` ADD `UiMapID` int(11) DEFAULT NULL AFTER `MapID`; + +DROP TABLE IF EXISTS `world_map_area_to_ui_map`; +CREATE TABLE `world_map_area_to_ui_map` ( + `WorldMapAreaID` int(11) NOT NULL, + `Floor` int(11) NOT NULL, + `UiMapID` int(11) DEFAULT NULL, + PRIMARY KEY (`WorldMapAreaID`,`Floor`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; + +INSERT INTO `world_map_area_to_ui_map` VALUES +(4,0,1),(4,8,2),(4,10,3),(4,11,4),(4,12,5),(4,19,6),(9,0,7),(9,6,8),(9,7,9),(11,0,10),(11,20,11),(13,0,12),(14,0,13),(16,0,14),(17,0,15),(17,18,16),(19,0,17),(20,0,18),(20,13,19),(20,25,20), +(21,0,21),(22,0,22),(23,0,23),(23,20,24),(24,0,25),(26,0,26),(27,0,27),(27,6,28),(27,7,29),(27,10,30),(27,11,31),(28,0,32),(28,14,33),(28,15,34),(28,16,35),(29,0,36),(30,0,37),(30,1,38),(30,2,39),(30,19,40), +(30,21,41),(32,0,42),(32,22,43),(32,23,44),(32,24,45),(32,27,46),(34,0,47),(35,0,48),(36,0,49),(37,0,50),(38,0,51),(39,0,52),(39,4,53),(39,5,54),(39,17,55),(40,0,56),(41,0,57),(41,2,58),(41,3,59),(41,4,60), +(41,5,61),(42,0,62),(43,0,63),(61,0,64),(81,0,65),(101,0,66),(101,21,67),(101,22,68),(121,0,69),(141,0,70),(161,0,71),(161,15,72),(161,16,73),(161,17,74),(161,18,75),(181,0,76),(182,0,77),(201,0,78),(201,14,79),(241,0,80), +(261,0,81),(261,13,82),(281,0,83),(301,0,84),(321,0,85),(321,1,86),(341,0,87),(362,0,88),(381,0,89),(382,0,90),(401,0,91),(443,0,92),(461,0,93),(462,0,94),(463,0,95),(463,1,96),(464,0,97),(464,2,98),(464,3,99),(465,0,100), +(466,0,101),(467,0,102),(471,0,103),(473,0,104),(475,0,105),(476,0,106),(477,0,107),(478,0,108),(479,0,109),(480,0,110),(481,0,111),(482,0,112),(485,0,113),(486,0,114),(488,0,115),(490,0,116),(491,0,117),(492,0,118),(493,0,119),(495,0,120), +(496,0,121),(499,0,122),(501,0,123),(502,0,124),(504,1,125),(504,2,126),(510,0,127),(512,0,128),(520,1,129),(521,0,130),(521,1,131),(522,1,132),(523,1,133),(523,2,134),(523,3,135),(524,1,136),(524,2,137),(525,1,138),(525,2,139),(526,1,140), +(527,1,141),(528,0,142),(528,1,143),(528,2,144),(528,3,145),(528,4,146),(529,0,147),(529,1,148),(529,2,149),(529,3,150),(529,4,151),(529,5,152),(530,0,153),(530,1,154),(531,0,155),(532,1,156),(533,1,157),(533,2,158),(533,3,159),(534,1,160), +(534,2,161),(535,1,162),(535,2,163),(535,3,164),(535,4,165),(535,5,166),(535,6,167),(536,1,168),(540,0,169),(541,0,170),(542,1,171),(543,1,172),(543,2,173),(544,0,174),(544,1,175),(544,2,176),(544,3,177),(544,4,178),(545,0,179),(545,1,180), +(545,2,181),(545,3,182),(601,1,183),(602,0,184),(603,1,185),(604,1,186),(604,2,187),(604,3,188),(604,4,189),(604,5,190),(604,6,191),(604,7,192),(604,8,193),(605,0,194),(605,5,195),(605,6,196),(605,7,197),(606,0,198),(607,0,199),(609,0,200), +(610,0,201),(611,0,202),(613,0,203),(614,0,204),(615,0,205),(626,0,206),(640,0,207),(640,1,208),(640,2,209),(673,0,210),(680,1,213),(684,0,217),(685,0,218),(686,0,219),(687,1,220),(688,1,221),(688,2,222),(688,3,223),(689,0,224),(690,1,225), +(691,1,226),(691,2,227),(691,3,228),(691,4,229),(692,1,230),(692,2,231),(696,1,232),(697,0,233),(699,0,234),(699,1,235),(699,2,236),(699,3,237),(699,4,238),(699,5,239),(699,6,240),(700,0,241),(704,1,242),(704,2,243),(708,0,244),(709,0,245), +(710,1,246),(717,0,247),(718,1,248),(720,0,249),(721,1,250),(721,2,251),(721,3,252),(721,4,253),(721,5,254),(721,6,255),(722,1,256),(722,2,257),(723,1,258),(723,2,259),(724,1,260),(725,1,261),(726,1,262),(727,1,263),(727,2,264),(728,1,265), +(729,1,266),(730,1,267),(730,2,268),(731,1,269),(731,2,270),(731,3,271),(732,1,272),(733,0,273),(734,0,274),(736,0,275),(737,0,276),(747,0,277),(749,1,279),(750,1,280),(750,2,281),(752,1,282),(753,1,283),(753,2,284),(754,1,285),(754,2,286), +(755,1,287),(755,2,288),(755,3,289),(755,4,290),(756,1,291),(756,2,292),(757,1,293),(758,1,294),(758,2,295),(758,3,296),(759,1,297),(759,2,298),(759,3,299),(760,1,300),(761,1,301),(762,1,302),(762,2,303),(762,3,304),(762,4,305),(763,1,306), +(763,2,307),(763,3,308),(763,4,309),(764,1,310),(764,2,311),(764,3,312),(764,4,313),(764,5,314),(764,6,315),(764,7,316),(765,1,317),(765,2,318),(766,1,319),(766,2,320),(766,3,321),(767,1,322),(767,2,323),(768,1,324),(769,1,325),(772,0,327), +(773,1,328),(775,0,329),(776,1,330),(779,1,331),(780,1,332),(781,0,333),(782,1,334),(789,0,335),(789,1,336),(793,0,337),(795,0,338),(796,0,339),(796,1,340),(796,2,341),(796,3,342),(796,4,343),(796,5,344),(796,6,345),(796,7,346),(797,1,347), +(798,1,348),(798,2,349),(799,1,350),(799,2,351),(799,3,352),(799,4,353),(799,5,354),(799,6,355),(799,7,356),(799,8,357),(799,9,358),(799,10,359),(799,11,360),(799,12,361),(799,13,362),(799,14,363),(799,15,364),(799,16,365),(799,17,366),(800,0,367), +(800,1,368),(800,2,369),(803,1,370),(806,0,371),(806,6,372),(806,7,373),(806,15,374),(806,16,375),(807,0,376),(807,14,377),(808,0,378),(809,0,379),(809,8,380),(809,9,381),(809,10,382),(809,11,383),(809,12,384),(809,17,385),(809,20,386),(809,21,387), +(810,0,388),(810,13,389),(811,0,390),(811,1,391),(811,2,392),(811,3,393),(811,4,394),(811,18,395),(811,19,396),(813,0,397),(816,0,398),(819,0,399),(819,1,400),(820,0,401),(820,1,402),(820,2,403),(820,3,404),(820,4,405),(820,5,406),(823,0,407), +(823,1,408),(824,0,409),(824,1,410),(824,2,411),(824,3,412),(824,4,413),(824,5,414),(824,6,415),(851,0,416),(856,0,417),(857,0,418),(857,1,419),(857,2,420),(857,3,421),(858,0,422),(860,1,423),(862,0,424),(864,0,425),(864,3,426),(866,0,427), +(866,9,428),(867,1,429),(867,2,430),(871,1,431),(871,2,432),(873,0,433),(873,5,434),(874,1,435),(874,2,436),(875,1,437),(875,2,438),(876,1,439),(876,2,440),(876,3,441),(876,4,442),(877,0,443),(877,1,444),(877,2,445),(877,3,446),(878,0,447), +(880,0,448),(881,0,449),(882,0,450),(883,0,451),(884,0,452),(885,1,453),(885,2,454),(885,3,455),(886,0,456),(887,0,457),(887,1,458),(887,2,459),(888,0,460),(889,0,461),(890,0,462),(891,0,463),(891,9,464),(892,0,465),(892,12,466),(893,0,467), +(894,0,468),(895,0,469),(895,8,470),(896,1,471),(896,2,472),(896,3,473),(897,1,474),(897,2,475),(898,1,476),(898,2,477),(898,3,478),(898,4,479),(899,1,480),(900,1,481),(900,2,482),(906,0,483),(911,0,486),(912,0,487),(914,0,488),(914,1,489), +(919,0,490),(919,1,491),(919,2,492),(919,3,493),(919,4,494),(919,5,495),(919,6,496),(919,7,497),(920,0,498),(922,1,499),(922,2,500),(924,1,501),(924,2,502),(925,1,503),(928,0,504),(928,1,505),(928,2,506),(929,0,507),(930,1,508),(930,2,509), +(930,3,510),(930,4,511),(930,5,512),(930,6,513),(930,7,514),(930,8,515),(933,0,516),(933,1,517),(934,1,518),(935,0,519),(937,0,520),(937,1,521),(938,1,522),(939,0,523),(940,0,524),(941,0,525),(941,1,526),(941,2,527),(941,3,528),(941,4,529), +(941,6,530),(941,7,531),(941,8,532),(941,9,533),(945,0,534),(946,0,535),(946,13,536),(946,14,537),(946,30,538),(947,0,539),(947,15,540),(947,22,541),(948,0,542),(949,0,543),(949,16,544),(949,17,545),(949,18,546),(949,19,547),(949,20,548),(949,21,549), +(950,0,550),(950,10,551),(950,11,552),(950,12,553),(951,0,554),(951,22,555),(953,0,556),(953,1,557),(953,2,558),(953,3,559),(953,4,560),(953,5,561),(953,6,562),(953,7,563),(953,8,564),(953,9,565),(953,10,566),(953,11,567),(953,12,568),(953,13,569), +(953,14,570),(955,0,571),(962,0,572),(964,1,573),(969,1,574),(969,2,575),(969,3,576),(970,0,577),(970,1,578),(971,23,579),(971,24,580),(971,25,581),(973,0,582),(976,26,585),(976,27,586),(976,28,587),(978,0,588),(978,29,589),(980,0,590),(983,0,592), +(984,1,593),(986,0,594),(987,1,595),(988,1,596),(988,2,597),(988,3,598),(988,4,599),(988,5,600),(989,1,601),(989,2,602),(993,1,606),(993,2,607),(993,3,608),(993,4,609),(994,0,610),(994,1,611),(994,2,612),(994,3,613),(994,4,614),(994,5,615), +(995,1,616),(995,2,617),(995,3,618),(1007,0,619),(1008,0,620),(1008,1,621),(1009,0,622),(1010,0,623),(1011,0,624),(1014,0,625),(1014,4,626),(1014,10,627),(1014,11,628),(1014,12,629),(1015,0,630),(1015,17,631),(1015,18,632),(1015,19,633),(1017,0,634),(1017,1,635), +(1017,9,636),(1017,25,637),(1017,26,638),(1017,27,639),(1017,28,640),(1018,0,641),(1018,13,642),(1018,14,643),(1018,15,644),(1020,0,645),(1021,0,646),(1021,1,647),(1021,2,648),(1022,0,649),(1024,0,650), +(1024,5,651),(1024,6,652),(1024,8,653),(1024,16,654),(1024,20,655),(1024,21,656),(1024,29,657),(1024,30,658),(1024,31,659),(1024,40,660),(1026,0,661),(1026,1,662),(1026,2,663),(1026,3,664),(1026,4,665), +(1026,5,666),(1026,6,667),(1026,7,668),(1026,8,669),(1026,9,670),(1027,0,671),(1028,0,672),(1028,1,673),(1028,2,674),(1028,3,675),(1031,0,676),(1032,1,677),(1032,2,678),(1032,3,679),(1033,0,680), +(1033,22,681),(1033,23,682),(1033,24,683),(1033,32,684),(1033,33,685),(1033,34,686),(1033,35,687),(1033,36,688),(1033,37,689),(1033,38,690),(1033,39,691),(1033,41,692),(1033,42,693),(1034,0,694), +(1035,1,695),(1037,0,696),(1038,0,697),(1039,1,698),(1039,2,699),(1039,3,700),(1039,4,701),(1040,1,702),(1041,0,703),(1041,1,704),(1041,2,705),(1042,0,706),(1042,1,707),(1042,2,708),(1044,0,709), +(1045,1,710),(1045,2,711),(1045,3,712),(1046,0,713),(1047,0,714),(1048,0,715),(1049,1,716),(1050,0,717),(1051,0,718),(1052,0,719),(1052,1,720),(1052,2,721),(1054,1,723),(1056,0,725),(1057,0,726), +(1059,0,728),(1060,1,729),(1065,0,731),(1066,1,732),(1067,0,733),(1068,1,734),(1068,2,735),(1069,1,736),(1070,1,737),(1071,0,738),(1072,0,739),(1073,1,740),(1073,2,741),(1075,1,742),(1075,2,743), +(1076,1,744),(1076,2,745),(1076,3,746),(1077,0,747),(1078,0,748),(1079,1,749),(1080,0,750),(1081,1,751),(1081,2,752),(1081,3,753),(1081,4,754),(1081,5,755),(1081,6,756),(1082,0,757),(1084,0,758), +(1085,1,759),(1086,0,760),(1087,0,761),(1087,1,762),(1087,2,763),(1088,1,764),(1088,2,765),(1088,3,766),(1088,4,767),(1088,5,768),(1088,6,769),(1088,7,770),(1088,8,771),(1088,9,772),(1090,0,773), +(1090,1,774),(1091,0,775),(1092,0,776),(1094,1,777),(1094,2,778),(1094,3,779),(1094,4,780),(1094,5,781),(1094,6,782),(1094,7,783),(1094,8,784),(1094,9,785),(1094,10,786),(1094,11,787),(1094,12,788), +(1094,13,789),(1096,0,790),(1097,1,791),(1097,2,792),(1099,0,793),(1100,1,794),(1100,2,795),(1100,3,796),(1100,4,797),(1102,1,798),(1104,0,799),(1104,1,800),(1104,2,801),(1104,3,802),(1104,4,803), +(1105,1,804),(1105,2,805),(1114,0,806),(1114,1,807),(1114,2,808),(1115,1,809),(1115,2,810),(1115,3,811),(1115,4,812),(1115,5,813),(1115,6,814),(1115,7,815),(1115,8,816),(1115,9,817),(1115,10,818), +(1115,11,819),(1115,12,820),(1115,13,821),(1115,14,822),(1116,0,823),(1126,0,824),(1127,1,825),(1129,1,826),(1130,1,827),(1131,1,828),(1132,1,829),(1135,0,830),(1135,1,831),(1135,2,832),(1135,7,833), +(1136,0,834),(1137,1,835),(1137,2,836),(1139,0,837),(1140,0,838),(1142,1,839),(1143,1,840),(1143,2,841),(1143,3,842),(1144,0,843),(1145,0,844),(1146,1,845),(1146,2,846),(1146,3,847),(1146,4,848), +(1146,5,849),(1147,1,850),(1147,2,851),(1147,3,852),(1147,4,853),(1147,5,854),(1147,6,855),(1147,7,856),(1148,1,857),(1149,0,858),(1150,0,859),(1151,0,860),(1152,0,861),(1153,0,862),(1154,0,863), +(1155,0,864),(1156,1,865),(1156,2,866),(1157,1,867),(1158,1,868),(1159,1,869),(1159,2,870),(1160,0,871),(1161,0,872),(1161,1,873),(1161,2,874),(1162,0,875),(1163,0,876),(1164,0,877),(1165,0,878), +(1165,1,879),(1165,2,880),(1166,1,881),(1170,0,882),(1170,3,883),(1170,4,884),(1171,0,885),(1171,5,886),(1171,6,887),(1172,1,888),(1173,1,889),(1173,2,890),(1174,0,891),(1174,1,892),(1174,2,893), +(1174,3,894),(1175,0,895),(1176,0,896),(1177,0,897),(1177,1,898),(1177,2,899),(1177,3,900),(1177,4,901),(1177,5,902),(1178,0,903),(1183,0,904),(1184,0,905),(1185,0,906),(1186,0,907),(1187,0,908), +(1188,0,909),(1188,1,910),(1188,2,911),(1188,3,912),(1188,4,913),(1188,5,914),(1188,6,915),(1188,7,916),(1188,8,917),(1188,9,918),(1188,10,919),(1188,11,920),(1190,0,921),(1191,0,922),(1192,0,923), +(1193,0,924),(1194,0,925),(1195,0,926),(1196,0,927),(1197,0,928),(1198,0,929),(1199,0,930),(1200,0,931),(1201,0,932),(1202,0,933),(1204,1,934),(1204,2,935),(1205,0,936),(1210,0,938),(1211,0,939), +(1212,1,940),(1212,2,941),(1213,0,942),(1214,0,943),(1215,0,971),(1216,0,972),(1217,1,973),(1219,0,974),(1219,1,975),(1219,2,976),(1219,3,977),(1219,4,978),(1219,5,979),(1219,6,980),(1220,0,981), +(32,21,42),(974,0,582),(1121,0,646),(992,0,17),(981,0,590),(991,0,582),(990,0,590),(975,0,582),(910,0,418),(910,1,419),(910,2,420),(910,3,421),(907,0,70),(905,4,394),(321,2,85),(510,1,127),(522,0,132); + +UPDATE `quest_poi` SET `UiMapID`=(SELECT wma.`UiMapID` FROM `world_map_area_to_ui_map` wma WHERE wma.`WorldMapAreaID`=`quest_poi`.`WorldMapAreaID` AND wma.`Floor`=`quest_poi`.`Floor`); +UPDATE `scenario_poi` SET `UiMapID`=(SELECT wma.`UiMapID` FROM `world_map_area_to_ui_map` wma WHERE wma.`WorldMapAreaID`=`scenario_poi`.`WorldMapAreaID` AND wma.`Floor`=`scenario_poi`.`Floor`); + +DROP TABLE IF EXISTS `world_map_area_to_ui_map`; + +DELETE FROM `quest_poi` WHERE `UiMapID` IS NULL; +DELETE FROM `scenario_poi` WHERE `UiMapID` IS NULL; + +ALTER TABLE `quest_poi` + CHANGE `UiMapID` `UiMapID` int(11) NOT NULL DEFAULT '0' AFTER `MapID`, + DROP `WorldMapAreaID`, + DROP `Floor`; + +ALTER TABLE `scenario_poi` + CHANGE `UiMapID` `UiMapID` int(11) NOT NULL DEFAULT '0' AFTER `MapID`, + DROP `WorldMapAreaID`, + DROP `Floor`; + +ALTER TABLE `spell_areatrigger` + ADD `AnimId` int(11) NOT NULL DEFAULT '0' AFTER `FacingCurveId`, + ADD `AnimKitId` int(11) NOT NULL DEFAULT '0' AFTER `AnimId`; diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp index a0646a0b1c1..967104b65cf 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.cpp +++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp @@ -36,6 +36,9 @@ void HotfixDatabaseConnection::DoPrepareStatements() "Points, Flags, UiOrder, IconFileID, CriteriaTree, SharesCriteria FROM achievement ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_ACHIEVEMENT, "SELECT ID, Description_lang, Title_lang, Reward_lang FROM achievement_locale WHERE locale = ?", CONNECTION_SYNCH); + // AnimationData.db2 + PrepareStatement(HOTFIX_SEL_ANIMATION_DATA, "SELECT ID, Fallback, BehaviorTier, BehaviorID, Flags1, Flags2 FROM animation_data ORDER BY ID DESC", CONNECTION_SYNCH); + // AnimKit.db2 PrepareStatement(HOTFIX_SEL_ANIM_KIT, "SELECT ID, OneShotDuration, OneShotStopAnimKitID, LowDefAnimKitID FROM anim_kit ORDER BY ID DESC", CONNECTION_SYNCH); @@ -684,6 +687,10 @@ void HotfixDatabaseConnection::DoPrepareStatements() // NamesReservedLocale.db2 PrepareStatement(HOTFIX_SEL_NAMES_RESERVED_LOCALE, "SELECT ID, Name, LocaleMask FROM names_reserved_locale ORDER BY ID DESC", CONNECTION_SYNCH); + // NumTalentsAtLevel.db2 + PrepareStatement(HOTFIX_SEL_NUM_TALENTS_AT_LEVEL, "SELECT ID, NumTalents, NumTalentsDeathKnight, NumTalentsDemonHunter FROM num_talents_at_level" + " ORDER BY ID DESC", CONNECTION_SYNCH); + // OverrideSpellData.db2 PrepareStatement(HOTFIX_SEL_OVERRIDE_SPELL_DATA, "SELECT ID, Spells1, Spells2, Spells3, Spells4, Spells5, Spells6, Spells7, Spells8, Spells9, " "Spells10, PlayerActionBarFileDataID, Flags FROM override_spell_data ORDER BY ID DESC", CONNECTION_SYNCH); diff --git a/src/server/database/Database/Implementation/HotfixDatabase.h b/src/server/database/Database/Implementation/HotfixDatabase.h index 655cdc376a6..ce2120cf648 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.h +++ b/src/server/database/Database/Implementation/HotfixDatabase.h @@ -34,6 +34,8 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_ACHIEVEMENT, HOTFIX_SEL_ACHIEVEMENT_LOCALE, + HOTFIX_SEL_ANIMATION_DATA, + HOTFIX_SEL_ANIM_KIT, HOTFIX_SEL_AREA_GROUP_MEMBER, @@ -364,6 +366,8 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_NAMES_RESERVED_LOCALE, + HOTFIX_SEL_NUM_TALENTS_AT_LEVEL, + HOTFIX_SEL_OVERRIDE_SPELL_DATA, HOTFIX_SEL_PHASE, diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index b6e6908faad..bef431b367f 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -1787,9 +1787,7 @@ bool CriteriaHandler::AdditionalRequirementsSatisfied(ModifierTreeNode const* tr return false; break; case CRITERIA_ADDITIONAL_CONDITION_PRESTIGE_LEVEL: // 194 - if (!referencePlayer || referencePlayer->GetPrestigeLevel() != reqValue) - return false; - break; + return false; default: break; } diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 3ddca3a7b33..e63accbb018 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -1289,9 +1289,10 @@ void Battleground::BuildPvPLogDataPacket(WorldPackets::Battleground::PVPLogData& { playerData.IsInWorld = true; playerData.PrimaryTalentTree = player->GetUInt32Value(PLAYER_FIELD_CURRENT_SPEC_ID); - playerData.PrimaryTalentTreeNameIndex = 0; + playerData.Sex = player->getGender(); playerData.Race = player->getRace(); - playerData.Prestige = player->GetPrestigeLevel(); + playerData.Class = player->getClass(); + playerData.HonorLevel = player->GetHonorLevel(); } pvpLogData.Players.push_back(playerData); diff --git a/src/server/game/Calendar/CalendarMgr.cpp b/src/server/game/Calendar/CalendarMgr.cpp index cf4898d8099..73d6c49f7ff 100644 --- a/src/server/game/Calendar/CalendarMgr.cpp +++ b/src/server/game/Calendar/CalendarMgr.cpp @@ -463,6 +463,7 @@ void CalendarMgr::SendCalendarEventUpdateAlert(CalendarEvent const& calendarEven packet.ClearPending = true; // FIXME packet.Date = calendarEvent.GetDate(); packet.Description = calendarEvent.GetDescription(); + packet.EventClubID = calendarEvent.GetGuildId(); packet.EventID = calendarEvent.GetEventId(); packet.EventName = calendarEvent.GetTitle(); packet.EventType = calendarEvent.GetType(); @@ -534,18 +535,15 @@ void CalendarMgr::SendCalendarEventInviteAlert(CalendarEvent const& calendarEven packet.OwnerGuid = calendarEvent.GetOwnerGUID(); packet.Status = invite.GetStatus(); packet.TextureID = calendarEvent.GetTextureId(); - - Guild* guild = sGuildMgr->GetGuildById(calendarEvent.GetGuildId()); - packet.EventGuildID = guild ? guild->GetGUID() : ObjectGuid::Empty; + packet.EventClubID = calendarEvent.GetGuildId(); if (calendarEvent.IsGuildEvent() || calendarEvent.IsGuildAnnouncement()) { - if (guild) + if (Guild* guild = sGuildMgr->GetGuildById(calendarEvent.GetGuildId())) guild->BroadcastPacket(packet.Write()); } - else - if (Player* player = ObjectAccessor::FindConnectedPlayer(invite.GetInviteeGUID())) - player->SendDirectMessage(packet.Write()); + else if (Player* player = ObjectAccessor::FindConnectedPlayer(invite.GetInviteeGUID())) + player->SendDirectMessage(packet.Write()); } void CalendarMgr::SendCalendarEvent(ObjectGuid guid, CalendarEvent const& calendarEvent, CalendarSendEventType sendType) @@ -567,9 +565,7 @@ void CalendarMgr::SendCalendarEvent(ObjectGuid guid, CalendarEvent const& calend packet.LockDate = calendarEvent.GetLockDate(); // Always 0 ? packet.OwnerGuid = calendarEvent.GetOwnerGUID(); packet.TextureID = calendarEvent.GetTextureId(); - - Guild* guild = sGuildMgr->GetGuildById(calendarEvent.GetGuildId()); - packet.EventGuildID = (guild ? guild->GetGUID() : ObjectGuid::Empty); + packet.EventClubID = calendarEvent.GetGuildId(); for (auto const& calendarInvite : eventInviteeList) { diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h index bf831521cba..81ba8e1d6df 100644 --- a/src/server/game/DataStores/DB2LoadInfo.h +++ b/src/server/game/DataStores/DB2LoadInfo.h @@ -51,6 +51,24 @@ struct AchievementLoadInfo } }; +struct AnimationDataLoadInfo +{ + static DB2LoadInfo const* Instance() + { + static DB2FieldMeta const fields[] = + { + { false, FT_INT, "ID" }, + { false, FT_SHORT, "Fallback" }, + { false, FT_BYTE, "BehaviorTier" }, + { true, FT_INT, "BehaviorID" }, + { true, FT_INT, "Flags1" }, + { true, FT_INT, "Flags2" }, + }; + static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, AnimationDataMeta::Instance(), HOTFIX_SEL_ANIMATION_DATA); + return &loadInfo; + } +}; + struct AnimKitLoadInfo { static DB2LoadInfo const* Instance() @@ -3384,6 +3402,22 @@ struct NamesReservedLocaleLoadInfo } }; +struct NumTalentsAtLevelLoadInfo +{ + static DB2LoadInfo const* Instance() + { + static DB2FieldMeta const fields[] = + { + { false, FT_INT, "ID" }, + { true, FT_INT, "NumTalents" }, + { true, FT_INT, "NumTalentsDeathKnight" }, + { true, FT_INT, "NumTalentsDemonHunter" }, + }; + static DB2LoadInfo const loadInfo(&fields[0], std::extent::value, NumTalentsAtLevelMeta::Instance(), HOTFIX_SEL_NUM_TALENTS_AT_LEVEL); + return &loadInfo; + } +}; + struct OverrideSpellDataLoadInfo { static DB2LoadInfo const* Instance() diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index 0adeac47f51..59b99139d8c 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -37,6 +37,7 @@ #endif DB2Storage sAchievementStore("Achievement.db2", AchievementLoadInfo::Instance()); +DB2Storage sAnimationDataStore("AnimationData.db2", AnimationDataLoadInfo::Instance()); DB2Storage sAnimKitStore("AnimKit.db2", AnimKitLoadInfo::Instance()); DB2Storage sAreaGroupMemberStore("AreaGroupMember.db2", AreaGroupMemberLoadInfo::Instance()); DB2Storage sAreaTableStore("AreaTable.db2", AreaTableLoadInfo::Instance()); @@ -182,6 +183,7 @@ DB2Storage sNameGenStore("NameGen.db2", Nam DB2Storage sNamesProfanityStore("NamesProfanity.db2", NamesProfanityLoadInfo::Instance()); DB2Storage sNamesReservedStore("NamesReserved.db2", NamesReservedLoadInfo::Instance()); DB2Storage sNamesReservedLocaleStore("NamesReservedLocale.db2", NamesReservedLocaleLoadInfo::Instance()); +DB2Storage sNumTalentsAtLevelStore("NumTalentsAtLevel.db2", NumTalentsAtLevelLoadInfo::Instance()); DB2Storage sOverrideSpellDataStore("OverrideSpellData.db2", OverrideSpellDataLoadInfo::Instance()); DB2Storage sPhaseStore("Phase.db2", PhaseLoadInfo::Instance()); DB2Storage sPhaseXPhaseGroupStore("PhaseXPhaseGroup.db2", PhaseXPhaseGroupLoadInfo::Instance()); @@ -490,6 +492,7 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) #define LOAD_DB2(store) LoadDB2(availableDb2Locales, bad_db2_files, _stores, &store, db2Path, defaultLocale, store) LOAD_DB2(sAchievementStore); + LOAD_DB2(sAnimationDataStore); LOAD_DB2(sAnimKitStore); LOAD_DB2(sAreaGroupMemberStore); LOAD_DB2(sAreaTableStore); @@ -634,6 +637,7 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) LOAD_DB2(sNamesProfanityStore); LOAD_DB2(sNamesReservedStore); LOAD_DB2(sNamesReservedLocaleStore); + LOAD_DB2(sNumTalentsAtLevelStore); LOAD_DB2(sOverrideSpellDataStore); LOAD_DB2(sPhaseStore); LOAD_DB2(sPhaseXPhaseGroupStore); @@ -2102,6 +2106,28 @@ ResponseCodes DB2Manager::ValidateName(std::wstring const& name, LocaleConstant return CHAR_NAME_SUCCESS; } +int32 DB2Manager::GetNumTalentsAtLevel(uint32 level, Classes playerClass) +{ + NumTalentsAtLevelEntry const* numTalentsAtLevel = sNumTalentsAtLevelStore.LookupEntry(level); + if (!numTalentsAtLevel) + numTalentsAtLevel = sNumTalentsAtLevelStore.LookupEntry(sNumTalentsAtLevelStore.GetNumRows() - 1); + + if (numTalentsAtLevel) + { + switch (playerClass) + { + case CLASS_DEATH_KNIGHT: + return numTalentsAtLevel->NumTalentsDeathKnight; + case CLASS_DEMON_HUNTER: + return numTalentsAtLevel->NumTalentsDemonHunter; + default: + return numTalentsAtLevel->NumTalents; + } + } + + return 0; +} + PVPDifficultyEntry const* DB2Manager::GetBattlegroundBracketByLevel(uint32 mapid, uint32 level) { PVPDifficultyEntry const* maxEntry = nullptr; // used for level > max listed level case @@ -2152,6 +2178,16 @@ uint32 DB2Manager::GetRequiredLevelForPvpTalentSlot(uint8 slot, Classes class_) return 0; } +int32 DB2Manager::GetPvpTalentNumSlotsAtLevel(uint32 level, Classes class_) const +{ + int32 slots = 0; + for (uint8 slot = 0; slot < MAX_PVP_TALENT_SLOTS; ++slot) + if (level >= GetRequiredLevelForPvpTalentSlot(slot, class_)) + ++slots; + + return slots; +} + std::vector const* DB2Manager::GetQuestPackageItems(uint32 questPackageID) const { auto itr = _questPackages.find(questPackageID); diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h index 46a0dee2095..06f8635c908 100644 --- a/src/server/game/DataStores/DB2Stores.h +++ b/src/server/game/DataStores/DB2Stores.h @@ -35,6 +35,7 @@ class DB2HotfixGeneratorBase; TC_GAME_API extern DB2Storage sAchievementStore; +TC_GAME_API extern DB2Storage sAnimationDataStore; TC_GAME_API extern DB2Storage sAnimKitStore; TC_GAME_API extern DB2Storage sAreaTableStore; TC_GAME_API extern DB2Storage sAreaTriggerStore; @@ -301,12 +302,13 @@ public: MapDifficultyEntry const* GetDefaultMapDifficulty(uint32 mapId, Difficulty* difficulty = nullptr) const; MapDifficultyEntry const* GetMapDifficultyData(uint32 mapId, Difficulty difficulty) const; MapDifficultyEntry const* GetDownscaledMapDifficultyData(uint32 mapId, Difficulty &difficulty) const; - std::string GetNameGenEntry(uint8 race, uint8 gender) const; MountEntry const* GetMount(uint32 spellId) const; MountEntry const* GetMountById(uint32 id) const; MountTypeXCapabilitySet const* GetMountCapabilities(uint32 mountType) const; MountXDisplayContainer const* GetMountDisplays(uint32 mountId) const; + std::string GetNameGenEntry(uint8 race, uint8 gender) const; ResponseCodes ValidateName(std::wstring const& name, LocaleConstant locale) const; + static int32 GetNumTalentsAtLevel(uint32 level, Classes playerClass); std::vector const* GetPhasesForGroup(uint32 group) const; PowerTypeEntry const* GetPowerTypeEntry(Powers power) const; PowerTypeEntry const* GetPowerTypeByName(std::string const& name) const; @@ -314,6 +316,7 @@ public: static PVPDifficultyEntry const* GetBattlegroundBracketByLevel(uint32 mapid, uint32 level); static PVPDifficultyEntry const* GetBattlegroundBracketById(uint32 mapid, BattlegroundBracketId id); uint32 GetRequiredLevelForPvpTalentSlot(uint8 slot, Classes class_) const; + int32 GetPvpTalentNumSlotsAtLevel(uint32 level, Classes class_) const; std::vector const* GetQuestPackageItems(uint32 questPackageID) const; std::vector const* GetQuestPackageItemsFallback(uint32 questPackageID) const; uint32 GetQuestUniqueBitFlag(uint32 questId); diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index fa8aa435673..0c38d0fb213 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -45,6 +45,15 @@ struct AchievementEntry int16 SharesCriteria; // referenced achievement (counting of all completed criterias) }; +struct AnimationDataEntry +{ + uint32 ID; + uint16 Fallback; + uint8 BehaviorTier; + int32 BehaviorID; + int32 Flags[2]; +}; + struct AnimKitEntry { uint32 ID; @@ -2052,6 +2061,14 @@ struct NamesReservedLocaleEntry uint8 LocaleMask; }; +struct NumTalentsAtLevelEntry +{ + uint32 ID; + int32 NumTalents; + int32 NumTalentsDeathKnight; + int32 NumTalentsDemonHunter; +}; + #define MAX_OVERRIDE_SPELL 10 struct OverrideSpellDataEntry diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp index b03bdab76ce..4e4e70e1b0a 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp @@ -46,7 +46,8 @@ AreaTrigger::AreaTrigger() : WorldObject(false), MapObject(), _aurEff(nullptr), m_objectType |= TYPEMASK_AREATRIGGER; m_objectTypeId = TYPEID_AREATRIGGER; - m_updateFlag = UPDATEFLAG_STATIONARY_POSITION | UPDATEFLAG_AREATRIGGER; + m_updateFlag.Stationary = true; + m_updateFlag.AreaTrigger = true; m_valuesCount = AREATRIGGER_END; _dynamicValuesCount = AREATRIGGER_DYNAMIC_END; @@ -142,7 +143,7 @@ bool AreaTrigger::Create(uint32 spellMiscId, Unit* caster, Unit* target, SpellIn { AreaTriggerCircularMovementInfo cmi = GetMiscTemplate()->CircularMovementInfo; if (target && GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_ATTACHED)) - cmi.TargetGUID = target->GetGUID(); + cmi.PathTarget = target->GetGUID(); else cmi.Center = pos; @@ -637,12 +638,12 @@ void AreaTrigger::InitSplines(std::vector splinePoints, uint32 tim { if (_reachedDestination) { - WorldPackets::AreaTrigger::AreaTriggerReShape reshape; + WorldPackets::AreaTrigger::AreaTriggerRePath reshape; reshape.TriggerGUID = GetGUID(); SendMessageToSet(reshape.Write(), true); } - WorldPackets::AreaTrigger::AreaTriggerReShape reshape; + WorldPackets::AreaTrigger::AreaTriggerRePath reshape; reshape.TriggerGUID = GetGUID(); reshape.AreaTriggerSpline = boost::in_place(); reshape.AreaTriggerSpline->ElapsedTimeForMovement = GetElapsedTimeForMovement(); @@ -664,7 +665,7 @@ bool AreaTrigger::HasSplines() const void AreaTrigger::InitCircularMovement(AreaTriggerCircularMovementInfo const& cmi, uint32 timeToTarget) { // Circular movement requires either a center position or an attached unit - ASSERT(cmi.Center.is_initialized() || cmi.TargetGUID.is_initialized()); + ASSERT(cmi.Center.is_initialized() || cmi.PathTarget.is_initialized()); // should be sent in object create packets only m_uint32Values[AREATRIGGER_TIME_TO_TARGET] = timeToTarget; @@ -676,7 +677,7 @@ void AreaTrigger::InitCircularMovement(AreaTriggerCircularMovementInfo const& cm if (IsInWorld()) { - WorldPackets::AreaTrigger::AreaTriggerReShape reshape; + WorldPackets::AreaTrigger::AreaTriggerRePath reshape; reshape.TriggerGUID = GetGUID(); reshape.AreaTriggerCircularMovement = _circularMovementInfo; @@ -691,11 +692,11 @@ bool AreaTrigger::HasCircularMovement() const Position const* AreaTrigger::GetCircularMovementCenterPosition() const { - if (_circularMovementInfo.is_initialized()) + if (!_circularMovementInfo.is_initialized()) return nullptr; - if (_circularMovementInfo->TargetGUID.is_initialized()) - if (WorldObject* center = ObjectAccessor::GetWorldObject(*this, *_circularMovementInfo->TargetGUID)) + if (_circularMovementInfo->PathTarget.is_initialized()) + if (WorldObject* center = ObjectAccessor::GetWorldObject(*this, *_circularMovementInfo->PathTarget)) return center; if (_circularMovementInfo->Center.is_initialized()) diff --git a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp index 633988b17b0..431c4cc7d57 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp @@ -96,6 +96,9 @@ AreaTriggerMiscTemplate::AreaTriggerMiscTemplate() MorphCurveId = 0; FacingCurveId = 0; + AnimId = 0; + AnimKitId = 0; + DecalPropertiesId = 0; TimeToTarget = 0; diff --git a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h index 35be0f40f7f..2371c65cf09 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h +++ b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h @@ -36,10 +36,11 @@ enum AreaTriggerFlags AREATRIGGER_FLAG_HAS_FOLLOWS_TERRAIN = 0x00010, // NYI AREATRIGGER_FLAG_UNK1 = 0x00020, AREATRIGGER_FLAG_HAS_TARGET_ROLL_PITCH_YAW = 0x00040, // NYI - AREATRIGGER_FLAG_UNK2 = 0x00080, + AREATRIGGER_FLAG_HAS_ANIM_ID = 0x00080, AREATRIGGER_FLAG_UNK3 = 0x00100, - AREATRIGGER_FLAG_UNK4 = 0x00200, - AREATRIGGER_FLAG_HAS_CIRCULAR_MOVEMENT = 0x00400 + AREATRIGGER_FLAG_HAS_ANIM_KIT_ID = 0x00200, + AREATRIGGER_FLAG_HAS_CIRCULAR_MOVEMENT = 0x00400, + AREATRIGGER_FLAG_UNK5 = 0x00800, }; enum AreaTriggerTypes @@ -96,7 +97,7 @@ struct AreaTriggerScaleInfo struct AreaTriggerCircularMovementInfo { - Optional TargetGUID; + Optional PathTarget; Optional> Center; bool CounterClockwise = false; bool CanLoop = false; @@ -190,6 +191,9 @@ public: uint32 MorphCurveId; uint32 FacingCurveId; + int32 AnimId; + int32 AnimKitId; + uint32 DecalPropertiesId; uint32 TimeToTarget; diff --git a/src/server/game/Entities/Conversation/Conversation.cpp b/src/server/game/Entities/Conversation/Conversation.cpp index 13339f3169f..0445f8ff6bc 100644 --- a/src/server/game/Entities/Conversation/Conversation.cpp +++ b/src/server/game/Entities/Conversation/Conversation.cpp @@ -30,7 +30,8 @@ Conversation::Conversation() : WorldObject(false), _duration(0) m_objectType |= TYPEMASK_CONVERSATION; m_objectTypeId = TYPEID_CONVERSATION; - m_updateFlag = UPDATEFLAG_STATIONARY_POSITION; + m_updateFlag.Stationary = true; + m_updateFlag.Conversation = true; m_valuesCount = CONVERSATION_END; _dynamicValuesCount = CONVERSATION_DYNAMIC_END; @@ -123,13 +124,15 @@ bool Conversation::Create(ObjectGuid::LowType lowGuid, uint32 conversationEntry, SetUInt32Value(CONVERSATION_LAST_LINE_END_TIME, conversationTemplate->LastLineEndTime); _duration = conversationTemplate->LastLineEndTime; + _textureKitId = conversationTemplate->TextureKitId; for (uint16 actorIndex = 0; actorIndex < conversationTemplate->Actors.size(); ++actorIndex) { if (ConversationActorTemplate const* actor = conversationTemplate->Actors[actorIndex]) { ConversationDynamicFieldActor actorField; - actorField.ActorTemplate = *actor; + actorField.ActorTemplate.CreatureId = actor->CreatureId; + actorField.ActorTemplate.CreatureModelId = actor->CreatureModelId; actorField.Type = ConversationDynamicFieldActor::ActorType::CreatureActor; SetDynamicStructuredValue(CONVERSATION_DYNAMIC_FIELD_ACTORS, actorIndex, &actorField); } diff --git a/src/server/game/Entities/Conversation/Conversation.h b/src/server/game/Entities/Conversation/Conversation.h index 860264b1de8..ddc44ddfea9 100644 --- a/src/server/game/Entities/Conversation/Conversation.h +++ b/src/server/game/Entities/Conversation/Conversation.h @@ -47,8 +47,11 @@ struct ConversationDynamicFieldActor union { ObjectGuid ActorGuid; - - ConversationActorTemplate ActorTemplate; + struct + { + uint32 CreatureId; + uint32 CreatureModelId; + } ActorTemplate; struct { @@ -75,6 +78,7 @@ class TC_GAME_API Conversation : public WorldObject, public GridObjectBaseAttackTime); diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index 58c77eb63b6..89b553d0792 100644 --- a/src/server/game/Entities/Creature/GossipDef.cpp +++ b/src/server/game/Entities/Creature/GossipDef.cpp @@ -286,6 +286,7 @@ void PlayerMenu::SendPointOfInterest(uint32 id) const } WorldPackets::NPC::GossipPOI packet; + packet.ID = pointOfInterest->ID; packet.Name = pointOfInterest->Name; LocaleConstant localeConstant = _session->GetSessionDbLocaleIndex(); @@ -438,6 +439,7 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGU packet.InformUnit = _session->GetPlayer()->GetDivider(); packet.QuestID = quest->GetQuestId(); packet.PortraitGiver = quest->GetQuestGiverPortrait(); + packet.PortraitGiverMount = quest->GetQuestGiverPortraitMount(); packet.PortraitTurnIn = quest->GetQuestTurnInPortrait(); packet.AutoLaunched = autoLaunched; packet.DisplayPopup = displayPopup; @@ -512,6 +514,7 @@ void PlayerMenu::SendQuestQueryResponse(Quest const* quest) const packet.Info.QuestID = quest->GetQuestId(); packet.Info.QuestType = quest->GetQuestType(); packet.Info.QuestLevel = quest->GetQuestLevel(); + packet.Info.QuestScalingFactionGroup = quest->GetQuestScalingFactionGroup(); packet.Info.QuestMaxScalingLevel = quest->GetQuestMaxScalingLevel(); packet.Info.QuestPackageID = quest->GetQuestPackageID(); packet.Info.QuestMinLevel = quest->GetMinLevel(); @@ -543,12 +546,14 @@ void PlayerMenu::SendQuestQueryResponse(Quest const* quest) const packet.Info.StartItem = quest->GetSrcItemId(); packet.Info.Flags = quest->GetFlags(); packet.Info.FlagsEx = quest->GetFlagsEx(); + packet.Info.FlagsEx2 = quest->GetFlagsEx2(); packet.Info.RewardTitle = quest->GetRewTitle(); packet.Info.RewardArenaPoints = quest->GetRewArenaPoints(); packet.Info.RewardSkillLineID = quest->GetRewardSkillId(); packet.Info.RewardNumSkillUps = quest->GetRewardSkillPoints(); packet.Info.RewardFactionFlags = quest->GetRewardReputationMask(); packet.Info.PortraitGiver = quest->GetQuestGiverPortrait(); + packet.Info.PortraitGiverMount = quest->GetQuestGiverPortraitMount(); packet.Info.PortraitTurnIn = quest->GetQuestTurnInPortrait(); for (uint8 i = 0; i < QUEST_ITEM_DROP_COUNT; ++i) @@ -585,7 +590,7 @@ void PlayerMenu::SendQuestQueryResponse(Quest const* quest) const packet.Info.POIPriority = quest->GetPOIPriority(); packet.Info.AllowableRaces = quest->GetAllowableRaces(); - packet.Info.QuestRewardID = quest->GetRewardId(); + packet.Info.TreasurePickerID = quest->GetTreasurePickerId(); packet.Info.Expansion = quest->GetExpansion(); for (QuestObjective const& questObjective : quest->GetObjectives()) @@ -666,6 +671,7 @@ void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUI packet.PortraitTurnIn = quest->GetQuestTurnInPortrait(); packet.PortraitGiver = quest->GetQuestGiverPortrait(); + packet.PortraitGiverMount = quest->GetQuestGiverPortraitMount(); packet.QuestPackageID = quest->GetQuestPackageID(); _session->SendPacket(packet.Write()); diff --git a/src/server/game/Entities/DynamicObject/DynamicObject.cpp b/src/server/game/Entities/DynamicObject/DynamicObject.cpp index ed5e3dc043b..8ee595cb179 100644 --- a/src/server/game/Entities/DynamicObject/DynamicObject.cpp +++ b/src/server/game/Entities/DynamicObject/DynamicObject.cpp @@ -38,7 +38,7 @@ DynamicObject::DynamicObject(bool isWorldObject) : WorldObject(isWorldObject), m_objectType |= TYPEMASK_DYNAMICOBJECT; m_objectTypeId = TYPEID_DYNAMICOBJECT; - m_updateFlag = UPDATEFLAG_STATIONARY_POSITION; + m_updateFlag.Stationary = true; m_valuesCount = DYNAMICOBJECT_END; _dynamicValuesCount = DYNAMICOBJECT_DYNAMIC_END; diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 89b59a11ab2..435ccc5c9a9 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -61,7 +61,8 @@ GameObject::GameObject() : WorldObject(false), MapObject(), m_objectType |= TYPEMASK_GAMEOBJECT; m_objectTypeId = TYPEID_GAMEOBJECT; - m_updateFlag = (UPDATEFLAG_STATIONARY_POSITION | UPDATEFLAG_ROTATION); + m_updateFlag.Stationary = true; + m_updateFlag.Rotation = true; m_valuesCount = GAMEOBJECT_END; _dynamicValuesCount = GAMEOBJECT_DYNAMIC_END; @@ -238,7 +239,7 @@ bool GameObject::Create(uint32 entry, Map* map, Position const& pos, QuaternionD else { guid = ObjectGuid::Create(map->GenerateLowGuid()); - m_updateFlag |= UPDATEFLAG_TRANSPORT; + m_updateFlag.ServerTime = true; } Object::_Create(guid); @@ -271,7 +272,7 @@ bool GameObject::Create(uint32 entry, Map* map, Position const& pos, QuaternionD if (m_goTemplateAddon->WorldEffectID) { - m_updateFlag |= UPDATEFLAG_GAMEOBJECT; + m_updateFlag.GameObject = true; SetWorldEffectID(m_goTemplateAddon->WorldEffectID); } } @@ -292,6 +293,8 @@ bool GameObject::Create(uint32 entry, Map* map, Position const& pos, QuaternionD SetGoState(goState); SetGoArtKit(artKit); + SetUInt32Value(GAMEOBJECT_STATE_ANIM_ID, sAnimationDataStore.GetNumRows()); + switch (goInfo->type) { case GAMEOBJECT_TYPE_FISHINGHOLE: @@ -376,7 +379,7 @@ bool GameObject::Create(uint32 entry, Map* map, Position const& pos, QuaternionD if (gameObjectAddon && gameObjectAddon->WorldEffectID) { - m_updateFlag |= UPDATEFLAG_GAMEOBJECT; + m_updateFlag.GameObject = true; SetWorldEffectID(gameObjectAddon->WorldEffectID); } diff --git a/src/server/game/Entities/GameObject/GameObjectData.h b/src/server/game/Entities/GameObject/GameObjectData.h index c6411c24f0a..2bf4a423590 100644 --- a/src/server/game/Entities/GameObject/GameObjectData.h +++ b/src/server/game/Entities/GameObject/GameObjectData.h @@ -104,7 +104,7 @@ struct GameObjectTemplate uint32 usegrouplootrules; // 15 use group loot rules, enum { false, true, }; Default: false uint32 floatingTooltip; // 16 floatingTooltip, enum { false, true, }; Default: false uint32 conditionID1; // 17 conditionID1, References: PlayerCondition, NoValue = 0 - int32 xpLevel; // 18 xpLevel, int, Min value: -1, Max value: 123, Default value: 0 + uint32 XPLevelRange; // 18 XP Level Range, References: ContentTuning, NoValue = 0 uint32 xpDifficulty; // 19 xpDifficulty, enum { No Exp, Trivial, Very Small, Small, Substandard, Standard, High, Epic, Dungeon, 5, }; Default: No Exp uint32 lootLevel; // 20 lootLevel, int, Min value: 0, Max value: 123, Default value: 0 uint32 GroupXP; // 21 Group XP, enum { false, true, }; Default: false @@ -119,6 +119,7 @@ struct GameObjectTemplate uint32 chestPersonalLoot; // 30 chest Personal Loot, References: Treasure, NoValue = 0 uint32 turnpersonallootsecurityoff; // 31 turn personal loot security off, enum { false, true, }; Default: false uint32 ChestProperties; // 32 Chest Properties, References: ChestProperties, NoValue = 0 + uint32 chestPushLoot; // 33 chest Push Loot, References: Treasure, NoValue = 0 } chest; // 4 GAMEOBJECT_TYPE_BINDER struct @@ -331,6 +332,7 @@ struct GameObjectTemplate { uint32 creatureID; // 0 creatureID, References: Creature, NoValue = 0 uint32 charges; // 1 charges, int, Min value: 0, Max value: 65535, Default value: 1 + uint32 Preferonlyifinlineofsight; // 2 Prefer only if in line of sight (expensive), enum { false, true, }; Default: false } guardPost; // 22 GAMEOBJECT_TYPE_SPELLCASTER struct @@ -502,7 +504,10 @@ struct GameObjectTemplate uint32 startOpen; // 1 startOpen, enum { false, true, }; Default: false uint32 autoClose; // 2 autoClose (ms), int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 BlocksPathsDown; // 3 Blocks Paths Down, enum { false, true, }; Default: false - uint32 PathBlockerBump; // 4 Path Blocker Bump (ft), int, Min value: -2147483648, Max value: 2147483647, Default value: 0 + int32 PathBlockerBump; // 4 Path Blocker Bump (ft), int, Min value: -2147483648, Max value: 2147483647, Default value: 0 + uint32 GiganticAOI; // 5 Gigantic AOI, enum { false, true, }; Default: false + uint32 InfiniteAOI; // 6 Infinite AOI, enum { false, true, }; Default: false + uint32 DoorisOpaque; // 7 Door is Opaque (Disable portal on close), enum { false, true, }; Default: false } trapdoor; // 36 GAMEOBJECT_TYPE_NEW_FLAG struct @@ -580,7 +585,7 @@ struct GameObjectTemplate struct { int32 SpawnMap; // 0 Spawn Map, References: Map, NoValue = -1 - uint32 AreaNameSet; // 1 Area Name Set (Index), int, Min value: -2147483648, Max value: 2147483647, Default value: 0 + int32 AreaNameSet; // 1 Area Name Set (Index), int, Min value: -2147483648, Max value: 2147483647, Default value: 0 uint32 DoodadSetA; // 2 Doodad Set A, int, Min value: 0, Max value: 2147483647, Default value: 0 uint32 DoodadSetB; // 3 Doodad Set B, int, Min value: 0, Max value: 2147483647, Default value: 0 } phaseableMO; @@ -615,7 +620,7 @@ struct GameObjectTemplate // 48 GAMEOBJECT_TYPE_UI_LINK struct { - uint32 UILinkType; // 0 UI Link Type, enum { Adventure Journal, Obliterum Forge, }; Default: Adventure Journal + uint32 UILinkType; // 0 UI Link Type, enum { Adventure Journal, Obliterum Forge, Scrapping Machine, }; Default: Adventure Journal uint32 allowMounted; // 1 allowMounted, enum { false, true, }; Default: false uint32 GiganticAOI; // 2 Gigantic AOI, enum { false, true, }; Default: false uint32 spellFocusType; // 3 spellFocusType, References: SpellFocusObject, NoValue = 0 @@ -640,7 +645,7 @@ struct GameObjectTemplate uint32 openTextID; // 9 openTextID, References: BroadcastText, NoValue = 0 uint32 floatingTooltip; // 10 floatingTooltip, enum { false, true, }; Default: false uint32 conditionID1; // 11 conditionID1, References: PlayerCondition, NoValue = 0 - uint32 xpLevel; // 12 xpLevel, int, Min value: -1, Max value: 123, Default value: 0 + uint32 XPLevelRange; // 12 XP Level Range, References: ContentTuning, NoValue = 0 uint32 xpDifficulty; // 13 xpDifficulty, enum { No Exp, Trivial, Very Small, Small, Substandard, Standard, High, Epic, Dungeon, 5, }; Default: No Exp uint32 spell; // 14 spell, References: Spell, NoValue = 0 uint32 GiganticAOI; // 15 Gigantic AOI, enum { false, true, }; Default: false @@ -649,13 +654,45 @@ struct GameObjectTemplate uint32 MaxNumberofLoots; // 18 Max Number of Loots, int, Min value: 1, Max value: 40, Default value: 10 uint32 logloot; // 19 log loot, enum { false, true, }; Default: false uint32 linkedTrap; // 20 linkedTrap, References: GameObjects, NoValue = 0 + uint32 PlayOpenAnimationonOpening; // 21 Play Open Animation on Opening, enum { false, true, }; Default: false } gatheringNode; // 51 GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD struct { uint32 chestLoot; // 0 chestLoot, References: Treasure, NoValue = 0 uint32 WhenAvailable; // 1 When Available, References: GameObjectDisplayInfo, NoValue = 0 + uint32 open; // 2 open, References: Lock_, NoValue = 0 + uint32 openTextID; // 3 openTextID, References: BroadcastText, NoValue = 0 } challengeModeReward; + // 52 GAMEOBJECT_TYPE_MULTI + struct + { + uint32 MultiProperties; // 0 Multi Properties, References: MultiProperties, NoValue = 0 + } multi; + // 53 GAMEOBJECT_TYPE_SIEGEABLE_MULTI + struct + { + uint32 MultiProperties; // 0 Multi Properties, References: MultiProperties, NoValue = 0 + uint32 InitialDamage; // 1 Initial Damage, enum { None, Raw, Ratio, }; Default: None + } siegeableMulti; + // 54 GAMEOBJECT_TYPE_SIEGEABLE_MO + struct + { + uint32 SiegeableProperties; // 0 Siegeable Properties, References: SiegeableProperties, NoValue = 0 + uint32 DoodadSetA; // 1 Doodad Set A, int, Min value: 0, Max value: 2147483647, Default value: 0 + uint32 DoodadSetB; // 2 Doodad Set B, int, Min value: 0, Max value: 2147483647, Default value: 0 + uint32 DoodadSetC; // 3 Doodad Set C, int, Min value: 0, Max value: 2147483647, Default value: 0 + int32 SpawnMap; // 4 Spawn Map, References: Map, NoValue = -1 + int32 AreaNameSet; // 5 Area Name Set (Index), int, Min value: -2147483648, Max value: 2147483647, Default value: 0 + } siegeableMO; + // 55 GAMEOBJECT_TYPE_PVP_REWARD + struct + { + uint32 chestLoot; // 0 chestLoot, References: Treasure, NoValue = 0 + uint32 WhenAvailable; // 1 When Available, References: GameObjectDisplayInfo, NoValue = 0 + uint32 open; // 2 open, References: Lock_, NoValue = 0 + uint32 openTextID; // 3 openTextID, References: BroadcastText, NoValue = 0 + } pvpReward; struct { uint32 data[MAX_GAMEOBJECT_DATA]; @@ -708,6 +745,8 @@ struct GameObjectTemplate case GAMEOBJECT_TYPE_NEW_FLAG_DROP: return newflagdrop.open; case GAMEOBJECT_TYPE_CAPTURE_POINT: return capturePoint.open; case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.open; + case GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD: return challengeModeReward.open; + case GAMEOBJECT_TYPE_PVP_REWARD: return pvpReward.open; default: return 0; } } diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index d63d5246d5a..847c3c47c79 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -275,8 +275,6 @@ Item::Item() m_objectType |= TYPEMASK_ITEM; m_objectTypeId = TYPEID_ITEM; - m_updateFlag = 0; - m_valuesCount = ITEM_END; _dynamicValuesCount = ITEM_DYNAMIC_END; m_slot = 0; diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 201f5c1515c..9d8a17ecbd7 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -55,7 +55,7 @@ Object::Object() { m_objectTypeId = TYPEID_OBJECT; m_objectType = TYPEMASK_OBJECT; - m_updateFlag = UPDATEFLAG_NONE; + m_updateFlag.Clear(); m_uint32Values = nullptr; _dynamicValues = nullptr; @@ -170,12 +170,19 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c if (!target) return; - uint8 updateType = UPDATETYPE_CREATE_OBJECT; - uint32 flags = m_updateFlag; + uint8 updateType = UPDATETYPE_CREATE_OBJECT; + uint8 objectType = m_objectTypeId; + uint16 objectTypeMask = m_objectType; + CreateObjectBits flags = m_updateFlag; /** lower flag1 **/ if (target == this) // building packet for yourself - flags |= UPDATEFLAG_SELF; + { + flags.ThisIsYou = true; + flags.ActivePlayer = true; + objectType = TYPEID_ACTIVE_PLAYER; + objectTypeMask |= TYPEMASK_ACTIVE_PLAYER; + } switch (GetGUID().GetHigh()) { @@ -208,15 +215,14 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c if (WorldObject const* worldObject = dynamic_cast(this)) { - if (!(flags & UPDATEFLAG_LIVING)) - if (!worldObject->m_movementInfo.transport.guid.IsEmpty()) - flags |= UPDATEFLAG_TRANSPORT_POSITION; + if (!flags.MovementUpdate && !worldObject->m_movementInfo.transport.guid.IsEmpty()) + flags.MovementTransport = true; if (worldObject->GetAIAnimKitId() || worldObject->GetMovementAnimKitId() || worldObject->GetMeleeAnimKitId()) - flags |= UPDATEFLAG_ANIMKITS; + flags.AnimKit = true; } - if (flags & UPDATEFLAG_STATIONARY_POSITION) + if (flags.Stationary) { // UPDATETYPE_CREATE_OBJECT2 for some gameobject types... if (isType(TYPEMASK_GAMEOBJECT)) @@ -237,12 +243,13 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c if (Unit const* unit = ToUnit()) if (unit->GetVictim()) - flags |= UPDATEFLAG_HAS_TARGET; + flags.CombatVictim = true; ByteBuffer buf(0x400); buf << uint8(updateType); buf << GetGUID(); - buf << uint8(m_objectTypeId); + buf << uint8(objectType); + buf << uint32(objectTypeMask); BuildMovementUpdate(&buf, flags); BuildValuesUpdate(updateType, &buf, target); @@ -337,25 +344,8 @@ ObjectGuid const& Object::GetGuidValue(uint16 index) const return *((ObjectGuid*)&(m_uint32Values[index])); } -void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const -{ - bool NoBirthAnim = false; - bool EnablePortals = false; - bool PlayHoverAnim = false; - bool HasMovementUpdate = (flags & UPDATEFLAG_LIVING) != 0; - bool HasMovementTransport = (flags & UPDATEFLAG_TRANSPORT_POSITION) != 0; - bool Stationary = (flags & UPDATEFLAG_STATIONARY_POSITION) != 0; - bool CombatVictim = (flags & UPDATEFLAG_HAS_TARGET) != 0; - bool ServerTime = (flags & UPDATEFLAG_TRANSPORT) != 0; - bool VehicleCreate = (flags & UPDATEFLAG_VEHICLE) != 0; - bool AnimKitCreate = (flags & UPDATEFLAG_ANIMKITS) != 0; - bool Rotation = (flags & UPDATEFLAG_ROTATION) != 0; - bool HasAreaTrigger = (flags & UPDATEFLAG_AREATRIGGER) != 0; - bool HasGameObject = (flags & UPDATEFLAG_GAMEOBJECT) != 0; - bool ThisIsYou = (flags & UPDATEFLAG_SELF) != 0; - bool SmoothPhasing = false; - bool SceneObjCreate = false; - bool PlayerCreateData = GetTypeId() == TYPEID_PLAYER && ToUnit()->GetPowerIndex(POWER_RUNES) != MAX_POWERS; +void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags) const +{ std::vector const* PauseTimes = nullptr; uint32 PauseTimesCount = 0; if (GameObject const* go = ToGameObject()) @@ -367,26 +357,27 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const } } - data->WriteBit(NoBirthAnim); - data->WriteBit(EnablePortals); - data->WriteBit(PlayHoverAnim); - data->WriteBit(HasMovementUpdate); - data->WriteBit(HasMovementTransport); - data->WriteBit(Stationary); - data->WriteBit(CombatVictim); - data->WriteBit(ServerTime); - data->WriteBit(VehicleCreate); - data->WriteBit(AnimKitCreate); - data->WriteBit(Rotation); - data->WriteBit(HasAreaTrigger); - data->WriteBit(HasGameObject); - data->WriteBit(SmoothPhasing); - data->WriteBit(ThisIsYou); - data->WriteBit(SceneObjCreate); - data->WriteBit(PlayerCreateData); + data->WriteBit(flags.NoBirthAnim); + data->WriteBit(flags.EnablePortals); + data->WriteBit(flags.PlayHoverAnim); + data->WriteBit(flags.MovementUpdate); + data->WriteBit(flags.MovementTransport); + data->WriteBit(flags.Stationary); + data->WriteBit(flags.CombatVictim); + data->WriteBit(flags.ServerTime); + data->WriteBit(flags.Vehicle); + data->WriteBit(flags.AnimKit); + data->WriteBit(flags.Rotation); + data->WriteBit(flags.AreaTrigger); + data->WriteBit(flags.GameObject); + data->WriteBit(flags.SmoothPhasing); + data->WriteBit(flags.ThisIsYou); + data->WriteBit(flags.SceneObject); + data->WriteBit(flags.ActivePlayer); + data->WriteBit(flags.Conversation); data->FlushBits(); - if (HasMovementUpdate) + if (flags.MovementUpdate) { Unit const* unit = ToUnit(); bool HasFallDirection = unit->HasUnitMovementFlag(MOVEMENTFLAG_FALLING); @@ -457,6 +448,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const // *data << uint32(TransportID); // *data << float(Magnitude); // data->WriteBits(Type, 2); + // data->FlushBits(); //} if (HasSpline) @@ -465,7 +457,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const *data << uint32(PauseTimesCount); - if (Stationary) + if (flags.Stationary) { WorldObject const* self = static_cast(this); *data << float(self->GetStationaryX()); @@ -474,10 +466,10 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const *data << float(self->GetStationaryO()); } - if (CombatVictim) + if (flags.CombatVictim) *data << ToUnit()->GetVictim()->GetGUID(); // CombatVictim - if (ServerTime) + if (flags.ServerTime) { GameObject const* go = ToGameObject(); /** @TODO Use IsTransport() to also handle type 11 (TRANSPORT) @@ -491,14 +483,14 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const *data << uint32(getMSTime()); } - if (VehicleCreate) + if (flags.Vehicle) { Unit const* unit = ToUnit(); *data << uint32(unit->GetVehicleKit()->GetVehicleInfo()->ID); // RecID *data << float(unit->GetOrientation()); // InitialRawFacing } - if (AnimKitCreate) + if (flags.AnimKit) { WorldObject const* self = static_cast(this); *data << uint16(self->GetAIAnimKitId()); // AiID @@ -506,19 +498,19 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const *data << uint16(self->GetMeleeAnimKitId()); // MeleeID } - if (Rotation) + if (flags.Rotation) *data << uint64(ToGameObject()->GetPackedWorldRotation()); // Rotation if (PauseTimesCount) data->append(PauseTimes->data(), PauseTimes->size()); - if (HasMovementTransport) + if (flags.MovementTransport) { WorldObject const* self = static_cast(this); *data << self->m_movementInfo.transport; } - if (HasAreaTrigger) + if (flags.AreaTrigger) { AreaTrigger const* areaTrigger = ToAreaTrigger(); AreaTriggerMiscTemplate const* areaTriggerMiscTemplate = areaTrigger->GetMiscTemplate(); @@ -539,9 +531,10 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const bool hasMorphCurveID = areaTriggerMiscTemplate->MorphCurveId != 0; bool hasFacingCurveID = areaTriggerMiscTemplate->FacingCurveId != 0; bool hasMoveCurveID = areaTriggerMiscTemplate->MoveCurveId != 0; - bool hasUnk2 = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_UNK2); + bool hasAnimation = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_HAS_ANIM_ID); bool hasUnk3 = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_UNK3); - bool hasUnk4 = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_UNK4); + bool hasAnimKitID = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_HAS_ANIM_KIT_ID); + bool hasAnimProgress = false; bool hasAreaTriggerSphere = areaTriggerTemplate->IsSphere(); bool hasAreaTriggerBox = areaTriggerTemplate->IsBox(); bool hasAreaTriggerPolygon = areaTriggerTemplate->IsPolygon(); @@ -560,9 +553,10 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const data->WriteBit(hasMorphCurveID); data->WriteBit(hasFacingCurveID); data->WriteBit(hasMoveCurveID); - data->WriteBit(hasUnk2); + data->WriteBit(hasAnimation); + data->WriteBit(hasAnimKitID); data->WriteBit(hasUnk3); - data->WriteBit(hasUnk4); + data->WriteBit(hasAnimProgress); data->WriteBit(hasAreaTriggerSphere); data->WriteBit(hasAreaTriggerBox); data->WriteBit(hasAreaTriggerPolygon); @@ -598,10 +592,13 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const if (hasMoveCurveID) *data << uint32(areaTriggerMiscTemplate->MoveCurveId); - if (hasUnk2) - *data << int32(0); + if (hasAnimation) + *data << int32(areaTriggerMiscTemplate->AnimId); + + if (hasAnimKitID) + *data << int32(areaTriggerMiscTemplate->AnimKitId); - if (hasUnk4) + if (hasAnimProgress) *data << uint32(0); if (hasAreaTriggerSphere) @@ -648,7 +645,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const *data << *areaTrigger->GetCircularMovementInfo(); } - if (HasGameObject) + if (flags.GameObject) { bool bit8 = false; uint32 Int1 = 0; @@ -663,7 +660,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const *data << uint32(Int1); } - //if (SmoothPhasing) + //if (flags.SmoothPhasing) //{ // data->WriteBit(ReplaceActive); // data->WriteBit(HasReplaceObject); @@ -672,7 +669,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const // *data << ObjectGuid(ReplaceObject); //} - //if (SceneObjCreate) + //if (flags.SceneObject) //{ // data->WriteBit(HasLocalScriptData); // data->WriteBit(HasPetBattleFullUpdate); @@ -782,7 +779,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const // } //} - if (PlayerCreateData) + if (flags.ActivePlayer) { bool HasSceneInstanceIDs = false; bool HasRuneState = ToUnit()->GetPowerIndex(POWER_RUNES) != MAX_POWERS; @@ -809,6 +806,15 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const *data << uint8((baseCd - float(player->GetRuneCooldown(i))) / baseCd * 255); } } + + if (flags.Conversation) + { + Conversation const* self = ToConversation(); + if (data->WriteBit(self->GetTextureKitId() != 0)) + *data << uint32(self->GetTextureKitId()); + + data->FlushBits(); + } } void Object::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* target) const @@ -842,7 +848,11 @@ void Object::BuildDynamicValuesUpdate(uint8 updateType, ByteBuffer* data, Player if (!target) return; - std::size_t blockCount = UpdateMask::GetBlockCount(_dynamicValuesCount); + std::size_t valueCount = _dynamicValuesCount; + if (target != this && GetTypeId() == TYPEID_PLAYER) + valueCount = PLAYER_DYNAMIC_END; + + std::size_t blockCount = UpdateMask::GetBlockCount(valueCount); uint32* flags = nullptr; uint32 visibleFlag = GetDynamicUpdateFieldData(target, flags); @@ -851,7 +861,7 @@ void Object::BuildDynamicValuesUpdate(uint8 updateType, ByteBuffer* data, Player std::size_t maskPos = data->wpos(); data->resize(data->size() + blockCount * sizeof(UpdateMask::BlockType)); - for (uint16 index = 0; index < _dynamicValuesCount; ++index) + for (uint16 index = 0; index < valueCount; ++index) { std::vector const& values = _dynamicValues[index]; if (_fieldNotifyFlags & flags[index] || @@ -931,6 +941,16 @@ uint32 Object::GetUpdateFieldData(Player const* target, uint32*& flags) const if (((Item const*)this)->GetOwnerGUID() == target->GetGUID()) visibleFlag |= UF_FLAG_OWNER | UF_FLAG_ITEM_OWNER; break; + case TYPEID_AZERITE_EMPOWERED_ITEM: + flags = AzeriteEmpoweredItemUpdateFieldFlags; + if (((Item const*)this)->GetOwnerGUID() == target->GetGUID()) + visibleFlag |= UF_FLAG_OWNER | UF_FLAG_ITEM_OWNER; + break; + case TYPEID_AZERITE_ITEM: + flags = AzeriteItemUpdateFieldFlags; + if (((Item const*)this)->GetOwnerGUID() == target->GetGUID()) + visibleFlag |= UF_FLAG_OWNER | UF_FLAG_ITEM_OWNER; + break; case TYPEID_UNIT: case TYPEID_PLAYER: { @@ -972,6 +992,7 @@ uint32 Object::GetUpdateFieldData(Player const* target, uint32*& flags) const flags = ConversationUpdateFieldFlags; break; case TYPEID_OBJECT: + case TYPEID_ACTIVE_PLAYER: ABORT(); break; } @@ -990,6 +1011,8 @@ uint32 Object::GetDynamicUpdateFieldData(Player const* target, uint32*& flags) c { case TYPEID_ITEM: case TYPEID_CONTAINER: + case TYPEID_AZERITE_EMPOWERED_ITEM: + case TYPEID_AZERITE_ITEM: flags = ItemDynamicUpdateFieldFlags; if (((Item const*)this)->GetOwnerGUID() == target->GetGUID()) visibleFlag |= UF_FLAG_OWNER | UF_FLAG_ITEM_OWNER; diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 2ebea15a58d..79420076f5b 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -54,6 +54,33 @@ struct QuaternionData; typedef std::unordered_map UpdateDataMapType; +struct CreateObjectBits +{ + bool NoBirthAnim : 1; + bool EnablePortals : 1; + bool PlayHoverAnim : 1; + bool MovementUpdate : 1; + bool MovementTransport : 1; + bool Stationary : 1; + bool CombatVictim : 1; + bool ServerTime : 1; + bool Vehicle : 1; + bool AnimKit : 1; + bool Rotation : 1; + bool AreaTrigger : 1; + bool GameObject : 1; + bool SmoothPhasing : 1; + bool ThisIsYou : 1; + bool SceneObject : 1; + bool ActivePlayer : 1; + bool Conversation : 1; + + void Clear() + { + memset(this, 0, sizeof(CreateObjectBits)); + } +}; + namespace UpdateMask { typedef uint32 BlockType; @@ -298,14 +325,14 @@ class TC_GAME_API Object uint32 GetUpdateFieldData(Player const* target, uint32*& flags) const; uint32 GetDynamicUpdateFieldData(Player const* target, uint32*& flags) const; - void BuildMovementUpdate(ByteBuffer* data, uint32 flags) const; + void BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags) const; virtual void BuildValuesUpdate(uint8 updatetype, ByteBuffer* data, Player* target) const; virtual void BuildDynamicValuesUpdate(uint8 updatetype, ByteBuffer* data, Player* target) const; uint16 m_objectType; TypeID m_objectTypeId; - uint32 m_updateFlag; + CreateObjectBits m_updateFlag; union { diff --git a/src/server/game/Entities/Object/ObjectGuid.cpp b/src/server/game/Entities/Object/ObjectGuid.cpp index d5094aea2b0..f8ee803ed22 100644 --- a/src/server/game/Entities/Object/ObjectGuid.cpp +++ b/src/server/game/Entities/Object/ObjectGuid.cpp @@ -87,6 +87,7 @@ namespace SET_GUID_NAME(CommerceObj); SET_GUID_NAME(ClientSession); SET_GUID_NAME(Cast); + SET_GUID_NAME(ClientConnection); #undef SET_GUID_NAME } diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h index 941608f9493..0584c0d7262 100644 --- a/src/server/game/Entities/Object/ObjectGuid.h +++ b/src/server/game/Entities/Object/ObjectGuid.h @@ -30,35 +30,41 @@ enum TypeID { - TYPEID_OBJECT = 0, - TYPEID_ITEM = 1, - TYPEID_CONTAINER = 2, - TYPEID_UNIT = 3, - TYPEID_PLAYER = 4, - TYPEID_GAMEOBJECT = 5, - TYPEID_DYNAMICOBJECT = 6, - TYPEID_CORPSE = 7, - TYPEID_AREATRIGGER = 8, - TYPEID_SCENEOBJECT = 9, - TYPEID_CONVERSATION = 10 + TYPEID_OBJECT = 0, + TYPEID_ITEM = 1, + TYPEID_CONTAINER = 2, + TYPEID_AZERITE_EMPOWERED_ITEM = 3, + TYPEID_AZERITE_ITEM = 4, + TYPEID_UNIT = 5, + TYPEID_PLAYER = 6, + TYPEID_ACTIVE_PLAYER = 7, + TYPEID_GAMEOBJECT = 8, + TYPEID_DYNAMICOBJECT = 9, + TYPEID_CORPSE = 10, + TYPEID_AREATRIGGER = 11, + TYPEID_SCENEOBJECT = 12, + TYPEID_CONVERSATION = 13 }; -#define NUM_CLIENT_OBJECT_TYPES 11 +#define NUM_CLIENT_OBJECT_TYPES 14 enum TypeMask { - TYPEMASK_OBJECT = 0x0001, - TYPEMASK_ITEM = 0x0002, - TYPEMASK_CONTAINER = 0x0004, - TYPEMASK_UNIT = 0x0008, - TYPEMASK_PLAYER = 0x0010, - TYPEMASK_GAMEOBJECT = 0x0020, - TYPEMASK_DYNAMICOBJECT = 0x0040, - TYPEMASK_CORPSE = 0x0080, - TYPEMASK_AREATRIGGER = 0x0100, - TYPEMASK_SCENEOBJECT = 0x0200, - TYPEMASK_CONVERSATION = 0x0400, - TYPEMASK_SEER = TYPEMASK_PLAYER | TYPEMASK_UNIT | TYPEMASK_DYNAMICOBJECT + TYPEMASK_OBJECT = 0x0001, + TYPEMASK_ITEM = 0x0002, + TYPEMASK_CONTAINER = 0x0004, + TYPEMASK_AZERITE_EMPOWERED_ITEM = 0x0008, + TYPEMASK_AZERITE_ITEM = 0x0010, + TYPEMASK_UNIT = 0x0020, + TYPEMASK_PLAYER = 0x0040, + TYPEMASK_ACTIVE_PLAYER = 0x0080, + TYPEMASK_GAMEOBJECT = 0x0100, + TYPEMASK_DYNAMICOBJECT = 0x0200, + TYPEMASK_CORPSE = 0x0400, + TYPEMASK_AREATRIGGER = 0x0800, + TYPEMASK_SCENEOBJECT = 0x1000, + TYPEMASK_CONVERSATION = 0x2000, + TYPEMASK_SEER = TYPEMASK_PLAYER | TYPEMASK_UNIT | TYPEMASK_DYNAMICOBJECT }; enum class HighGuid @@ -111,6 +117,7 @@ enum class HighGuid CommerceObj = 45, ClientSession = 46, Cast = 47, + ClientConnection = 48, Count, }; @@ -349,6 +356,7 @@ class TC_GAME_API ObjectGuidGeneratorBase { public: ObjectGuidGeneratorBase(ObjectGuid::LowType start = UI64LIT(1)) : _nextGuid(start) { } + virtual ~ObjectGuidGeneratorBase() { } virtual void Set(uint64 val) { _nextGuid = val; } virtual ObjectGuid::LowType Generate() = 0; diff --git a/src/server/game/Entities/Object/Updates/UpdateData.h b/src/server/game/Entities/Object/Updates/UpdateData.h index 800948c4281..9d438ed625e 100644 --- a/src/server/game/Entities/Object/Updates/UpdateData.h +++ b/src/server/game/Entities/Object/Updates/UpdateData.h @@ -34,29 +34,6 @@ enum OBJECT_UPDATE_TYPE UPDATETYPE_OUT_OF_RANGE_OBJECTS = 3, }; -enum OBJECT_UPDATE_FLAGS -{ - UPDATEFLAG_NONE = 0x0000, - UPDATEFLAG_SELF = 0x0001, - UPDATEFLAG_TRANSPORT = 0x0002, - UPDATEFLAG_HAS_TARGET = 0x0004, - UPDATEFLAG_LIVING = 0x0008, - UPDATEFLAG_STATIONARY_POSITION = 0x0010, - UPDATEFLAG_VEHICLE = 0x0020, - UPDATEFLAG_TRANSPORT_POSITION = 0x0040, - UPDATEFLAG_ROTATION = 0x0080, - UPDATEFLAG_ANIMKITS = 0x0100, - UPDATEFLAG_AREATRIGGER = 0x0200, - UPDATEFLAG_GAMEOBJECT = 0x0400, - //UPDATEFLAG_REPLACE_ACTIVE = 0x0800, - //UPDATEFLAG_NO_BIRTH_ANIM = 0x1000, - //UPDATEFLAG_ENABLE_PORTALS = 0x2000, - //UPDATEFLAG_PLAY_HOVER_ANIM = 0x4000, - //UPDATEFLAG_IS_SUPPRESSING_GREETINGS = 0x8000 - //UPDATEFLAG_SCENEOBJECT = 0x10000, - //UPDATEFLAG_SCENE_PENDING_INSTANCE = 0x20000 -}; - class UpdateData { public: diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 34609ed6698..51db53c9c61 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2419,9 +2419,8 @@ void Player::GiveLevel(uint8 level) for (uint8 i = STAT_STRENGTH; i < MAX_STATS; ++i) packet.StatDelta[i] = int32(info.stats[i]) - GetCreateStat(Stats(i)); - uint32 const* rowLevels = (getClass() != CLASS_DEATH_KNIGHT) ? DefaultTalentRowLevels : DKTalentRowLevels; - - packet.Cp = std::find(rowLevels, rowLevels + MAX_TALENT_TIERS, level) != (rowLevels + MAX_TALENT_TIERS); + packet.NumNewTalents = DB2Manager::GetNumTalentsAtLevel(level, Classes(getClass())) - DB2Manager::GetNumTalentsAtLevel(oldLevel, Classes(getClass())); + packet.NumNewPvpTalentSlots = sDB2Manager.GetPvpTalentNumSlotsAtLevel(level, Classes(getClass())) - sDB2Manager.GetPvpTalentNumSlotsAtLevel(oldLevel, Classes(getClass())); GetSession()->SendPacket(packet.Write()); @@ -2505,7 +2504,7 @@ void Player::InitTalentForLevel() if (level < MIN_SPECIALIZATION_LEVEL) ResetTalentSpecialization(); - uint32 talentTiers = CalculateTalentsTiers(); + uint32 talentTiers = DB2Manager::GetNumTalentsAtLevel(level, Classes(getClass())); if (level < 15) { // Remove all talent points @@ -14570,6 +14569,38 @@ uint32 Player::GetDefaultGossipMenuForSource(WorldObject* source) /*** QUEST SYSTEM ***/ /*********************************************************/ +int32 Player::GetQuestMinLevel(Quest const* quest) const +{ + if (quest->GetQuestLevel() == -1 && quest->GetQuestScalingFactionGroup()) + { + ChrRacesEntry const* race = sChrRacesStore.AssertEntry(getRace()); + FactionTemplateEntry const* raceFaction = sFactionTemplateStore.LookupEntry(race->FactionID); + if (!raceFaction || raceFaction->FactionGroup != quest->GetQuestScalingFactionGroup()) + return quest->GetQuestMaxScalingLevel(); + } + + return quest->GetMinLevel(); +} + +int32 Player::GetQuestLevel(Quest const* quest) const +{ + if (!quest) + return 0; + + if (quest->GetQuestLevel() == -1) + { + int32 minLevel = GetQuestMinLevel(quest); + int32 maxLevel = quest->GetQuestMaxScalingLevel(); + int32 level = getLevel(); + if (level >= minLevel) + return std::min(level, maxLevel); + + return minLevel; + } + + return quest->GetQuestLevel(); +} + void Player::PrepareQuestMenu(ObjectGuid guid) { QuestRelationBounds objectQR; @@ -14737,7 +14768,7 @@ bool Player::CanSeeStartQuest(Quest const* quest) SatisfyQuestPrevChain(quest, false) && SatisfyQuestDay(quest, false) && SatisfyQuestWeek(quest, false) && SatisfyQuestMonth(quest, false) && SatisfyQuestSeasonal(quest, false)) { - return int32(getLevel() + sWorld->getIntConfig(CONFIG_QUEST_HIGH_LEVEL_HIDE_DIFF)) >= quest->GetMinLevel(); + return int32(getLevel() + sWorld->getIntConfig(CONFIG_QUEST_HIGH_LEVEL_HIDE_DIFF)) >= GetQuestMinLevel(quest); } return false; @@ -15163,7 +15194,7 @@ void Player::IncompleteQuest(uint32 quest_id) uint32 Player::GetQuestMoneyReward(Quest const* quest) const { - return quest->MoneyValue(getLevel()) * sWorld->getRate(RATE_MONEY_QUEST); + return quest->MoneyValue(this) * sWorld->getRate(RATE_MONEY_QUEST); } uint32 Player::GetQuestXPReward(Quest const* quest) @@ -15174,7 +15205,7 @@ uint32 Player::GetQuestXPReward(Quest const* quest) if (rewarded && !quest->IsDFQuest()) return 0; - uint32 XP = quest->XPValue(getLevel()) * sWorld->getRate(RATE_XP_QUEST); + uint32 XP = quest->XPValue(this) * sWorld->getRate(RATE_XP_QUEST); // handle SPELL_AURA_MOD_XP_QUEST_PCT auras Unit::AuraEffectList const& ModXPPctAuras = GetAuraEffectsByType(SPELL_AURA_MOD_XP_QUEST_PCT); @@ -15570,7 +15601,7 @@ bool Player::SatisfyQuestSkill(Quest const* qInfo, bool msg) const bool Player::SatisfyQuestLevel(Quest const* qInfo, bool msg) const { - if (getLevel() < qInfo->GetMinLevel()) + if (getLevel() < GetQuestMinLevel(qInfo)) { if (msg) { @@ -19625,7 +19656,7 @@ void Player::SendRaidInfo() { InstanceSave* save = itr->second.save; - WorldPackets::Instance::InstanceLockInfos lockInfos; + WorldPackets::Instance::InstanceLock lockInfos; lockInfos.InstanceID = save->GetInstanceId(); lockInfos.MapID = save->GetMapId(); @@ -22328,6 +22359,8 @@ void Player::InitDisplayIds() default: TC_LOG_ERROR("entities.player", "Player::InitDisplayIds: Player '%s' (%s) has invalid gender %u", GetName().c_str(), GetGUID().ToString().c_str(), gender); } + + SetUInt32Value(UNIT_FIELD_STATE_ANIM_ID, sAnimationDataStore.GetNumRows()); } inline bool Player::_StoreOrEquipNewItem(uint32 vendorslot, uint32 item, uint8 count, uint8 bag, uint8 slot, int64 price, ItemTemplate const* pProto, Creature* pVendor, VendorItem const* crItem, bool bStore) @@ -23999,19 +24032,15 @@ void Player::LearnDefaultSkill(SkillRaceClassInfoEntry const* rcInfo) break; case SKILL_RANGE_RANK: { - uint16 rank = 1; - if (getClass() == CLASS_DEATH_KNIGHT && skillId == SKILL_FIRST_AID) - rank = 4; - SkillTiersEntry const* tier = sObjectMgr->GetSkillTier(rcInfo->SkillTierID); - uint16 maxValue = tier->Value[std::max(rank - 1, 0)]; + uint16 maxValue = tier->Value[0]; uint16 skillValue = 1; if (rcInfo->Flags & SKILL_FLAG_ALWAYS_MAX_VALUE) skillValue = maxValue; else if (getClass() == CLASS_DEATH_KNIGHT) skillValue = std::min(std::max(uint16(1), uint16((getLevel() - 1) * 5)), maxValue); - SetSkill(skillId, rank, skillValue, maxValue); + SetSkill(skillId, 1, skillValue, maxValue); break; } default: @@ -26496,7 +26525,10 @@ void Player::SendTalentsInfoData() continue; } - groupInfoPkt.PvPTalentIDs.push_back(uint16(pvpTalents[slot])); + groupInfoPkt.PvPTalents.emplace_back(); + WorldPackets::Talent::PvPTalent& pvpTalent = groupInfoPkt.PvPTalents.back(); + pvpTalent.PvPTalentID = pvpTalents[slot]; + pvpTalent.Slot = slot; } packet.Info.TalentGroups.push_back(groupInfoPkt); @@ -27517,6 +27549,7 @@ void Player::SendPlayerChoice(ObjectGuid sender, int32 choiceId) displayPlayerChoice.Responses.resize(playerChoice->Responses.size()); displayPlayerChoice.CloseChoiceFrame = false; displayPlayerChoice.HideWarboardHeader = playerChoice->HideWarboardHeader; + displayPlayerChoice.KeepOpenAfterChoice = playerChoice->KeepOpenAfterChoice; for (std::size_t i = 0; i < playerChoice->Responses.size(); ++i) { @@ -27524,6 +27557,9 @@ void Player::SendPlayerChoice(ObjectGuid sender, int32 choiceId) WorldPackets::Quest::PlayerChoiceResponse& playerChoiceResponse = displayPlayerChoice.Responses[i]; playerChoiceResponse.ResponseID = playerChoiceResponseTemplate.ResponseId; playerChoiceResponse.ChoiceArtFileID = playerChoiceResponseTemplate.ChoiceArtFileId; + playerChoiceResponse.Flags = playerChoiceResponseTemplate.Flags; + playerChoiceResponse.WidgetSetID = playerChoiceResponseTemplate.WidgetSetID; + playerChoiceResponse.GroupID = playerChoiceResponseTemplate.GroupID; playerChoiceResponse.Answer = playerChoiceResponseTemplate.Answer; playerChoiceResponse.Header = playerChoiceResponseTemplate.Header; playerChoiceResponse.Description = playerChoiceResponseTemplate.Description; @@ -27848,29 +27884,6 @@ void Player::SendSupercededSpell(uint32 oldSpell, uint32 newSpell) const GetSession()->SendPacket(supercededSpells.Write()); } -uint32 Player::CalculateTalentsTiers() const -{ - uint32 const* rowLevels; - switch (getClass()) - { - case CLASS_DEATH_KNIGHT: - rowLevels = DKTalentRowLevels; - break; - case CLASS_DEMON_HUNTER: - rowLevels = DHTalentRowLevels; - break; - default: - rowLevels = DefaultTalentRowLevels; - break; - } - - for (uint32 i = MAX_TALENT_TIERS; i; --i) - if (getLevel() >= rowLevels[i - 1]) - return i; - - return 0; -} - Difficulty Player::GetDifficultyID(MapEntry const* mapEntry) const { if (!mapEntry->IsRaid()) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 8f1529db7c5..e3092f0279c 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -399,7 +399,7 @@ enum PlayerFlags PLAYER_FLAGS_GM = 0x00000008, PLAYER_FLAGS_GHOST = 0x00000010, PLAYER_FLAGS_RESTING = 0x00000020, - PLAYER_FLAGS_UNK6 = 0x00000040, + PLAYER_FLAGS_VOICE_CHAT = 0x00000040, PLAYER_FLAGS_UNK7 = 0x00000080, // pre-3.0.3 PLAYER_FLAGS_FFA_PVP flag for FFA PVP state PLAYER_FLAGS_CONTESTED_PVP = 0x00000100, // Player has been involved in a PvP combat and will be attacked by contested guards PLAYER_FLAGS_IN_PVP = 0x00000200, @@ -430,7 +430,8 @@ enum PlayerFlags enum PlayerFlagsEx { PLAYER_FLAGS_EX_REAGENT_BANK_UNLOCKED = 0x0001, - PLAYER_FLAGS_EX_MERCENARY_MODE = 0x0002 + PLAYER_FLAGS_EX_MERCENARY_MODE = 0x0002, + PLAYER_FLAGS_EX_ARTIFACT_FORGE_CHEAT = 0x0004 }; enum PlayerLocalFlags @@ -1009,10 +1010,6 @@ enum TalentLearnResult TALENT_FAILED_REST_AREA = 8 }; -static uint32 const DefaultTalentRowLevels[MAX_TALENT_TIERS] = { 15, 30, 45, 60, 75, 90, 100 }; -static uint32 const DKTalentRowLevels[MAX_TALENT_TIERS] = { 57, 58, 59, 60, 75, 90, 100 }; -static uint32 const DHTalentRowLevels[MAX_TALENT_TIERS] = { 99, 100, 102, 104, 106, 108, 110 }; - struct TC_GAME_API SpecializationInfo { SpecializationInfo() : ResetTalentsCost(0), ResetTalentsTime(0), PrimarySpecialization(0), ActiveGroup(0) @@ -1357,13 +1354,8 @@ class TC_GAME_API Player : public Unit, public GridObject /*** QUEST SYSTEM ***/ /*********************************************************/ - int32 GetQuestLevel(Quest const* quest) const - { - if (!quest) - return getLevel(); - return quest->GetQuestLevel() > 0 ? quest->GetQuestLevel() : std::min(getLevel(), quest->GetQuestMaxScalingLevel()); - } - + int32 GetQuestMinLevel(Quest const* quest) const; + int32 GetQuestLevel(Quest const* quest) const; void PrepareQuestMenu(ObjectGuid guid); void SendPreparedQuest(WorldObject* source); bool IsActiveQuest(uint32 quest_id) const; @@ -1653,7 +1645,6 @@ class TC_GAME_API Player : public Unit, public GridObject bool AddTalent(TalentEntry const* talent, uint8 spec, bool learning); bool HasTalent(uint32 spell_id, uint8 spec) const; void RemoveTalent(TalentEntry const* talent); - uint32 CalculateTalentsTiers() const; void ResetTalentSpecialization(); TalentLearnResult LearnPvpTalent(uint32 talentID, uint8 slot, int32* spellOnCooldown); @@ -1993,7 +1984,6 @@ class TC_GAME_API Player : public Unit, public GridObject void RestoreHealthAfterDuel() { SetHealth(healthBeforeDuel); } void RestoreManaAfterDuel() { SetPower(POWER_MANA, manaBeforeDuel); } - uint32 GetPrestigeLevel() const { return 0; } uint32 GetHonorLevel() const { return GetUInt32Value(PLAYER_FIELD_HONOR_LEVEL); } void AddHonorXP(uint32 xp); void SetHonorLevel(uint8 honorLevel); diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index 50b1897e2c5..6de4ae21027 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -38,7 +38,9 @@ Transport::Transport() : GameObject(), _triggeredArrivalEvent(false), _triggeredDepartureEvent(false), _passengerTeleportItr(_passengers.begin()), _delayedAddModel(false), _delayedTeleport(false) { - m_updateFlag = UPDATEFLAG_TRANSPORT | UPDATEFLAG_STATIONARY_POSITION | UPDATEFLAG_ROTATION; + m_updateFlag.ServerTime = true; + m_updateFlag.Stationary = true; + m_updateFlag.Rotation = true; } Transport::~Transport() diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 6edf0663547..bb6a3e9dc5d 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -111,13 +111,13 @@ bool DispelableAura::RollDispel() const } DamageInfo::DamageInfo(Unit* attacker, Unit* victim, uint32 damage, SpellInfo const* spellInfo, SpellSchoolMask schoolMask, DamageEffectType damageType, WeaponAttackType attackType) - : m_attacker(attacker), m_victim(victim), m_damage(damage), m_spellInfo(spellInfo), m_schoolMask(schoolMask), m_damageType(damageType), m_attackType(attackType), + : m_attacker(attacker), m_victim(victim), m_damage(damage), m_originalDamage(damage), m_spellInfo(spellInfo), m_schoolMask(schoolMask), m_damageType(damageType), m_attackType(attackType), m_absorb(0), m_resist(0), m_block(0), m_hitMask(0) { } DamageInfo::DamageInfo(CalcDamageInfo const& dmgInfo) - : m_attacker(dmgInfo.attacker), m_victim(dmgInfo.target), m_damage(dmgInfo.damage), m_spellInfo(nullptr), m_schoolMask(SpellSchoolMask(dmgInfo.damageSchoolMask)), + : m_attacker(dmgInfo.attacker), m_victim(dmgInfo.target), m_damage(dmgInfo.damage), m_originalDamage(dmgInfo.damage), m_spellInfo(nullptr), m_schoolMask(SpellSchoolMask(dmgInfo.damageSchoolMask)), m_damageType(DIRECT_DAMAGE), m_attackType(dmgInfo.attackType), m_absorb(dmgInfo.absorb), m_resist(dmgInfo.resist), m_block(dmgInfo.blocked_amount), m_hitMask(0) { switch (dmgInfo.TargetState) @@ -171,7 +171,7 @@ DamageInfo::DamageInfo(CalcDamageInfo const& dmgInfo) } DamageInfo::DamageInfo(SpellNonMeleeDamage const& spellNonMeleeDamage, DamageEffectType damageType, WeaponAttackType attackType, uint32 hitMask) - : m_attacker(spellNonMeleeDamage.attacker), m_victim(spellNonMeleeDamage.target), m_damage(spellNonMeleeDamage.damage), + : m_attacker(spellNonMeleeDamage.attacker), m_victim(spellNonMeleeDamage.target), m_damage(spellNonMeleeDamage.damage), m_originalDamage(spellNonMeleeDamage.originalDamage), m_spellInfo(sSpellMgr->GetSpellInfo(spellNonMeleeDamage.SpellID)), m_schoolMask(SpellSchoolMask(spellNonMeleeDamage.schoolMask)), m_damageType(damageType), m_attackType(attackType), m_absorb(spellNonMeleeDamage.absorb), m_resist(spellNonMeleeDamage.resist), m_block(spellNonMeleeDamage.blocked), m_hitMask(hitMask) { @@ -226,7 +226,7 @@ uint32 DamageInfo::GetHitMask() const } HealInfo::HealInfo(Unit* healer, Unit* target, uint32 heal, SpellInfo const* spellInfo, SpellSchoolMask schoolMask) - : _healer(healer), _target(target), _heal(heal), _effectiveHeal(0), _absorb(0), _spellInfo(spellInfo), _schoolMask(schoolMask), _hitMask(0) + : _healer(healer), _target(target), _heal(heal), _originalHeal(heal), _effectiveHeal(0), _absorb(0), _spellInfo(spellInfo), _schoolMask(schoolMask), _hitMask(0) { } @@ -279,8 +279,8 @@ SpellSchoolMask ProcEventInfo::GetSchoolMask() const } SpellNonMeleeDamage::SpellNonMeleeDamage(Unit* _attacker, Unit* _target, uint32 _SpellID, uint32 _SpellXSpellVisualID, uint32 _schoolMask, ObjectGuid _castId) - : target(_target), attacker(_attacker), castId(_castId), SpellID(_SpellID), SpellXSpellVisualID(_SpellXSpellVisualID), damage(0), schoolMask(_schoolMask), - absorb(0), resist(0), periodicLog(false), blocked(0), HitInfo(0), cleanDamage(0), fullBlock(false), preHitHealth(_target->GetHealth()) + : target(_target), attacker(_attacker), castId(_castId), SpellID(_SpellID), SpellXSpellVisualID(_SpellXSpellVisualID), damage(0), originalDamage(0), + schoolMask(_schoolMask), absorb(0), resist(0), periodicLog(false), blocked(0), HitInfo(0), cleanDamage(0), fullBlock(false), preHitHealth(_target->GetHealth()) { } @@ -297,7 +297,7 @@ Unit::Unit(bool isWorldObject) : m_objectType |= TYPEMASK_UNIT; m_objectTypeId = TYPEID_UNIT; - m_updateFlag = UPDATEFLAG_LIVING; + m_updateFlag.MovementUpdate = true; for (uint32 i = 0; i < MAX_ATTACK; ++i) { @@ -1181,6 +1181,7 @@ void Unit::CalculateSpellDamageTaken(SpellNonMeleeDamage* damageInfo, int32 dama damage = 0; damageInfo->damage = damage; + damageInfo->originalDamage = damage; DamageInfo dmgInfo(*damageInfo, SPELL_DIRECT_DAMAGE, BASE_ATTACK, PROC_HIT_NONE); CalcAbsorbResist(dmgInfo); damageInfo->absorb = dmgInfo.GetAbsorb(); @@ -1227,6 +1228,7 @@ void Unit::CalculateMeleeDamage(Unit* victim, uint32 damage, CalcDamageInfo* dam damageInfo->damageSchoolMask = GetMeleeDamageSchoolMask(); damageInfo->attackType = attackType; damageInfo->damage = 0; + damageInfo->originalDamage = 0; damageInfo->cleanDamage = 0; damageInfo->absorb = 0; damageInfo->resist = 0; @@ -1295,17 +1297,20 @@ void Unit::CalculateMeleeDamage(Unit* victim, uint32 damage, CalcDamageInfo* dam case MELEE_HIT_EVADE: damageInfo->HitInfo |= HITINFO_MISS | HITINFO_SWINGNOHITSOUND; damageInfo->TargetState = VICTIMSTATE_EVADES; + damageInfo->originalDamage = damageInfo->damage; damageInfo->damage = 0; damageInfo->cleanDamage = 0; return; case MELEE_HIT_MISS: damageInfo->HitInfo |= HITINFO_MISS; damageInfo->TargetState = VICTIMSTATE_INTACT; + damageInfo->originalDamage = damageInfo->damage; damageInfo->damage = 0; damageInfo->cleanDamage = 0; break; case MELEE_HIT_NORMAL: damageInfo->TargetState = VICTIMSTATE_HIT; + damageInfo->originalDamage = damageInfo->damage; break; case MELEE_HIT_CRIT: { @@ -1320,21 +1325,26 @@ void Unit::CalculateMeleeDamage(Unit* victim, uint32 damage, CalcDamageInfo* dam if (mod != 0) AddPct(damageInfo->damage, mod); + + damageInfo->originalDamage = damageInfo->damage; break; } case MELEE_HIT_PARRY: damageInfo->TargetState = VICTIMSTATE_PARRY; + damageInfo->originalDamage = damageInfo->damage; damageInfo->cleanDamage += damageInfo->damage; damageInfo->damage = 0; break; case MELEE_HIT_DODGE: damageInfo->TargetState = VICTIMSTATE_DODGE; + damageInfo->originalDamage = damageInfo->damage; damageInfo->cleanDamage += damageInfo->damage; damageInfo->damage = 0; break; case MELEE_HIT_BLOCK: damageInfo->TargetState = VICTIMSTATE_HIT; damageInfo->HitInfo |= HITINFO_BLOCK; + damageInfo->originalDamage = damageInfo->damage; // 30% damage blocked, double blocked amount if block is critical damageInfo->blocked_amount = CalculatePct(damageInfo->damage, damageInfo->target->isBlockCritical() ? damageInfo->target->GetBlockPercent() * 2 : damageInfo->target->GetBlockPercent()); damageInfo->damage -= damageInfo->blocked_amount; @@ -1344,6 +1354,7 @@ void Unit::CalculateMeleeDamage(Unit* victim, uint32 damage, CalcDamageInfo* dam { damageInfo->HitInfo |= HITINFO_GLANCING; damageInfo->TargetState = VICTIMSTATE_HIT; + damageInfo->originalDamage = damageInfo->damage; int32 leveldif = int32(victim->getLevel()) - int32(getLevel()); if (leveldif > 3) leveldif = 3; @@ -1358,6 +1369,7 @@ void Unit::CalculateMeleeDamage(Unit* victim, uint32 damage, CalcDamageInfo* dam damageInfo->TargetState = VICTIMSTATE_HIT; // 150% normal damage damageInfo->damage += (damageInfo->damage / 2); + damageInfo->originalDamage = damageInfo->damage; break; default: break; @@ -1372,6 +1384,7 @@ void Unit::CalculateMeleeDamage(Unit* victim, uint32 damage, CalcDamageInfo* dam resilienceReduction = damageInfo->damage - resilienceReduction; damageInfo->damage -= resilienceReduction; damageInfo->cleanDamage += resilienceReduction; + damageInfo->originalDamage -= resilienceReduction; // Calculate absorb resist if (int32(damageInfo->damage) > 0) @@ -1514,7 +1527,6 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss) DamageInfo damageInfo(this, victim, damage, spellInfo, spellInfo->GetSchoolMask(), SPELL_DIRECT_DAMAGE, BASE_ATTACK); victim->CalcAbsorbResist(damageInfo); damage = damageInfo.GetDamage(); - // No Unit::CalcAbsorbResist here - opcode doesn't send that data - this damage is probably not affected by that victim->DealDamageMods(this, damage, nullptr); WorldPackets::CombatLog::SpellDamageShield damageShield; @@ -1522,6 +1534,7 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss) damageShield.Defender = GetGUID(); damageShield.SpellID = spellInfo->Id; damageShield.TotalDamage = damage; + damageShield.OriginalDamage = damageInfo.GetOriginalDamage(); damageShield.OverKill = std::max(int32(damage) - int32(GetHealth()), 0); damageShield.SchoolMask = spellInfo->SchoolMask; damageShield.LogAbsorbed = damageInfo.GetAbsorb(); @@ -1881,6 +1894,7 @@ void Unit::CalcAbsorbResist(DamageInfo& damageInfo) CleanDamage cleanDamage = CleanDamage(splitDamage, 0, BASE_ATTACK, MELEE_HIT_NORMAL); DealDamage(caster, splitDamage, &cleanDamage, DIRECT_DAMAGE, damageInfo.GetSchoolMask(), (*itr)->GetSpellInfo(), false); log.damage = splitDamage; + log.originalDamage = splitDamage; log.absorb = split_absorb; SendSpellNonMeleeDamageLog(&log); @@ -2016,6 +2030,7 @@ void Unit::FakeAttackerStateUpdate(Unit* victim, WeaponAttackType attType /*= BA damageInfo.damageSchoolMask = GetMeleeDamageSchoolMask(); damageInfo.attackType = attType; damageInfo.damage = 0; + damageInfo.originalDamage = 0; damageInfo.cleanDamage = 0; damageInfo.absorb = 0; damageInfo.resist = 0; @@ -4985,6 +5000,7 @@ void Unit::SendSpellNonMeleeDamageLog(SpellNonMeleeDamage const* log) packet.CastID = log->castId; packet.SpellID = log->SpellID; packet.Damage = log->damage; + packet.OriginalDamage = log->originalDamage; if (log->damage > log->preHitHealth) packet.Overkill = log->damage - log->preHitHealth; else @@ -4997,9 +5013,9 @@ void Unit::SendSpellNonMeleeDamageLog(SpellNonMeleeDamage const* log) packet.Periodic = log->periodicLog; packet.Flags = log->HitInfo; - WorldPackets::Spells::SandboxScalingData sandboxScalingData; - if (sandboxScalingData.GenerateDataForUnits(log->attacker, log->target)) - packet.SandboxScaling = sandboxScalingData; + WorldPackets::Spells::ContentTuningParams contentTuningParams; + if (contentTuningParams.GenerateDataForUnits(log->attacker, log->target)) + packet.ContentTuning = contentTuningParams; SendCombatLogMessage(&packet); } @@ -5025,10 +5041,10 @@ void Unit::SendPeriodicAuraLog(SpellPeriodicAuraLogInfo* info) data.SpellID = aura->GetId(); data.LogData.Initialize(this); - /// @todo: should send more logs in one packet when multistrike WorldPackets::CombatLog::SpellPeriodicAuraLog::SpellLogEffect spellLogEffect; spellLogEffect.Effect = aura->GetAuraType(); spellLogEffect.Amount = info->damage; + spellLogEffect.OriginalDamage = info->originalDamage; spellLogEffect.OverHealOrKill = info->overDamage; spellLogEffect.SchoolMaskOrPower = aura->GetSpellInfo()->GetSchoolMask(); spellLogEffect.AbsorbedOrAmplitude = info->absorb; @@ -5036,10 +5052,10 @@ void Unit::SendPeriodicAuraLog(SpellPeriodicAuraLogInfo* info) spellLogEffect.Crit = info->critical; /// @todo: implement debug info - WorldPackets::Spells::SandboxScalingData sandboxScalingData; + WorldPackets::Spells::ContentTuningParams contentTuningParams; if (Unit* caster = ObjectAccessor::GetUnit(*this, aura->GetCasterGUID())) - if (sandboxScalingData.GenerateDataForUnits(caster, this)) - spellLogEffect.SandboxScaling = sandboxScalingData; + if (contentTuningParams.GenerateDataForUnits(caster, this)) + spellLogEffect.ContentTuning = contentTuningParams; data.Effects.push_back(spellLogEffect); @@ -5081,6 +5097,7 @@ void Unit::SendAttackStateUpdate(CalcDamageInfo* damageInfo) packet.AttackerGUID = damageInfo->attacker->GetGUID(); packet.VictimGUID = damageInfo->target->GetGUID(); packet.Damage = damageInfo->damage; + packet.OriginalDamage = damageInfo->originalDamage; int32 overkill = damageInfo->damage - damageInfo->target->GetHealth(); packet.OverDamage = (overkill < 0 ? -1 : overkill); @@ -5096,9 +5113,9 @@ void Unit::SendAttackStateUpdate(CalcDamageInfo* damageInfo) packet.LogData.Initialize(damageInfo->attacker); - WorldPackets::Spells::SandboxScalingData sandboxScalingData; - if (sandboxScalingData.GenerateDataForUnits(damageInfo->attacker, damageInfo->target)) - packet.SandboxScaling = sandboxScalingData; + WorldPackets::Spells::ContentTuningParams contentTuningParams; + if (contentTuningParams.GenerateDataForUnits(damageInfo->attacker, damageInfo->target)) + packet.ContentTuning = contentTuningParams; SendCombatLogMessage(&packet); } @@ -5110,6 +5127,7 @@ void Unit::SendAttackStateUpdate(uint32 HitInfo, Unit* target, uint8 /*SwingType dmgInfo.attacker = this; dmgInfo.target = target; dmgInfo.damage = Damage - AbsorbDamage - Resist - BlockedAmount; + dmgInfo.originalDamage = Damage; dmgInfo.damageSchoolMask = damageSchoolMask; dmgInfo.absorb = AbsorbDamage; dmgInfo.resist = Resist; @@ -6334,32 +6352,12 @@ void Unit::SendHealSpellLog(HealInfo& healInfo, bool critical /*= false*/) spellHealLog.TargetGUID = healInfo.GetTarget()->GetGUID(); spellHealLog.CasterGUID = healInfo.GetHealer()->GetGUID(); - spellHealLog.SpellID = healInfo.GetSpellInfo()->Id; spellHealLog.Health = healInfo.GetHeal(); + spellHealLog.OriginalHeal = healInfo.GetOriginalHeal(); spellHealLog.OverHeal = int32(healInfo.GetHeal()) - healInfo.GetEffectiveHeal(); spellHealLog.Absorbed = healInfo.GetAbsorb(); - spellHealLog.Crit = critical; - - /// @todo: 6.x Has to be implemented - /* - packet.ReadBit("Multistrike"); - - var hasCritRollMade = packet.ReadBit("HasCritRollMade"); - var hasCritRollNeeded = packet.ReadBit("HasCritRollNeeded"); - var hasLogData = packet.ReadBit("HasLogData"); - - if (hasCritRollMade) - packet.ReadSingle("CritRollMade"); - - if (hasCritRollNeeded) - packet.ReadSingle("CritRollNeeded"); - - if (hasLogData) - SpellParsers.ReadSpellCastLogData(packet); - */ - spellHealLog.LogData.Initialize(healInfo.GetTarget()); SendCombatLogMessage(&spellHealLog); } @@ -11665,7 +11663,7 @@ bool Unit::CreateVehicleKit(uint32 id, uint32 creatureEntry, bool loading /*= fa return false; m_vehicleKit = new Vehicle(this, vehInfo, creatureEntry); - m_updateFlag |= UPDATEFLAG_VEHICLE; + m_updateFlag.Vehicle = true; m_unitTypeMask |= UNIT_MASK_VEHICLE; if (!loading) @@ -11687,7 +11685,7 @@ void Unit::RemoveVehicleKit(bool onRemoveFromWorld /*= false*/) m_vehicleKit = NULL; - m_updateFlag &= ~UPDATEFLAG_VEHICLE; + m_updateFlag.Vehicle = false; m_unitTypeMask &= ~UNIT_MASK_VEHICLE; RemoveFlag64(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK | UNIT_NPC_FLAG_PLAYER_VEHICLE); } diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 94d2fa06c75..77e23462cd8 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -576,6 +576,7 @@ class TC_GAME_API DamageInfo Unit* const m_attacker; Unit* const m_victim; uint32 m_damage; + uint32 const m_originalDamage; SpellInfo const* const m_spellInfo; SpellSchoolMask const m_schoolMask; DamageEffectType const m_damageType; @@ -601,6 +602,7 @@ class TC_GAME_API DamageInfo DamageEffectType GetDamageType() const { return m_damageType; } WeaponAttackType GetAttackType() const { return m_attackType; } uint32 GetDamage() const { return m_damage; } + uint32 GetOriginalDamage() const { return m_originalDamage; } uint32 GetAbsorb() const { return m_absorb; } uint32 GetResist() const { return m_resist; } uint32 GetBlock() const { return m_block; } @@ -614,6 +616,7 @@ class TC_GAME_API HealInfo Unit* const _healer; Unit* const _target; uint32 _heal; + uint32 const _originalHeal; uint32 _effectiveHeal; uint32 _absorb; SpellInfo const* const _spellInfo; @@ -629,6 +632,7 @@ class TC_GAME_API HealInfo Unit* GetHealer() const { return _healer; } Unit* GetTarget() const { return _target; } uint32 GetHeal() const { return _heal; } + uint32 GetOriginalHeal() const { return _originalHeal; } uint32 GetEffectiveHeal() const { return _effectiveHeal; } uint32 GetAbsorb() const { return _absorb; } SpellInfo const* GetSpellInfo() const { return _spellInfo; }; @@ -682,6 +686,7 @@ struct CalcDamageInfo Unit *target; // Target for damage uint32 damageSchoolMask; uint32 damage; + uint32 originalDamage; uint32 absorb; uint32 resist; uint32 blocked_amount; @@ -706,6 +711,7 @@ struct TC_GAME_API SpellNonMeleeDamage uint32 SpellID; uint32 SpellXSpellVisualID; uint32 damage; + uint32 originalDamage; uint32 schoolMask; uint32 absorb; uint32 resist; @@ -720,11 +726,12 @@ struct TC_GAME_API SpellNonMeleeDamage struct SpellPeriodicAuraLogInfo { - SpellPeriodicAuraLogInfo(AuraEffect const* _auraEff, uint32 _damage, uint32 _overDamage, uint32 _absorb, uint32 _resist, float _multiplier, bool _critical) - : auraEff(_auraEff), damage(_damage), overDamage(_overDamage), absorb(_absorb), resist(_resist), multiplier(_multiplier), critical(_critical){ } + SpellPeriodicAuraLogInfo(AuraEffect const* _auraEff, uint32 _damage, uint32 _originalDamage, uint32 _overDamage, uint32 _absorb, uint32 _resist, float _multiplier, bool _critical) + : auraEff(_auraEff), damage(_damage), originalDamage(_originalDamage), overDamage(_overDamage), absorb(_absorb), resist(_resist), multiplier(_multiplier), critical(_critical){ } AuraEffect const* auraEff; uint32 damage; + uint32 originalDamage; uint32 overDamage; // overkill/overheal uint32 absorb; uint32 resist; diff --git a/src/server/game/Globals/AreaTriggerDataStore.cpp b/src/server/game/Globals/AreaTriggerDataStore.cpp index 903525c90f5..ecbaac165a6 100644 --- a/src/server/game/Globals/AreaTriggerDataStore.cpp +++ b/src/server/game/Globals/AreaTriggerDataStore.cpp @@ -147,8 +147,8 @@ void AreaTriggerDataStore::LoadAreaTriggerTemplates() while (templates->NextRow()); } - // 0 1 2 3 4 5 6 7 8 - if (QueryResult areatriggerSpellMiscs = WorldDatabase.Query("SELECT SpellMiscId, AreaTriggerId, MoveCurveId, ScaleCurveId, MorphCurveId, FacingCurveId, DecalPropertiesId, TimeToTarget, TimeToTargetScale FROM `spell_areatrigger`")) + // 0 1 2 3 4 5 6 7 8 9 10 + if (QueryResult areatriggerSpellMiscs = WorldDatabase.Query("SELECT SpellMiscId, AreaTriggerId, MoveCurveId, ScaleCurveId, MorphCurveId, FacingCurveId, AnimId, AnimKitId, DecalPropertiesId, TimeToTarget, TimeToTargetScale FROM `spell_areatrigger`")) { do { @@ -182,10 +182,13 @@ void AreaTriggerDataStore::LoadAreaTriggerTemplates() #undef VALIDATE_AND_SET_CURVE - miscTemplate.DecalPropertiesId = areatriggerSpellMiscFields[6].GetUInt32(); + miscTemplate.AnimId = areatriggerSpellMiscFields[6].GetInt32(); + miscTemplate.AnimKitId = areatriggerSpellMiscFields[7].GetInt32(); - miscTemplate.TimeToTarget = areatriggerSpellMiscFields[7].GetUInt32(); - miscTemplate.TimeToTargetScale = areatriggerSpellMiscFields[8].GetUInt32(); + miscTemplate.DecalPropertiesId = areatriggerSpellMiscFields[8].GetUInt32(); + + miscTemplate.TimeToTarget = areatriggerSpellMiscFields[9].GetUInt32(); + miscTemplate.TimeToTargetScale = areatriggerSpellMiscFields[10].GetUInt32(); miscTemplate.SplinePoints = std::move(splinesBySpellMisc[miscTemplate.MiscId]); diff --git a/src/server/game/Globals/ConversationDataStore.cpp b/src/server/game/Globals/ConversationDataStore.cpp index af2a416e000..9d57f6d0a17 100644 --- a/src/server/game/Globals/ConversationDataStore.cpp +++ b/src/server/game/Globals/ConversationDataStore.cpp @@ -150,7 +150,7 @@ void ConversationDataStore::LoadConversationTemplates() TC_LOG_INFO("server.loading", ">> Loaded 0 Conversation actors. DB table `conversation_actors` is empty."); } - if (QueryResult templates = WorldDatabase.Query("SELECT Id, FirstLineId, LastLineEndTime, ScriptName FROM conversation_template")) + if (QueryResult templates = WorldDatabase.Query("SELECT Id, FirstLineId, LastLineEndTime, TextureKitId, ScriptName FROM conversation_template")) { uint32 oldMSTime = getMSTime(); @@ -162,7 +162,8 @@ void ConversationDataStore::LoadConversationTemplates() conversationTemplate.Id = fields[0].GetUInt32(); conversationTemplate.FirstLineId = fields[1].GetUInt32(); conversationTemplate.LastLineEndTime = fields[2].GetUInt32(); - conversationTemplate.ScriptId = sObjectMgr->GetScriptId(fields[3].GetString()); + conversationTemplate.TextureKitId = fields[3].GetUInt32(); + conversationTemplate.ScriptId = sObjectMgr->GetScriptId(fields[4].GetString()); conversationTemplate.Actors = std::move(actorsByConversation[conversationTemplate.Id]); conversationTemplate.ActorGuids = std::move(actorGuidsByConversation[conversationTemplate.Id]); @@ -184,7 +185,7 @@ void ConversationDataStore::LoadConversationTemplates() currentConversationLine = sConversationLineStore.AssertEntry(currentConversationLine->NextConversationLineID); } - _conversationTemplateStore[conversationTemplate.Id] = conversationTemplate; + _conversationTemplateStore[conversationTemplate.Id] = std::move(conversationTemplate); } while (templates->NextRow()); diff --git a/src/server/game/Globals/ConversationDataStore.h b/src/server/game/Globals/ConversationDataStore.h index e6e750455d5..d4d53a2cd7d 100644 --- a/src/server/game/Globals/ConversationDataStore.h +++ b/src/server/game/Globals/ConversationDataStore.h @@ -28,7 +28,6 @@ enum ConversationLineFlags CONVERSATION_LINE_FLAG_NOTIFY_STARTED = 0x1 // Client will send CMSG_CONVERSATION_LINE_STARTED when it runs this line }; -#pragma pack(push, 1) struct ConversationActorTemplate { uint32 Id; @@ -36,6 +35,7 @@ struct ConversationActorTemplate uint32 CreatureModelId; }; +#pragma pack(push, 1) struct ConversationLineTemplate { uint32 Id; // Link to ConversationLine.db2 @@ -52,6 +52,7 @@ struct ConversationTemplate uint32 Id; uint32 FirstLineId; // Link to ConversationLine.db2 uint32 LastLineEndTime; // Time in ms after conversation creation the last line fades out + uint32 TextureKitId; // Background texture std::vector Actors; std::vector ActorGuids; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 6f562ba412e..af49f29b3c1 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -171,30 +171,37 @@ ExtendedPlayerName ExtractExtendedPlayerName(std::string const& name) LanguageDesc lang_description[LANGUAGES_COUNT] = { - { LANG_ADDON, 0, 0 }, - { LANG_UNIVERSAL, 0, 0 }, - { LANG_ORCISH, 669, SKILL_LANG_ORCISH }, - { LANG_DARNASSIAN, 671, SKILL_LANG_DARNASSIAN }, - { LANG_TAURAHE, 670, SKILL_LANG_TAURAHE }, - { LANG_DWARVISH, 672, SKILL_LANG_DWARVEN }, - { LANG_COMMON, 668, SKILL_LANG_COMMON }, - { LANG_DEMONIC, 815, SKILL_LANG_DEMON_TONGUE }, - { LANG_TITAN, 816, SKILL_LANG_TITAN }, - { LANG_THALASSIAN, 813, SKILL_LANG_THALASSIAN }, - { LANG_DRACONIC, 814, SKILL_LANG_DRACONIC }, - { LANG_KALIMAG, 817, SKILL_LANG_OLD_TONGUE }, - { LANG_GNOMISH, 7340, SKILL_LANG_GNOMISH }, - { LANG_TROLL, 7341, SKILL_LANG_TROLL }, - { LANG_GUTTERSPEAK, 17737, SKILL_LANG_FORSAKEN }, - { LANG_DRAENEI, 29932, SKILL_LANG_DRAENEI }, - { LANG_ZOMBIE, 0, 0 }, - { LANG_GNOMISH_BINARY, 0, 0 }, - { LANG_GOBLIN_BINARY, 0, 0 }, - { LANG_WORGEN, 69270, SKILL_LANG_GILNEAN }, - { LANG_GOBLIN, 69269, SKILL_LANG_GOBLIN }, - { LANG_PANDAREN_NEUTRAL, 108127, SKILL_LANG_PANDAREN_NEUTRAL }, - { LANG_PANDAREN_ALLIANCE, 108130, SKILL_LANG_PANDAREN_ALLIANCE }, - { LANG_PANDAREN_HORDE, 108131, SKILL_LANG_PANDAREN_HORDE } + { LANG_ADDON, 0, 0 }, + { LANG_ADDON_LOGGED, 0, 0 }, + { LANG_UNIVERSAL, 0, 0 }, + { LANG_ORCISH, 669, SKILL_LANGUAGE_ORCISH }, + { LANG_DARNASSIAN, 671, SKILL_LANGUAGE_DARNASSIAN }, + { LANG_TAURAHE, 670, SKILL_LANGUAGE_TAURAHE }, + { LANG_DWARVISH, 672, SKILL_LANGUAGE_DWARVEN }, + { LANG_COMMON, 668, SKILL_LANGUAGE_COMMON }, + { LANG_DEMONIC, 815, SKILL_LANGUAGE_DEMON_TONGUE }, + { LANG_TITAN, 816, SKILL_LANGUAGE_TITAN }, + { LANG_THALASSIAN, 813, SKILL_LANGUAGE_THALASSIAN }, + { LANG_DRACONIC, 814, SKILL_LANGUAGE_DRACONIC }, + { LANG_KALIMAG, 265462, SKILL_LANGUAGE_OLD_TONGUE }, + { LANG_GNOMISH, 7340, SKILL_LANGUAGE_GNOMISH }, + { LANG_TROLL, 7341, SKILL_LANGUAGE_TROLL }, + { LANG_GUTTERSPEAK, 17737, SKILL_LANGUAGE_FORSAKEN }, + { LANG_DRAENEI, 29932, SKILL_LANGUAGE_DRAENEI }, + { LANG_ZOMBIE, 265467, 0 }, + { LANG_GNOMISH_BINARY, 265460, 0 }, + { LANG_GOBLIN_BINARY, 265461, 0 }, + { LANG_WORGEN, 69270, SKILL_LANGUAGE_GILNEAN }, + { LANG_GOBLIN, 69269, SKILL_LANGUAGE_GOBLIN }, + { LANG_PANDAREN_NEUTRAL, 108127, SKILL_LANGUAGE_PANDAREN_NEUTRAL }, + { LANG_PANDAREN_ALLIANCE, 108130, 0 }, + { LANG_PANDAREN_HORDE, 108131, 0 }, + { LANG_SPRITE, 265466, 0 }, + { LANG_SHATH_YAR, 265465, 0 }, + { LANG_NERGLISH, 265464, 0 }, + { LANG_MOONKIN, 265463, 0 }, + { LANG_SHALASSIAN, 262439, SKILL_LANGUAGE_SHALASSIAN }, + { LANG_THALASSIAN_2, 262454, SKILL_LANGUAGE_THALASSIAN_2 } }; LanguageDesc const* GetLanguageDescByID(uint32 lang) @@ -3924,35 +3931,35 @@ void ObjectMgr::LoadQuests() mExclusiveQuestGroups.clear(); QueryResult result = WorldDatabase.Query("SELECT " - //0 1 2 3 4 5 6 7 8 9 10 11 - "ID, QuestType, QuestLevel, MaxScalingLevel, QuestPackageID, MinLevel, QuestSortID, QuestInfoID, SuggestedGroupNum, RewardNextQuest, RewardXPDifficulty, RewardXPMultiplier, " - //12 13 14 15 16 17 18 19 20 21 22 + //0 1 2 3 4 5 6 7 8 9 10 11 12 + "ID, QuestType, QuestLevel, ScalingFactionGroup, MaxScalingLevel, QuestPackageID, MinLevel, QuestSortID, QuestInfoID, SuggestedGroupNum, RewardNextQuest, RewardXPDifficulty, RewardXPMultiplier, " + //13 14 15 16 17 18 19 20 21 22 23 "RewardMoney, RewardMoneyDifficulty, RewardMoneyMultiplier, RewardBonusMoney, RewardDisplaySpell1, RewardDisplaySpell2, RewardDisplaySpell3, RewardSpell, RewardHonor, RewardKillHonor, StartItem, " - //23 24 25 26 27 - "RewardArtifactXPDifficulty, RewardArtifactXPMultiplier, RewardArtifactCategoryID, Flags, FlagsEx, " - //28 29 30 31 32 33 34 35 + //24 25 26 27 28 29 + "RewardArtifactXPDifficulty, RewardArtifactXPMultiplier, RewardArtifactCategoryID, Flags, FlagsEx, FlagsEx2, " + //30 31 32 33 34 35 36 37 "RewardItem1, RewardAmount1, ItemDrop1, ItemDropQuantity1, RewardItem2, RewardAmount2, ItemDrop2, ItemDropQuantity2, " - //36 37 38 39 40 41 42 43 + //38 39 40 41 42 43 44 45 "RewardItem3, RewardAmount3, ItemDrop3, ItemDropQuantity3, RewardItem4, RewardAmount4, ItemDrop4, ItemDropQuantity4, " - //44 45 46 47 48 49 + //46 47 48 49 50 51 "RewardChoiceItemID1, RewardChoiceItemQuantity1, RewardChoiceItemDisplayID1, RewardChoiceItemID2, RewardChoiceItemQuantity2, RewardChoiceItemDisplayID2, " - //50 51 52 53 54 55 + //52 53 54 55 56 57 "RewardChoiceItemID3, RewardChoiceItemQuantity3, RewardChoiceItemDisplayID3, RewardChoiceItemID4, RewardChoiceItemQuantity4, RewardChoiceItemDisplayID4, " - //56 57 58 59 60 61 + //58 59 60 61 62 63 "RewardChoiceItemID5, RewardChoiceItemQuantity5, RewardChoiceItemDisplayID5, RewardChoiceItemID6, RewardChoiceItemQuantity6, RewardChoiceItemDisplayID6, " - //62 63 64 65 66 67 68 69 70 71 - "POIContinent, POIx, POIy, POIPriority, RewardTitle, RewardArenaPoints, RewardSkillLineID, RewardNumSkillUps, PortraitGiver, PortraitTurnIn, " - //72 73 74 75 76 77 78 79 + //64 65 66 67 68 69 70 71 72 73 74 + "POIContinent, POIx, POIy, POIPriority, RewardTitle, RewardArenaPoints, RewardSkillLineID, RewardNumSkillUps, PortraitGiver, PortraitGiverMount, PortraitTurnIn, " + //75 76 77 78 79 80 81 82 "RewardFactionID1, RewardFactionValue1, RewardFactionOverride1, RewardFactionCapIn1, RewardFactionID2, RewardFactionValue2, RewardFactionOverride2, RewardFactionCapIn2, " - //80 81 82 83 84 85 86 87 + //83 84 85 86 87 88 89 90 "RewardFactionID3, RewardFactionValue3, RewardFactionOverride3, RewardFactionCapIn3, RewardFactionID4, RewardFactionValue4, RewardFactionOverride4, RewardFactionCapIn4, " - //88 89 90 91 92 + //91 92 93 94 95 "RewardFactionID5, RewardFactionValue5, RewardFactionOverride5, RewardFactionCapIn5, RewardFactionFlags, " - //93 94 95 96 97 98 99 100 + //96 97 98 99 100 101 102 103 "RewardCurrencyID1, RewardCurrencyQty1, RewardCurrencyID2, RewardCurrencyQty2, RewardCurrencyID3, RewardCurrencyQty3, RewardCurrencyID4, RewardCurrencyQty4, " - //101 102 103 104 105 106 107 - "AcceptedSoundKitID, CompleteSoundKitID, AreaGroupID, TimeAllowed, AllowableRaces, QuestRewardID, Expansion, " - //108 109 110 111 112 113 114 115 116 + //104 105 106 107 108 109 110 + "AcceptedSoundKitID, CompleteSoundKitID, AreaGroupID, TimeAllowed, AllowableRaces, TreasurePickerID, Expansion, " + //111 112 113 114 115 116 117 118 119 "LogTitle, LogDescription, QuestDescription, AreaDescription, PortraitGiverText, PortraitGiverName, PortraitTurnInText, PortraitTurnInName, QuestCompletionLog" " FROM quest_template"); if (!result) @@ -7027,8 +7034,8 @@ void ObjectMgr::LoadGameObjectTemplate() "Data0, Data1, Data2, Data3, Data4, Data5, Data6, Data7, Data8, Data9, Data10, Data11, Data12, " // 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 "Data13, Data14, Data15, Data16, Data17, Data18, Data19, Data20, Data21, Data22, Data23, Data24, Data25, Data26, Data27, Data28, " - // 37 38 39 40 41 42 43 - "Data29, Data30, Data31, Data32, RequiredLevel, AIName, ScriptName " + // 37 38 39 40 41 42 43 44 + "Data29, Data30, Data31, Data32, Data33, RequiredLevel, AIName, ScriptName " "FROM gameobject_template"); if (!result) @@ -7058,9 +7065,9 @@ void ObjectMgr::LoadGameObjectTemplate() for (uint8 i = 0; i < MAX_GAMEOBJECT_DATA; ++i) got.raw.data[i] = fields[8 + i].GetUInt32(); - got.RequiredLevel = fields[41].GetInt32(); - got.AIName = fields[42].GetString(); - got.ScriptId = GetScriptId(fields[43].GetString()); + got.RequiredLevel = fields[42].GetInt32(); + got.AIName = fields[43].GetString(); + got.ScriptId = GetScriptId(fields[44].GetString()); // Checks @@ -7696,8 +7703,8 @@ void ObjectMgr::LoadQuestPOI() uint32 count = 0; - // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 - QueryResult result = WorldDatabase.Query("SELECT QuestID, BlobIndex, Idx1, ObjectiveIndex, QuestObjectiveID, QuestObjectID, MapID, WorldMapAreaId, Floor, Priority, Flags, WorldEffectID, PlayerConditionID, WoDUnk1, AlwaysAllowMergingBlobs FROM quest_poi order by QuestID, Idx1"); + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 + QueryResult result = WorldDatabase.Query("SELECT QuestID, BlobIndex, Idx1, ObjectiveIndex, QuestObjectiveID, QuestObjectID, MapID, UiMapID, Priority, Flags, WorldEffectID, PlayerConditionID, SpawnTrackingID, AlwaysAllowMergingBlobs FROM quest_poi order by QuestID, Idx1"); if (!result) { TC_LOG_ERROR("server.loading", ">> Loaded 0 quest POI definitions. DB table `quest_poi` is empty."); @@ -7737,33 +7744,32 @@ void ObjectMgr::LoadQuestPOI() { Field* fields = result->Fetch(); - int32 QuestID = fields[0].GetInt32(); - int32 BlobIndex = fields[1].GetInt32(); - int32 Idx1 = fields[2].GetInt32(); - int32 ObjectiveIndex = fields[3].GetInt32(); - int32 QuestObjectiveID = fields[4].GetInt32(); - int32 QuestObjectID = fields[5].GetInt32(); - int32 MapID = fields[6].GetInt32(); - int32 WorldMapAreaId = fields[7].GetInt32(); - int32 Floor = fields[8].GetInt32(); - int32 Priority = fields[9].GetInt32(); - int32 Flags = fields[10].GetInt32(); - int32 WorldEffectID = fields[11].GetInt32(); - int32 PlayerConditionID = fields[12].GetInt32(); - int32 WoDUnk1 = fields[13].GetInt32(); - bool AlwaysAllowMergingBlobs = fields[14].GetBool(); - - if (!sObjectMgr->GetQuestTemplate(QuestID)) - TC_LOG_ERROR("sql.sql", "`quest_poi` quest id (%u) Idx1 (%u) does not exist in `quest_template`", QuestID, Idx1); - - QuestPOI POI(BlobIndex, ObjectiveIndex, QuestObjectiveID, QuestObjectID, MapID, WorldMapAreaId, Floor, Priority, Flags, WorldEffectID, PlayerConditionID, WoDUnk1, AlwaysAllowMergingBlobs); - if (QuestID < int32(POIs.size()) && Idx1 < int32(POIs[QuestID].size())) - { - POI.points = POIs[QuestID][Idx1]; - _questPOIStore[QuestID].push_back(POI); + int32 questID = fields[0].GetInt32(); + int32 blobIndex = fields[1].GetInt32(); + int32 idx1 = fields[2].GetInt32(); + int32 objectiveIndex = fields[3].GetInt32(); + int32 questObjectiveID = fields[4].GetInt32(); + int32 questObjectID = fields[5].GetInt32(); + int32 mapID = fields[6].GetInt32(); + int32 uiMapID = fields[7].GetInt32(); + int32 priority = fields[8].GetInt32(); + int32 flags = fields[9].GetInt32(); + int32 worldEffectID = fields[10].GetInt32(); + int32 playerConditionID = fields[11].GetInt32(); + int32 spawnTrackingID = fields[12].GetInt32(); + bool alwaysAllowMergingBlobs = fields[13].GetBool(); + + if (!sObjectMgr->GetQuestTemplate(questID)) + TC_LOG_ERROR("sql.sql", "`quest_poi` quest id (%u) Idx1 (%u) does not exist in `quest_template`", questID, idx1); + + QuestPOI POI(blobIndex, objectiveIndex, questObjectiveID, questObjectID, mapID, uiMapID, priority, flags, worldEffectID, playerConditionID, spawnTrackingID, alwaysAllowMergingBlobs); + if (questID < int32(POIs.size()) && idx1 < int32(POIs[questID].size())) + { + POI.points = POIs[questID][idx1]; + _questPOIStore[questID].push_back(POI); } else - TC_LOG_ERROR("sql.sql", "Table quest_poi references unknown quest points for quest %i POI id %i", QuestID, BlobIndex); + TC_LOG_ERROR("sql.sql", "Table quest_poi references unknown quest points for quest %i POI id %i", questID, blobIndex); ++count; } while (result->NextRow()); @@ -10099,7 +10105,7 @@ void ObjectMgr::LoadPlayerChoices() uint32 oldMSTime = getMSTime(); _playerChoices.clear(); - QueryResult choices = WorldDatabase.Query("SELECT ChoiceId, UiTextureKitId, Question, HideWarboardHeader FROM playerchoice"); + QueryResult choices = WorldDatabase.Query("SELECT ChoiceId, UiTextureKitId, Question, HideWarboardHeader, KeepOpenAfterChoice FROM playerchoice"); if (!choices) { @@ -10124,10 +10130,11 @@ void ObjectMgr::LoadPlayerChoices() choice.UiTextureKitId = fields[1].GetInt32(); choice.Question = fields[2].GetString(); choice.HideWarboardHeader = fields[3].GetBool(); + choice.KeepOpenAfterChoice = fields[4].GetBool(); } while (choices->NextRow()); - if (QueryResult responses = WorldDatabase.Query("SELECT ChoiceId, ResponseId, ChoiceArtFileId, Header, Answer, Description, Confirmation FROM playerchoice_response ORDER BY `Index` ASC")) + if (QueryResult responses = WorldDatabase.Query("SELECT ChoiceId, ResponseId, ChoiceArtFileId, Flags, WidgetSetID, GroupID, Header, Answer, Description, Confirmation FROM playerchoice_response ORDER BY `Index` ASC")) { do { @@ -10148,10 +10155,13 @@ void ObjectMgr::LoadPlayerChoices() PlayerChoiceResponse& response = choice->Responses.back(); response.ResponseId = responseId; response.ChoiceArtFileId = fields[2].GetInt32(); - response.Header = fields[3].GetString(); - response.Answer = fields[4].GetString(); - response.Description = fields[5].GetString(); - response.Confirmation = fields[6].GetString(); + response.Flags = fields[3].GetInt32(); + response.WidgetSetID = fields[4].GetUInt32(); + response.GroupID = fields[5].GetUInt8(); + response.Header = fields[6].GetString(); + response.Answer = fields[7].GetString(); + response.Description = fields[8].GetString(); + response.Confirmation = fields[9].GetString(); ++responseCount; } while (responses->NextRow()); diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 4be76f3cf8c..01ce6ee385d 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -710,20 +710,19 @@ struct QuestPOI int32 QuestObjectiveID; int32 QuestObjectID; int32 MapID; - int32 WorldMapAreaID; - int32 Floor; + int32 UiMapID; int32 Priority; int32 Flags; int32 WorldEffectID; int32 PlayerConditionID; - int32 UnkWoD1; + int32 SpawnTrackingID; std::vector points; bool AlwaysAllowMergingBlobs; - QuestPOI() : BlobIndex(0), ObjectiveIndex(0), QuestObjectiveID(0), QuestObjectID(0), MapID(0), WorldMapAreaID(0), Floor(0), Priority(0), Flags(0), WorldEffectID(0), PlayerConditionID(0), UnkWoD1(0), AlwaysAllowMergingBlobs(false){ } - QuestPOI(int32 _BlobIndex, int32 _ObjectiveIndex, int32 _QuestObjectiveID, int32 _QuestObjectID, int32 _MapID, int32 _WorldMapAreaID, int32 _Foor, int32 _Priority, int32 _Flags, int32 _WorldEffectID, int32 _PlayerConditionID, int32 _UnkWoD1, bool _AlwaysAllowMergingBlobs) : - BlobIndex(_BlobIndex), ObjectiveIndex(_ObjectiveIndex), QuestObjectiveID(_QuestObjectiveID), QuestObjectID(_QuestObjectID), MapID(_MapID), WorldMapAreaID(_WorldMapAreaID), - Floor(_Foor), Priority(_Priority), Flags(_Flags), WorldEffectID(_WorldEffectID), PlayerConditionID(_PlayerConditionID), UnkWoD1(_UnkWoD1), AlwaysAllowMergingBlobs(_AlwaysAllowMergingBlobs) { } + QuestPOI() : BlobIndex(0), ObjectiveIndex(0), QuestObjectiveID(0), QuestObjectID(0), MapID(0), UiMapID(0), Priority(0), Flags(0), WorldEffectID(0), PlayerConditionID(0), SpawnTrackingID(0), AlwaysAllowMergingBlobs(false){ } + QuestPOI(int32 blobIndex, int32 objectiveIndex, int32 questObjectiveID, int32 questObjectID, int32 mapID, int32 uiMapID, int32 priority, int32 flags, int32 worldEffectID, int32 playerConditionID, int32 spawnTrackingID, bool alwaysAllowMergingBlobs) : + BlobIndex(blobIndex), ObjectiveIndex(objectiveIndex), QuestObjectiveID(questObjectiveID), QuestObjectID(questObjectID), MapID(mapID), UiMapID(uiMapID), + Priority(priority), Flags(flags), WorldEffectID(worldEffectID), PlayerConditionID(playerConditionID), SpawnTrackingID(spawnTrackingID), AlwaysAllowMergingBlobs(alwaysAllowMergingBlobs) { } }; typedef std::vector QuestPOIVector; @@ -794,6 +793,9 @@ struct PlayerChoiceResponse { int32 ResponseId; int32 ChoiceArtFileId; + int32 Flags; + uint32 WidgetSetID; + uint8 GroupID; std::string Header; std::string Answer; std::string Description; @@ -808,6 +810,7 @@ struct PlayerChoice std::string Question; std::vector Responses; bool HideWarboardHeader; + bool KeepOpenAfterChoice; PlayerChoiceResponse const* GetResponse(int32 responseId) const { diff --git a/src/server/game/Handlers/AuthHandler.cpp b/src/server/game/Handlers/AuthHandler.cpp index 296bf506edc..251708cb48d 100644 --- a/src/server/game/Handlers/AuthHandler.cpp +++ b/src/server/game/Handlers/AuthHandler.cpp @@ -98,6 +98,9 @@ void WorldSession::SendFeatureSystemStatusGlueScreen() features.BpayStoreDisabledByParentalControls = false; features.CharUndeleteEnabled = sWorld->getBoolConfig(CONFIG_FEATURE_SYSTEM_CHARACTER_UNDELETE_ENABLED); features.BpayStoreEnabled = sWorld->getBoolConfig(CONFIG_FEATURE_SYSTEM_BPAY_STORE_ENABLED); + features.MaxCharactersPerRealm = sWorld->getIntConfig(CONFIG_CHARACTERS_PER_REALM); + features.MinimumExpansionLevel = EXPANSION_CLASSIC; + features.MaximumExpansionLevel = sWorld->getIntConfig(CONFIG_EXPANSION); SendPacket(features.Write()); } diff --git a/src/server/game/Handlers/CalendarHandler.cpp b/src/server/game/Handlers/CalendarHandler.cpp index 887bc6b4742..43de963bda4 100644 --- a/src/server/game/Handlers/CalendarHandler.cpp +++ b/src/server/game/Handlers/CalendarHandler.cpp @@ -79,8 +79,7 @@ void WorldSession::HandleCalendarGetCalendar(WorldPackets::Calendar::CalendarGet WorldPackets::Calendar::CalendarSendCalendarEventInfo eventInfo; eventInfo.EventID = event->GetEventId(); eventInfo.Date = event->GetDate(); - Guild* guild = sGuildMgr->GetGuildById(event->GetGuildId()); - eventInfo.EventGuildID = guild ? guild->GetGUID() : ObjectGuid::Empty; + eventInfo.EventClubID = event->GetGuildId(); eventInfo.EventName = event->GetTitle(); eventInfo.EventType = event->GetType(); eventInfo.Flags = event->GetFlags(); diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index bc3fb563a57..c5b4e0487ff 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -349,6 +349,7 @@ void WorldSession::HandleCharEnum(PreparedQueryResult result) while (result->NextRow()); } + charEnum.IsTestDemonHunterCreationAllowed = canAlwaysCreateDemonHunter; charEnum.IsDemonHunterCreationAllowed = GetAccountExpansion() >= EXPANSION_LEGION || canAlwaysCreateDemonHunter; charEnum.IsAlliedRacesCreationAllowed = GetAccountExpansion() >= EXPANSION_BATTLE_FOR_AZEROTH; @@ -733,7 +734,7 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact LoginDatabase.CommitTransaction(trans); - SendCharCreate(CHAR_CREATE_SUCCESS); + SendCharCreate(CHAR_CREATE_SUCCESS, newChar.GetGUID()); TC_LOG_INFO("entities.player.character", "Account: %u (IP: %s) Create Character: %s %s", GetAccountId(), GetRemoteAddress().c_str(), createInfo->Name.c_str(), newChar.GetGUID().ToString().c_str()); sScriptMgr->OnPlayerCreate(&newChar); @@ -2476,10 +2477,11 @@ void WorldSession::HandleCharUndeleteOpcode(WorldPackets::Character::UndeleteCha })); } -void WorldSession::SendCharCreate(ResponseCodes result) +void WorldSession::SendCharCreate(ResponseCodes result, ObjectGuid const& guid /*= ObjectGuid::Empty*/) { WorldPackets::Character::CreateChar response; response.Code = result; + response.Guid = guid; SendPacket(response.Write()); } diff --git a/src/server/game/Handlers/DuelHandler.cpp b/src/server/game/Handlers/DuelHandler.cpp index 41892196367..c017617f507 100644 --- a/src/server/game/Handlers/DuelHandler.cpp +++ b/src/server/game/Handlers/DuelHandler.cpp @@ -49,7 +49,7 @@ void WorldSession::HandleCanDuel(WorldPackets::Duel::CanDuel& packet) void WorldSession::HandleDuelResponseOpcode(WorldPackets::Duel::DuelResponse& duelResponse) { - if (duelResponse.Accepted) + if (duelResponse.Accepted && !duelResponse.Forfeited) HandleDuelAccepted(); else HandleDuelCancelled(); diff --git a/src/server/game/Handlers/InspectHandler.cpp b/src/server/game/Handlers/InspectHandler.cpp index 598f00c519f..1121fd4647d 100644 --- a/src/server/game/Handlers/InspectHandler.cpp +++ b/src/server/game/Handlers/InspectHandler.cpp @@ -62,6 +62,10 @@ void WorldSession::HandleInspectOpcode(WorldPackets::Inspect::Inspect& inspect) if (v.second != PLAYERSPELL_REMOVED) inspectResult.Talents.push_back(v.first); } + + PlayerPvpTalentMap const& pvpTalents = player->GetPvpTalentMap(player->GetActiveTalentGroup()); + for (std::size_t i = 0; i < pvpTalents.size(); ++i) + inspectResult.PvpTalents[i] = pvpTalents[i]; } if (Guild* guild = sGuildMgr->GetGuildById(player->GetGuildId())) diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp index 273bf287821..0e0a9f4ac43 100644 --- a/src/server/game/Handlers/QueryHandler.cpp +++ b/src/server/game/Handlers/QueryHandler.cpp @@ -95,10 +95,22 @@ void WorldSession::HandleCreatureQuery(WorldPackets::Query::QueryCreature& packe for (uint32 i = 0; i < MAX_KILL_CREDIT; ++i) stats.ProxyCreatureID[i] = creatureInfo->KillCredit[i]; - stats.CreatureDisplayID[0] = creatureInfo->Modelid1; - stats.CreatureDisplayID[1] = creatureInfo->Modelid2; - stats.CreatureDisplayID[2] = creatureInfo->Modelid3; - stats.CreatureDisplayID[3] = creatureInfo->Modelid4; + // TEMPORARY, PR #22567 + auto addModel = [&](uint32 modelId) + { + if (modelId) + { + stats.Display.TotalProbability += 1.0f; + stats.Display.CreatureDisplay.emplace_back(); + WorldPackets::Query::CreatureXDisplay& display = stats.Display.CreatureDisplay.back(); + display.CreatureDisplayID = modelId; + } + }; + + addModel(creatureInfo->Modelid1); + addModel(creatureInfo->Modelid2); + addModel(creatureInfo->Modelid3); + addModel(creatureInfo->Modelid4); stats.HpMulti = creatureInfo->ModHealth; stats.EnergyMulti = creatureInfo->ModMana; @@ -107,14 +119,14 @@ void WorldSession::HandleCreatureQuery(WorldPackets::Query::QueryCreature& packe stats.RequiredExpansion = creatureInfo->RequiredExpansion; stats.HealthScalingExpansion = creatureInfo->HealthScalingExpansion; stats.VignetteID = creatureInfo->VignetteID; + stats.Class = creatureInfo->unit_class; stats.Title = creatureInfo->SubName; stats.TitleAlt = creatureInfo->TitleAlt; stats.CursorName = creatureInfo->IconName; if (std::vector const* items = sObjectMgr->GetCreatureQuestItemList(packet.CreatureID)) - for (uint32 item : *items) - stats.QuestItems.push_back(item); + stats.QuestItems.insert(stats.QuestItems.begin(), items->begin(), items->end()); LocaleConstant localeConstant = GetSessionDbLocaleIndex(); if (localeConstant != LOCALE_enUS) @@ -368,13 +380,12 @@ void WorldSession::HandleQuestPOIQuery(WorldPackets::Query::QuestPOIQuery& quest questPOIBlobData.QuestObjectiveID = data->QuestObjectiveID; questPOIBlobData.QuestObjectID = data->QuestObjectID; questPOIBlobData.MapID = data->MapID; - questPOIBlobData.WorldMapAreaID = data->WorldMapAreaID; - questPOIBlobData.Floor = data->Floor; + questPOIBlobData.UiMapID = data->UiMapID; questPOIBlobData.Priority = data->Priority; questPOIBlobData.Flags = data->Flags; questPOIBlobData.WorldEffectID = data->WorldEffectID; questPOIBlobData.PlayerConditionID = data->PlayerConditionID; - questPOIBlobData.UnkWoD1 = data->UnkWoD1; + questPOIBlobData.SpawnTrackingID = data->SpawnTrackingID; questPOIBlobData.AlwaysAllowMergingBlobs = data->AlwaysAllowMergingBlobs; for (QuestPOIPoint const& point : data->points) diff --git a/src/server/game/Handlers/SkillHandler.cpp b/src/server/game/Handlers/SkillHandler.cpp index d7af3a34737..1d95689d761 100644 --- a/src/server/game/Handlers/SkillHandler.cpp +++ b/src/server/game/Handlers/SkillHandler.cpp @@ -55,14 +55,14 @@ void WorldSession::HandleLearnPvpTalentsOpcode(WorldPackets::Talent::LearnPvpTal { WorldPackets::Talent::LearnPvpTalentsFailed learnPvpTalentsFailed; bool anythingLearned = false; - for (uint32 talentId : packet.Talents) + for (WorldPackets::Talent::PvPTalent pvpTalent : packet.Talents) { - if (TalentLearnResult result = _player->LearnPvpTalent(talentId, 0, &learnPvpTalentsFailed.SpellID)) + if (TalentLearnResult result = _player->LearnPvpTalent(pvpTalent.PvPTalentID, pvpTalent.Slot, &learnPvpTalentsFailed.SpellID)) { if (!learnPvpTalentsFailed.Reason) learnPvpTalentsFailed.Reason = result; - learnPvpTalentsFailed.Talents.push_back(talentId); + learnPvpTalentsFailed.Talents.push_back(pvpTalent); } else anythingLearned = true; diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index bb427b5903c..86e801d1b2a 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -994,6 +994,7 @@ enum CharacterFlags4 : uint32 { CHARACTER_FLAG_4_TRIAL_BOOST = 0x00000080, CHARACTER_FLAG_4_TRIAL_BOOST_LOCKED = 0x00040000, + CHARACTER_FLAG_4_EXPANSION_TRIAL = 0x00080000, }; #define PLAYER_CUSTOM_DISPLAY_SIZE 3 @@ -1048,11 +1049,17 @@ enum Language LANG_PANDAREN_NEUTRAL = 42, LANG_PANDAREN_ALLIANCE = 43, LANG_PANDAREN_HORDE = 44, - LANG_RIKKITUN = 168, - LANG_ADDON = 0xFFFFFFFF // used by addons, in 2.4.0 not exist, replaced by messagetype? + LANG_SPRITE = 168, + LANG_SHATH_YAR = 178, + LANG_NERGLISH = 179, + LANG_MOONKIN = 180, + LANG_SHALASSIAN = 181, + LANG_THALASSIAN_2 = 182, + LANG_ADDON = 183, + LANG_ADDON_LOGGED = 184 }; -#define LANGUAGES_COUNT 25 +#define LANGUAGES_COUNT 31 enum TeamId { @@ -2426,11 +2433,15 @@ enum GameobjectTypes : uint8 GAMEOBJECT_TYPE_UI_LINK = 48, GAMEOBJECT_TYPE_KEYSTONE_RECEPTACLE = 49, GAMEOBJECT_TYPE_GATHERING_NODE = 50, - GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD = 51 + GAMEOBJECT_TYPE_CHALLENGE_MODE_REWARD = 51, + GAMEOBJECT_TYPE_MULTI = 52, + GAMEOBJECT_TYPE_SIEGEABLE_MULTI = 53, + GAMEOBJECT_TYPE_SIEGEABLE_MO = 54, + GAMEOBJECT_TYPE_PVP_REWARD = 55, }; -#define MAX_GAMEOBJECT_TYPE 52 // sending to client this or greater value can crash client. -#define MAX_GAMEOBJECT_DATA 33 // Max number of uint32 vars in gameobject_template data field +#define MAX_GAMEOBJECT_TYPE 56 // sending to client this or greater value can crash client. +#define MAX_GAMEOBJECT_DATA 34 // Max number of uint32 vars in gameobject_template data field enum GameObjectFlags { @@ -4218,23 +4229,22 @@ enum SkillType SKILL_MACES = 54, SKILL_TWO_HANDED_SWORDS = 55, SKILL_DEFENSE = 95, - SKILL_LANG_COMMON = 98, + SKILL_LANGUAGE_COMMON = 98, SKILL_RACIAL_DWARF = 101, - SKILL_LANG_ORCISH = 109, - SKILL_LANG_DWARVEN = 111, - SKILL_LANG_DARNASSIAN = 113, - SKILL_LANG_TAURAHE = 115, + SKILL_LANGUAGE_ORCISH = 109, + SKILL_LANGUAGE_DWARVEN = 111, + SKILL_LANGUAGE_DARNASSIAN = 113, + SKILL_LANGUAGE_TAURAHE = 115, SKILL_DUAL_WIELD = 118, SKILL_RACIAL_TAUREN = 124, SKILL_RACIAL_ORC = 125, SKILL_RACIAL_NIGHT_ELF = 126, - SKILL_FIRST_AID = 129, SKILL_STAVES = 136, - SKILL_LANG_THALASSIAN = 137, - SKILL_LANG_DRACONIC = 138, - SKILL_LANG_DEMON_TONGUE = 139, - SKILL_LANG_TITAN = 140, - SKILL_LANG_OLD_TONGUE = 141, + SKILL_LANGUAGE_THALASSIAN = 137, + SKILL_LANGUAGE_DRACONIC = 138, + SKILL_LANGUAGE_DEMON_TONGUE = 139, + SKILL_LANGUAGE_TITAN = 140, + SKILL_LANGUAGE_OLD_TONGUE = 141, SKILL_SURVIVAL = 142, SKILL_HORSE_RIDING = 148, SKILL_WOLF_RIDING = 149, @@ -4279,8 +4289,8 @@ enum SkillType SKILL_PET_TURTLE = 251, SKILL_PET_GENERIC_HUNTER = 270, SKILL_PLATE_MAIL = 293, - SKILL_LANG_GNOMISH = 313, - SKILL_LANG_TROLL = 315, + SKILL_LANGUAGE_GNOMISH = 313, + SKILL_LANGUAGE_TROLL = 315, SKILL_ENCHANTING = 333, SKILL_FISHING = 356, SKILL_SKINNING = 393, @@ -4296,7 +4306,7 @@ enum SkillType SKILL_PET_HYENA = 654, SKILL_PET_BIRD_OF_PREY = 655, SKILL_PET_WIND_SERPENT = 656, - SKILL_LANG_FORSAKEN = 673, + SKILL_LANGUAGE_FORSAKEN = 673, SKILL_KODO_RIDING = 713, SKILL_RACIAL_TROLL = 733, SKILL_RACIAL_GNOME = 753, @@ -4304,7 +4314,7 @@ enum SkillType SKILL_JEWELCRAFTING = 755, SKILL_RACIAL_BLOOD_ELF = 756, SKILL_PET_EVENT_REMOTE_CONTROL = 758, - SKILL_LANG_DRAENEI = 759, + SKILL_LANGUAGE_DRAENEI = 759, SKILL_RACIAL_DRAENEI = 760, SKILL_PET_FELGUARD = 761, SKILL_RIDING = 762, @@ -4330,8 +4340,8 @@ enum SkillType SKILL_PET_EXOTIC_SPIRIT_BEAST = 788, SKILL_RACIAL_WORGEN = 789, SKILL_RACIAL_GOBLIN = 790, - SKILL_LANG_GILNEAN = 791, - SKILL_LANG_GOBLIN = 792, + SKILL_LANGUAGE_GILNEAN = 791, + SKILL_LANGUAGE_GOBLIN = 792, SKILL_ARCHAEOLOGY = 794, SKILL_HUNTER = 795, SKILL_DEATH_KNIGHT = 796, @@ -4343,7 +4353,7 @@ enum SkillType SKILL_ALL_GLYPHS = 810, SKILL_PET_DOG = 811, SKILL_PET_MONKEY = 815, - SKILL_PET_SHALE_SPIDER = 817, + SKILL_PET_EXOTIC_SHALE_SPIDER = 817, SKILL_BEETLE = 818, SKILL_ALL_GUILD_PERKS = 821, SKILL_PET_HYDRA = 824, @@ -4352,9 +4362,7 @@ enum SkillType SKILL_WARLOCK = 849, SKILL_RACIAL_PANDAREN = 899, SKILL_MAGE = 904, - SKILL_LANG_PANDAREN_NEUTRAL = 905, - SKILL_LANG_PANDAREN_ALLIANCE = 906, - SKILL_LANG_PANDAREN_HORDE = 907, + SKILL_LANGUAGE_PANDAREN_NEUTRAL = 905, SKILL_ROGUE = 921, SKILL_SHAMAN = 924, SKILL_FEL_IMP = 927, @@ -4374,17 +4382,16 @@ enum SkillType SKILL_WAY_OF_THE_BREW = 980, SKILL_APPRENTICE_COOKING = 981, SKILL_JOURNEYMAN_COOKBOOK = 982, - SKILL_PORCUPINE = 983, - SKILL_CRANE = 984, - SKILL_WATER_STRIDER = 985, + SKILL_PET_RODENT = 983, + SKILL_PET_CRANE = 984, + SKILL_PET_WATER_STRIDER = 985, SKILL_PET_EXOTIC_QUILEN = 986, SKILL_PET_GOAT = 987, - SKILL_BASILISK = 988, + SKILL_PET_BASILISK = 988, SKILL_NO_PLAYERS = 999, - SKILL_DIREHORN = 1305, + SKILL_PET_DIREHORN = 1305, SKILL_PET_PRIMAL_STORM_ELEMENTAL = 1748, SKILL_PET_WATER_ELEMENTAL_MINOR_TALENT_VERSION = 1777, - SKILL_PET_EXOTIC_RYLAK = 1818, SKILL_PET_RIVERBEAST = 1819, SKILL_UNUSED = 1830, SKILL_DEMON_HUNTER = 1848, @@ -4396,6 +4403,127 @@ enum SkillType SKILL_WARGLAIVES = 2152, SKILL_PET_MECHANICAL = 2189, SKILL_PET_ABOMINATION = 2216, + SKILL_PET_OXEN = 2279, + SKILL_PET_SCALEHIDE = 2280, + SKILL_PET_FEATHERMANE = 2361, + SKILL_RACIAL_NIGHTBORNE = 2419, + SKILL_RACIAL_HIGHMOUNTAIN_TAUREN = 2420, + SKILL_RACIAL_LIGHTFORGED_DRAENEI = 2421, + SKILL_RACIAL_VOID_ELF = 2423, + SKILL_KUL_TIRAN_BLACKSMITHING = 2437, + SKILL_LEGION_BLACKSMITHING = 2454, + SKILL_LANGUAGE_SHALASSIAN = 2464, + SKILL_LANGUAGE_THALASSIAN_2 = 2465, + SKILL_DRAENOR_BLACKSMITHING = 2472, + SKILL_PANDARIA_BLACKSMITHING = 2473, + SKILL_CATACLYSM_BLACKSMITHING = 2474, + SKILL_NORTHREND_BLACKSMITHING = 2475, + SKILL_OUTLAND_BLACKSMITHING = 2476, + SKILL_BLACKSMITHING_2 = 2477, + SKILL_KUL_TIRAN_ALCHEMY = 2478, + SKILL_LEGION_ALCHEMY = 2479, + SKILL_DRAENOR_ALCHEMY = 2480, + SKILL_PANDARIA_ALCHEMY = 2481, + SKILL_CATACLYSM_ALCHEMY = 2482, + SKILL_NORTHREND_ALCHEMY = 2483, + SKILL_OUTLAND_ALCHEMY = 2484, + SKILL_ALCHEMY_2 = 2485, + SKILL_KUL_TIRAN_ENCHANTING = 2486, + SKILL_LEGION_ENCHANTING = 2487, + SKILL_DRAENOR_ENCHANTING = 2488, + SKILL_PANDARIA_ENCHANTING = 2489, + SKILL_CATACLYSM_ENCHANTING = 2491, + SKILL_NORTHREND_ENCHANTING = 2492, + SKILL_OUTLAND_ENCHANTING = 2493, + SKILL_ENCHANTING_2 = 2494, + SKILL_KUL_TIRAN_ENGINEERING = 2499, + SKILL_LEGION_ENGINEERING = 2500, + SKILL_DRAENOR_ENGINEERING = 2501, + SKILL_PANDARIA_ENGINEERING = 2502, + SKILL_CATACLYSM_ENGINEERING = 2503, + SKILL_NORTHREND_ENGINEERING = 2504, + SKILL_OUTLAND_ENGINEERING = 2505, + SKILL_ENGINEERING_2 = 2506, + SKILL_KUL_TIRAN_INSCRIPTION = 2507, + SKILL_LEGION_INSCRIPTION = 2508, + SKILL_DRAENOR_INSCRIPTION = 2509, + SKILL_PANDARIA_INSCRIPTION = 2510, + SKILL_CATACLYSM_INSCRIPTION = 2511, + SKILL_NORTHREND_INSCRIPTION = 2512, + SKILL_OUTLAND_INSCRIPTION = 2513, + SKILL_INSCRIPTION_2 = 2514, + SKILL_KUL_TIRAN_JEWELCRAFTING = 2517, + SKILL_LEGION_JEWELCRAFTING = 2518, + SKILL_DRAENOR_JEWELCRAFTING = 2519, + SKILL_PANDARIA_JEWELCRAFTING = 2520, + SKILL_CATACLYSM_JEWELCRAFTING = 2521, + SKILL_NORTHREND_JEWELCRAFTING = 2522, + SKILL_OUTLAND_JEWELCRAFTING = 2523, + SKILL_JEWELCRAFTING_2 = 2524, + SKILL_KUL_TIRAN_LEATHERWORKING = 2525, + SKILL_LEGION_LEATHERWORKING = 2526, + SKILL_DRAENOR_LEATHERWORKING = 2527, + SKILL_PANDARIA_LEATHERWORKING = 2528, + SKILL_CATACLYSM_LEATHERWORKING = 2529, + SKILL_NORTHREND_LEATHERWORKING = 2530, + SKILL_OUTLAND_LEATHERWORKING = 2531, + SKILL_LEATHERWORKING_2 = 2532, + SKILL_KUL_TIRAN_TAILORING = 2533, + SKILL_LEGION_TAILORING = 2534, + SKILL_DRAENOR_TAILORING = 2535, + SKILL_PANDARIA_TAILORING = 2536, + SKILL_CATACLYSM_TAILORING = 2537, + SKILL_NORTHREND_TAILORING = 2538, + SKILL_OUTLAND_TAILORING = 2539, + SKILL_TAILORING_2 = 2540, + SKILL_KUL_TIRAN_COOKING = 2541, + SKILL_LEGION_COOKING = 2542, + SKILL_DRAENOR_COOKING = 2543, + SKILL_PANDARIA_COOKING = 2544, + SKILL_CATACLYSM_COOKING = 2545, + SKILL_NORTHREND_COOKING = 2546, + SKILL_OUTLAND_COOKING = 2547, + SKILL_COOKING_2 = 2548, + SKILL_KUL_TIRAN_HERBALISM = 2549, + SKILL_LEGION_HERBALISM = 2550, + SKILL_DRAENOR_HERBALISM = 2551, + SKILL_PANDARIA_HERBALISM = 2552, + SKILL_CATACLYSM_HERBALISM = 2553, + SKILL_NORTHREND_HERBALISM = 2554, + SKILL_OUTLAND_HERBALISM = 2555, + SKILL_HERBALISM_2 = 2556, + SKILL_KUL_TIRAN_SKINNING = 2557, + SKILL_LEGION_SKINNING = 2558, + SKILL_DRAENOR_SKINNING = 2559, + SKILL_PANDARIA_SKINNING = 2560, + SKILL_CATACLYSM_SKINNING = 2561, + SKILL_NORTHREND_SKINNING = 2562, + SKILL_OUTLAND_SKINNING = 2563, + SKILL_SKINNING_2 = 2564, + SKILL_KUL_TIRAN_MINING = 2565, + SKILL_LEGION_MINING = 2566, + SKILL_DRAENOR_MINING = 2567, + SKILL_PANDARIA_MINING = 2568, + SKILL_CATACLYSM_MINING = 2569, + SKILL_NORTHREND_MINING = 2570, + SKILL_OUTLAND_MINING = 2571, + SKILL_MINING_2 = 2572, + SKILL_KUL_TIRAN_FISHING = 2585, + SKILL_LEGION_FISHING = 2586, + SKILL_DRAENOR_FISHING = 2587, + SKILL_PANDARIA_FISHING = 2588, + SKILL_CATACLYSM_FISHING = 2589, + SKILL_NORTHREND_FISHING = 2590, + SKILL_OUTLAND_FISHING = 2591, + SKILL_FISHING_2 = 2592, + SKILL_RACIAL_DARK_IRON_DWARF = 2597, + SKILL_RACIAL_MAG_HAR_ORC = 2598, + SKILL_PET_LIZARD = 2703, + SKILL_PET_HORSE = 2704, + SKILL_PET_EXOTIC_PTERRORDAX = 2705, + SKILL_PET_TOAD = 2706, + SKILL_PET_EXOTIC_KROLUSK = 2707, + SKILL_SECOND_PET_HUNTER = 2716 }; inline SkillType SkillByLockType(LockType locktype) @@ -4425,7 +4553,6 @@ inline uint32 SkillByQuestSort(int32 QuestSort) case QUEST_SORT_ENGINEERING: return SKILL_ENGINEERING; case QUEST_SORT_TAILORING: return SKILL_TAILORING; case QUEST_SORT_COOKING: return SKILL_COOKING; - case QUEST_SORT_FIRST_AID: return SKILL_FIRST_AID; case QUEST_SORT_JEWELCRAFTING: return SKILL_JEWELCRAFTING; case QUEST_SORT_INSCRIPTION: return SKILL_INSCRIPTION; case QUEST_SORT_ARCHAEOLOGY: return SKILL_ARCHAEOLOGY; @@ -4772,52 +4899,54 @@ enum ResponseCodes CHAR_CREATE_THROTTLE = 49, CHAR_CREATE_ALLIED_RACE_ACHIEVEMENT = 50, CHAR_CREATE_LEVEL_REQUIREMENT_DEMON_HUNTER = 51, - - CHAR_DELETE_IN_PROGRESS = 52, - CHAR_DELETE_SUCCESS = 53, - CHAR_DELETE_FAILED = 54, - CHAR_DELETE_FAILED_LOCKED_FOR_TRANSFER = 55, - CHAR_DELETE_FAILED_GUILD_LEADER = 56, - CHAR_DELETE_FAILED_ARENA_CAPTAIN = 57, - CHAR_DELETE_FAILED_HAS_HEIRLOOM_OR_MAIL = 58, - CHAR_DELETE_FAILED_UPGRADE_IN_PROGRESS = 59, - CHAR_DELETE_FAILED_HAS_WOW_TOKEN = 60, - CHAR_DELETE_FAILED_VAS_TRANSACTION_IN_PROGRESS = 61, - - CHAR_LOGIN_IN_PROGRESS = 62, - CHAR_LOGIN_SUCCESS = 63, - CHAR_LOGIN_NO_WORLD = 64, - CHAR_LOGIN_DUPLICATE_CHARACTER = 65, - CHAR_LOGIN_NO_INSTANCES = 66, - CHAR_LOGIN_FAILED = 67, - CHAR_LOGIN_DISABLED = 68, - CHAR_LOGIN_NO_CHARACTER = 69, - CHAR_LOGIN_LOCKED_FOR_TRANSFER = 70, - CHAR_LOGIN_LOCKED_BY_BILLING = 71, - CHAR_LOGIN_LOCKED_BY_MOBILE_AH = 72, - CHAR_LOGIN_TEMPORARY_GM_LOCK = 73, - CHAR_LOGIN_LOCKED_BY_CHARACTER_UPGRADE = 74, - CHAR_LOGIN_LOCKED_BY_REVOKED_CHARACTER_UPGRADE = 75, - CHAR_LOGIN_LOCKED_BY_REVOKED_VAS_TRANSACTION = 76, - CHAR_LOGIN_LOCKED_BY_RESTRICTION = 77, - - CHAR_NAME_SUCCESS = 78, - CHAR_NAME_FAILURE = 79, - CHAR_NAME_NO_NAME = 80, - CHAR_NAME_TOO_SHORT = 81, - CHAR_NAME_TOO_LONG = 82, - CHAR_NAME_INVALID_CHARACTER = 83, - CHAR_NAME_MIXED_LANGUAGES = 84, - CHAR_NAME_PROFANE = 85, - CHAR_NAME_RESERVED = 86, - CHAR_NAME_INVALID_APOSTROPHE = 87, - CHAR_NAME_MULTIPLE_APOSTROPHES = 88, - CHAR_NAME_THREE_CONSECUTIVE = 89, - CHAR_NAME_INVALID_SPACE = 90, - CHAR_NAME_CONSECUTIVE_SPACES = 91, - CHAR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS = 92, - CHAR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 93, - CHAR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 94 + CHAR_CREATE_CHARACTER_IN_COMMUNITY = 52, + + CHAR_DELETE_IN_PROGRESS = 53, + CHAR_DELETE_SUCCESS = 54, + CHAR_DELETE_FAILED = 55, + CHAR_DELETE_FAILED_LOCKED_FOR_TRANSFER = 56, + CHAR_DELETE_FAILED_GUILD_LEADER = 57, + CHAR_DELETE_FAILED_ARENA_CAPTAIN = 58, + CHAR_DELETE_FAILED_HAS_HEIRLOOM_OR_MAIL = 59, + CHAR_DELETE_FAILED_UPGRADE_IN_PROGRESS = 60, + CHAR_DELETE_FAILED_HAS_WOW_TOKEN = 61, + CHAR_DELETE_FAILED_VAS_TRANSACTION_IN_PROGRESS = 62, + CHAR_DELETE_FAILED_COMMUNITY_OWNER = 63, + + CHAR_LOGIN_IN_PROGRESS = 64, + CHAR_LOGIN_SUCCESS = 65, + CHAR_LOGIN_NO_WORLD = 66, + CHAR_LOGIN_DUPLICATE_CHARACTER = 67, + CHAR_LOGIN_NO_INSTANCES = 68, + CHAR_LOGIN_FAILED = 69, + CHAR_LOGIN_DISABLED = 70, + CHAR_LOGIN_NO_CHARACTER = 71, + CHAR_LOGIN_LOCKED_FOR_TRANSFER = 72, + CHAR_LOGIN_LOCKED_BY_BILLING = 73, + CHAR_LOGIN_LOCKED_BY_MOBILE_AH = 74, + CHAR_LOGIN_TEMPORARY_GM_LOCK = 75, + CHAR_LOGIN_LOCKED_BY_CHARACTER_UPGRADE = 76, + CHAR_LOGIN_LOCKED_BY_REVOKED_CHARACTER_UPGRADE = 77, + CHAR_LOGIN_LOCKED_BY_REVOKED_VAS_TRANSACTION = 78, + CHAR_LOGIN_LOCKED_BY_RESTRICTION = 79, + + CHAR_NAME_SUCCESS = 80, + CHAR_NAME_FAILURE = 81, + CHAR_NAME_NO_NAME = 82, + CHAR_NAME_TOO_SHORT = 83, + CHAR_NAME_TOO_LONG = 84, + CHAR_NAME_INVALID_CHARACTER = 85, + CHAR_NAME_MIXED_LANGUAGES = 86, + CHAR_NAME_PROFANE = 87, + CHAR_NAME_RESERVED = 88, + CHAR_NAME_INVALID_APOSTROPHE = 89, + CHAR_NAME_MULTIPLE_APOSTROPHES = 90, + CHAR_NAME_THREE_CONSECUTIVE = 91, + CHAR_NAME_INVALID_SPACE = 92, + CHAR_NAME_CONSECUTIVE_SPACES = 93, + CHAR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS = 94, + CHAR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 95, + CHAR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 96 }; enum CharacterUndeleteResult diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index 6a71256a77b..1a6f95244a9 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -37,38 +37,40 @@ Quest::Quest(Field* questRecord) ID = questRecord[0].GetUInt32(); Type = questRecord[1].GetUInt8(); Level = questRecord[2].GetInt32(); - MaxScalingLevel = questRecord[3].GetInt32(); - PackageID = questRecord[4].GetUInt32(); - MinLevel = questRecord[5].GetInt32(); - QuestSortID = questRecord[6].GetInt16(); - QuestInfoID = questRecord[7].GetUInt16(); - SuggestedPlayers = questRecord[8].GetUInt8(); - NextQuestInChain = questRecord[9].GetUInt32(); - RewardXPDifficulty = questRecord[10].GetUInt32(); - RewardXPMultiplier = questRecord[11].GetFloat(); - RewardMoney = questRecord[12].GetUInt32(); - RewardMoneyDifficulty = questRecord[13].GetUInt32(); - RewardMoneyMultiplier = questRecord[14].GetFloat(); - RewardBonusMoney = questRecord[15].GetUInt32(); + ScalingFactionGroup = questRecord[3].GetInt32(); + MaxScalingLevel = questRecord[4].GetInt32(); + PackageID = questRecord[5].GetUInt32(); + MinLevel = questRecord[6].GetInt32(); + QuestSortID = questRecord[7].GetInt16(); + QuestInfoID = questRecord[8].GetUInt16(); + SuggestedPlayers = questRecord[9].GetUInt8(); + NextQuestInChain = questRecord[10].GetUInt32(); + RewardXPDifficulty = questRecord[11].GetUInt32(); + RewardXPMultiplier = questRecord[12].GetFloat(); + RewardMoney = questRecord[13].GetUInt32(); + RewardMoneyDifficulty = questRecord[14].GetUInt32(); + RewardMoneyMultiplier = questRecord[15].GetFloat(); + RewardBonusMoney = questRecord[16].GetUInt32(); for (uint32 i = 0; i < QUEST_REWARD_DISPLAY_SPELL_COUNT; ++i) - RewardDisplaySpell[i] = questRecord[16 + i].GetUInt32(); - - RewardSpell = questRecord[19].GetUInt32(); - RewardHonor = questRecord[20].GetUInt32(); - RewardKillHonor = questRecord[21].GetUInt32(); - SourceItemId = questRecord[22].GetUInt32(); - RewardArtifactXPDifficulty = questRecord[23].GetUInt32(); - RewardArtifactXPMultiplier = questRecord[24].GetFloat(); - RewardArtifactCategoryID = questRecord[25].GetUInt32(); - Flags = questRecord[26].GetUInt32(); - FlagsEx = questRecord[27].GetUInt32(); + RewardDisplaySpell[i] = questRecord[17 + i].GetUInt32(); + + RewardSpell = questRecord[20].GetUInt32(); + RewardHonor = questRecord[21].GetUInt32(); + RewardKillHonor = questRecord[22].GetUInt32(); + SourceItemId = questRecord[23].GetUInt32(); + RewardArtifactXPDifficulty = questRecord[24].GetUInt32(); + RewardArtifactXPMultiplier = questRecord[25].GetFloat(); + RewardArtifactCategoryID = questRecord[26].GetUInt32(); + Flags = questRecord[27].GetUInt32(); + FlagsEx = questRecord[28].GetUInt32(); + FlagsEx2 = questRecord[29].GetUInt32(); for (uint32 i = 0; i < QUEST_ITEM_DROP_COUNT; ++i) { - RewardItemId[i] = questRecord[28 + i * 4].GetUInt32(); - RewardItemCount[i] = questRecord[29 + i * 4].GetUInt32(); - ItemDrop[i] = questRecord[30 + i * 4].GetUInt32(); - ItemDropQuantity[i] = questRecord[31 + i * 4].GetUInt32(); + RewardItemId[i] = questRecord[30 + i * 4].GetUInt32(); + RewardItemCount[i] = questRecord[31 + i * 4].GetUInt32(); + ItemDrop[i] = questRecord[32 + i * 4].GetUInt32(); + ItemDropQuantity[i] = questRecord[33 + i * 4].GetUInt32(); if (RewardItemId[i]) ++_rewItemsCount; @@ -76,63 +78,64 @@ Quest::Quest(Field* questRecord) for (uint32 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i) { - RewardChoiceItemId[i] = questRecord[44 + i * 3].GetUInt32(); - RewardChoiceItemCount[i] = questRecord[45 + i * 3].GetUInt32(); - RewardChoiceItemDisplayId[i] = questRecord[46 + i * 3].GetUInt32(); + RewardChoiceItemId[i] = questRecord[46 + i * 3].GetUInt32(); + RewardChoiceItemCount[i] = questRecord[47 + i * 3].GetUInt32(); + RewardChoiceItemDisplayId[i] = questRecord[48 + i * 3].GetUInt32(); if (RewardChoiceItemId[i]) ++_rewChoiceItemsCount; } - POIContinent = questRecord[62].GetUInt32(); - POIx = questRecord[63].GetFloat(); - POIy = questRecord[64].GetFloat(); - POIPriority = questRecord[65].GetUInt32(); + POIContinent = questRecord[64].GetUInt32(); + POIx = questRecord[65].GetFloat(); + POIy = questRecord[66].GetFloat(); + POIPriority = questRecord[67].GetUInt32(); - RewardTitleId = questRecord[66].GetUInt32(); - RewardArenaPoints = questRecord[67].GetUInt32(); - RewardSkillId = questRecord[68].GetUInt32(); - RewardSkillPoints = questRecord[69].GetUInt32(); + RewardTitleId = questRecord[68].GetUInt32(); + RewardArenaPoints = questRecord[69].GetUInt32(); + RewardSkillId = questRecord[70].GetUInt32(); + RewardSkillPoints = questRecord[71].GetUInt32(); - QuestGiverPortrait = questRecord[70].GetUInt32(); - QuestTurnInPortrait = questRecord[71].GetUInt32(); + QuestGiverPortrait = questRecord[72].GetUInt32(); + QuestGiverPortraitMount = questRecord[73].GetUInt32(); + QuestTurnInPortrait = questRecord[74].GetUInt32(); for (uint32 i = 0; i < QUEST_REWARD_REPUTATIONS_COUNT; ++i) { - RewardFactionId[i] = questRecord[72 + i * 4].GetUInt32(); - RewardFactionValue[i] = questRecord[73 + i * 4].GetInt32(); - RewardFactionOverride[i] = questRecord[74 + i * 4].GetInt32(); - RewardFactionCapIn[i] = questRecord[75 + i * 4].GetUInt32(); + RewardFactionId[i] = questRecord[75 + i * 4].GetUInt32(); + RewardFactionValue[i] = questRecord[76 + i * 4].GetInt32(); + RewardFactionOverride[i] = questRecord[77 + i * 4].GetInt32(); + RewardFactionCapIn[i] = questRecord[78 + i * 4].GetUInt32(); } - RewardReputationMask = questRecord[92].GetUInt32(); + RewardReputationMask = questRecord[95].GetUInt32(); for (uint32 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i) { - RewardCurrencyId[i] = questRecord[93 + i * 2].GetUInt32(); - RewardCurrencyCount[i] = questRecord[94 + i * 2].GetUInt32(); + RewardCurrencyId[i] = questRecord[96 + i * 2].GetUInt32(); + RewardCurrencyCount[i] = questRecord[97 + i * 2].GetUInt32(); if (RewardCurrencyId[i]) ++_rewCurrencyCount; } - SoundAccept = questRecord[101].GetUInt32(); - SoundTurnIn = questRecord[102].GetUInt32(); - AreaGroupID = questRecord[103].GetUInt32(); - LimitTime = questRecord[104].GetUInt32(); - AllowableRaces = questRecord[105].GetUInt64(); - QuestRewardID = questRecord[106].GetUInt32(); - Expansion = questRecord[107].GetInt32(); - - LogTitle = questRecord[108].GetString(); - LogDescription = questRecord[109].GetString(); - QuestDescription = questRecord[110].GetString(); - AreaDescription = questRecord[111].GetString(); - PortraitGiverText = questRecord[112].GetString(); - PortraitGiverName = questRecord[113].GetString(); - PortraitTurnInText = questRecord[114].GetString(); - PortraitTurnInName = questRecord[115].GetString(); - QuestCompletionLog = questRecord[116].GetString(); + SoundAccept = questRecord[104].GetUInt32(); + SoundTurnIn = questRecord[105].GetUInt32(); + AreaGroupID = questRecord[106].GetUInt32(); + LimitTime = questRecord[107].GetUInt32(); + AllowableRaces = questRecord[108].GetUInt64(); + TreasurePickerID = questRecord[109].GetInt32(); + Expansion = questRecord[110].GetInt32(); + + LogTitle = questRecord[111].GetString(); + LogDescription = questRecord[112].GetString(); + QuestDescription = questRecord[113].GetString(); + AreaDescription = questRecord[114].GetString(); + PortraitGiverText = questRecord[115].GetString(); + PortraitGiverName = questRecord[116].GetString(); + PortraitTurnInText = questRecord[117].GetString(); + PortraitTurnInName = questRecord[118].GetString(); + QuestCompletionLog = questRecord[119].GetString(); for (uint32 i = 0; i < QUEST_EMOTE_COUNT; ++i) { @@ -255,20 +258,20 @@ void Quest::LoadQuestObjectiveVisualEffect(Field* fields) } } -uint32 Quest::XPValue(uint32 playerLevel) const +uint32 Quest::XPValue(Player const* player) const { - if (playerLevel) + if (player) { - uint32 questLevel = uint32(Level == -1 ? playerLevel : Level); + uint32 questLevel = player->GetQuestLevel(this); QuestXPEntry const* questXp = sQuestXPStore.LookupEntry(questLevel); if (!questXp || RewardXPDifficulty >= 10) return 0; float multiplier = 1.0f; - if (questLevel != playerLevel) - multiplier = sXpGameTable.GetRow(std::min(playerLevel, questLevel))->Divisor / sXpGameTable.GetRow(playerLevel)->Divisor; + if (questLevel != player->getLevel()) + multiplier = sXpGameTable.GetRow(std::min(player->getLevel(), questLevel))->Divisor / sXpGameTable.GetRow(player->getLevel())->Divisor; - int32 diffFactor = 2 * (questLevel - playerLevel) + 20; + int32 diffFactor = 2 * (questLevel + (Level == -1 ? 0 : 5) - player->getLevel()) + 10; if (diffFactor < 1) diffFactor = 1; else if (diffFactor > 10) @@ -290,11 +293,9 @@ uint32 Quest::XPValue(uint32 playerLevel) const return 0; } -uint32 Quest::MoneyValue(uint8 playerLevel) const +uint32 Quest::MoneyValue(Player const* player) const { - uint8 level = Level == -1 ? playerLevel : Level; - - if (QuestMoneyRewardEntry const* money = sQuestMoneyRewardStore.LookupEntry(level)) + if (QuestMoneyRewardEntry const* money = sQuestMoneyRewardStore.LookupEntry(player->GetQuestLevel(this))) return money->Difficulty[GetRewMoneyDifficulty()] * GetMoneyMultiplier(); else return 0; @@ -315,11 +316,11 @@ void Quest::BuildQuestRewards(WorldPackets::Quest::QuestRewards& rewards, Player rewards.SpellCompletionID = GetRewSpell(); rewards.SkillLineID = GetRewardSkillId(); rewards.NumSkillUps = GetRewardSkillPoints(); - rewards.RewardID = GetRewardId(); + rewards.TreasurePickerID = GetTreasurePickerId(); for (uint32 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i) { - rewards.ChoiceItems[i].ItemID = RewardChoiceItemId[i]; + rewards.ChoiceItems[i].Item.ItemID = RewardChoiceItemId[i]; rewards.ChoiceItems[i].Quantity = RewardChoiceItemCount[i]; } diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h index adbec0efd6c..a8d2d5a701c 100644 --- a/src/server/game/Quests/QuestDef.h +++ b/src/server/game/Quests/QuestDef.h @@ -200,6 +200,11 @@ enum QuestFlagsEx : uint32 QUEST_FLAGS_EX_CLEAR_PROGRESS_OF_CRITERIA_TREE_OBJECTIVES_ON_ACCEPT = 0x1000000 }; +enum QuestFlagsEx2 : uint32 +{ + QUEST_FLAGS_EX2_NO_WAR_MODE_BONUS = 0x2 +}; + enum QuestSpecialFlags { QUEST_SPECIAL_FLAGS_NONE = 0x000, @@ -348,17 +353,16 @@ class TC_GAME_API Quest void LoadQuestObjective(Field* fields); void LoadQuestObjectiveVisualEffect(Field* fields); - uint32 XPValue(uint32 playerLevel) const; - uint32 MoneyValue(uint8 playerLevel) const; + uint32 XPValue(Player const* player) const; + uint32 MoneyValue(Player const* player) const; - bool HasFlag(uint32 flag) const { return (Flags & flag) != 0; } - void SetFlag(uint32 flag) { Flags |= flag; } + bool HasFlag(QuestFlags flag) const { return (Flags & uint32(flag)) != 0; } + bool HasFlagEx(QuestFlagsEx flag) const { return (FlagsEx & uint32(flag)) != 0; } + bool HasFlagEx2(QuestFlagsEx2 flag) const { return (FlagsEx2 & uint32(flag)) != 0; } bool HasSpecialFlag(uint32 flag) const { return (SpecialFlags & flag) != 0; } void SetSpecialFlag(uint32 flag) { SpecialFlags |= flag; } - bool HasFlagEx(QuestFlagsEx flag) const { return (FlagsEx & uint32(flag)) != 0; } - // table data accessors: uint32 GetQuestId() const { return ID; } uint32 GetQuestType() const { return Type; } @@ -367,6 +371,7 @@ class TC_GAME_API Quest int32 GetMinLevel() const { return MinLevel; } uint32 GetMaxLevel() const { return MaxLevel; } int32 GetQuestLevel() const { return Level; } + int32 GetQuestScalingFactionGroup() const { return ScalingFactionGroup; } int32 GetQuestMaxScalingLevel() const { return MaxScalingLevel; } uint32 GetQuestInfoID() const { return QuestInfoID; } uint32 GetAllowableClasses() const { return AllowableClasses; } @@ -427,15 +432,17 @@ class TC_GAME_API Quest bool IsAutoComplete() const; uint32 GetFlags() const { return Flags; } uint32 GetFlagsEx() const { return FlagsEx; } + uint32 GetFlagsEx2() const { return FlagsEx2; } uint32 GetSpecialFlags() const { return SpecialFlags; } uint32 GetScriptId() const { return ScriptId; } uint32 GetAreaGroupID() const { return AreaGroupID; } uint32 GetRewardSkillId() const { return RewardSkillId; } uint32 GetRewardSkillPoints() const { return RewardSkillPoints; } uint32 GetRewardReputationMask() const { return RewardReputationMask; } - uint32 GetRewardId() const { return QuestRewardID; } + int32 GetTreasurePickerId() const { return TreasurePickerID; } int32 GetExpansion() const { return Expansion; } uint32 GetQuestGiverPortrait() const { return QuestGiverPortrait; } + int32 GetQuestGiverPortraitMount() const { return QuestGiverPortraitMount; } uint32 GetQuestTurnInPortrait() const { return QuestTurnInPortrait; } bool IsDaily() const { return (Flags & QUEST_FLAGS_DAILY) != 0; } bool IsWeekly() const { return (Flags & QUEST_FLAGS_WEEKLY) != 0; } @@ -469,6 +476,7 @@ class TC_GAME_API Quest uint32 ID; uint32 Type; int32 Level; + int32 ScalingFactionGroup; int32 MaxScalingLevel; uint32 PackageID; int32 MinLevel; @@ -492,6 +500,7 @@ class TC_GAME_API Quest uint32 SourceItemId; uint32 Flags; uint32 FlagsEx; + uint32 FlagsEx2; uint32 RewardItemId[QUEST_REWARD_ITEM_COUNT]; uint32 RewardItemCount[QUEST_REWARD_ITEM_COUNT]; uint32 ItemDrop[QUEST_ITEM_DROP_COUNT]; @@ -508,6 +517,7 @@ class TC_GAME_API Quest uint32 RewardSkillId; uint32 RewardSkillPoints; uint32 QuestGiverPortrait; + int32 QuestGiverPortraitMount; uint32 QuestTurnInPortrait; uint32 RewardFactionId[QUEST_REWARD_REPUTATIONS_COUNT]; int32 RewardFactionValue[QUEST_REWARD_REPUTATIONS_COUNT]; @@ -521,7 +531,7 @@ class TC_GAME_API Quest uint32 AreaGroupID; uint32 LimitTime; uint64 AllowableRaces; - uint32 QuestRewardID; + int32 TreasurePickerID; int32 Expansion; QuestObjectives Objectives; std::string LogTitle; diff --git a/src/server/game/Scenarios/ScenarioMgr.cpp b/src/server/game/Scenarios/ScenarioMgr.cpp index c70e560efd7..1fb6dc4d18b 100644 --- a/src/server/game/Scenarios/ScenarioMgr.cpp +++ b/src/server/game/Scenarios/ScenarioMgr.cpp @@ -147,8 +147,8 @@ void ScenarioMgr::LoadScenarioPOI() uint32 count = 0; - // 0 1 2 6 7 8 9 10 11 12 - QueryResult result = WorldDatabase.Query("SELECT CriteriaTreeID, BlobIndex, Idx1, MapID, WorldMapAreaId, Floor, Priority, Flags, WorldEffectID, PlayerConditionID FROM scenario_poi ORDER BY CriteriaTreeID, Idx1"); + // 0 1 2 3 4 5 6 7 8 + QueryResult result = WorldDatabase.Query("SELECT CriteriaTreeID, BlobIndex, Idx1, MapID, UiMapID, Priority, Flags, WorldEffectID, PlayerConditionID FROM scenario_poi ORDER BY CriteriaTreeID, Idx1"); if (!result) { TC_LOG_ERROR("server.loading", ">> Loaded 0 scenario POI definitions. DB table `scenario_poi` is empty."); @@ -188,24 +188,23 @@ void ScenarioMgr::LoadScenarioPOI() { Field* fields = result->Fetch(); - int32 CriteriaTreeID = fields[0].GetInt32(); - int32 BlobIndex = fields[1].GetInt32(); - int32 Idx1 = fields[2].GetInt32(); - int32 MapID = fields[3].GetInt32(); - int32 WorldMapAreaId = fields[4].GetInt32(); - int32 Floor = fields[5].GetInt32(); - int32 Priority = fields[6].GetInt32(); - int32 Flags = fields[7].GetInt32(); - int32 WorldEffectID = fields[8].GetInt32(); - int32 PlayerConditionID = fields[9].GetInt32(); - - if (!sCriteriaMgr->GetCriteriaTree(CriteriaTreeID)) - TC_LOG_ERROR("sql.sql", "`scenario_poi` CriteriaTreeID (%u) Idx1 (%u) does not correspond to a valid criteria tree", CriteriaTreeID, Idx1); - - if (CriteriaTreeID < int32(POIs.size()) && Idx1 < int32(POIs[CriteriaTreeID].size())) - _scenarioPOIStore[CriteriaTreeID].emplace_back(BlobIndex, MapID, WorldMapAreaId, Floor, Priority, Flags, WorldEffectID, PlayerConditionID, POIs[CriteriaTreeID][Idx1]); + int32 criteriaTreeID = fields[0].GetInt32(); + int32 blobIndex = fields[1].GetInt32(); + int32 idx1 = fields[2].GetInt32(); + int32 mapID = fields[3].GetInt32(); + int32 uiMapID = fields[4].GetInt32(); + int32 priority = fields[5].GetInt32(); + int32 flags = fields[6].GetInt32(); + int32 worldEffectID = fields[7].GetInt32(); + int32 playerConditionID = fields[8].GetInt32(); + + if (!sCriteriaMgr->GetCriteriaTree(criteriaTreeID)) + TC_LOG_ERROR("sql.sql", "`scenario_poi` CriteriaTreeID (%u) Idx1 (%u) does not correspond to a valid criteria tree", criteriaTreeID, idx1); + + if (criteriaTreeID < int32(POIs.size()) && idx1 < int32(POIs[criteriaTreeID].size())) + _scenarioPOIStore[criteriaTreeID].emplace_back(blobIndex, mapID, uiMapID, priority, flags, worldEffectID, playerConditionID, POIs[criteriaTreeID][idx1]); else - TC_LOG_ERROR("server.loading", "Table scenario_poi references unknown scenario poi points for criteria tree id %i POI id %i", CriteriaTreeID, BlobIndex); + TC_LOG_ERROR("server.loading", "Table scenario_poi references unknown scenario poi points for criteria tree id %i POI id %i", criteriaTreeID, blobIndex); ++count; } while (result->NextRow()); diff --git a/src/server/game/Scenarios/ScenarioMgr.h b/src/server/game/Scenarios/ScenarioMgr.h index 93a1f3a320f..932d4decce9 100644 --- a/src/server/game/Scenarios/ScenarioMgr.h +++ b/src/server/game/Scenarios/ScenarioMgr.h @@ -74,23 +74,22 @@ struct ScenarioPOI { int32 BlobIndex; int32 MapID; - int32 WorldMapAreaID; - int32 Floor; + int32 UiMapID; int32 Priority; int32 Flags; int32 WorldEffectID; int32 PlayerConditionID; std::vector Points; - ScenarioPOI() : BlobIndex(0), MapID(0), WorldMapAreaID(0), Floor(0), Priority(0), Flags(0), WorldEffectID(0), PlayerConditionID(0) { } + ScenarioPOI() : BlobIndex(0), MapID(0), UiMapID(0), Priority(0), Flags(0), WorldEffectID(0), PlayerConditionID(0) { } - ScenarioPOI(int32 _BlobIndex, int32 _MapID, int32 _WorldMapAreaID, int32 _Floor, int32 _Priority, int32 _Flags, int32 _WorldEffectID, - int32 _PlayerConditionID, std::vector points) : - BlobIndex(_BlobIndex), MapID(_MapID), WorldMapAreaID(_WorldMapAreaID), Floor(_Floor), Priority(_Priority), Flags(_Flags), WorldEffectID(_WorldEffectID), - PlayerConditionID(_PlayerConditionID), Points(std::move(points)) { } + ScenarioPOI(int32 blobIndex, int32 mapID, int32 uiMapID, int32 priority, int32 flags, int32 worldEffectID, + int32 playerConditionID, std::vector points) : + BlobIndex(blobIndex), MapID(mapID), UiMapID(uiMapID), Priority(priority), Flags(flags), WorldEffectID(worldEffectID), + PlayerConditionID(playerConditionID), Points(std::move(points)) { } ScenarioPOI(ScenarioPOI&& scenarioPOI) : - BlobIndex(scenarioPOI.BlobIndex), MapID(scenarioPOI.MapID), WorldMapAreaID(scenarioPOI.WorldMapAreaID), Floor(scenarioPOI.Floor), Priority(scenarioPOI.Priority), + BlobIndex(scenarioPOI.BlobIndex), MapID(scenarioPOI.MapID), UiMapID(scenarioPOI.UiMapID), Priority(scenarioPOI.Priority), Flags(scenarioPOI.Flags), WorldEffectID(scenarioPOI.WorldEffectID), PlayerConditionID(scenarioPOI.PlayerConditionID), Points(std::move(scenarioPOI.Points)) { } }; diff --git a/src/server/game/Server/Packets/AchievementPackets.h b/src/server/game/Server/Packets/AchievementPackets.h index b6e346aaefe..69262eae72f 100644 --- a/src/server/game/Server/Packets/AchievementPackets.h +++ b/src/server/game/Server/Packets/AchievementPackets.h @@ -101,7 +101,7 @@ namespace WorldPackets class AchievementDeleted final : public ServerPacket { public: - AchievementDeleted() : ServerPacket(SMSG_ACHIEVEMENT_DELETED, 4) { } + AchievementDeleted() : ServerPacket(SMSG_ACHIEVEMENT_DELETED, 8) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/AreaTriggerPackets.cpp b/src/server/game/Server/Packets/AreaTriggerPackets.cpp index f99d9831f91..6b4047d0995 100644 --- a/src/server/game/Server/Packets/AreaTriggerPackets.cpp +++ b/src/server/game/Server/Packets/AreaTriggerPackets.cpp @@ -33,7 +33,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::AreaTrigger::AreaTriggerS ByteBuffer& operator<<(ByteBuffer& data, AreaTriggerCircularMovementInfo const& areaTriggerCircularMovement) { - data.WriteBit(areaTriggerCircularMovement.TargetGUID.is_initialized()); + data.WriteBit(areaTriggerCircularMovement.PathTarget.is_initialized()); data.WriteBit(areaTriggerCircularMovement.Center.is_initialized()); data.WriteBit(areaTriggerCircularMovement.CounterClockwise); data.WriteBit(areaTriggerCircularMovement.CanLoop); @@ -46,8 +46,8 @@ ByteBuffer& operator<<(ByteBuffer& data, AreaTriggerCircularMovementInfo const& data << float(areaTriggerCircularMovement.InitialAngle); data << float(areaTriggerCircularMovement.ZOffset); - if (areaTriggerCircularMovement.TargetGUID) - data << *areaTriggerCircularMovement.TargetGUID; + if (areaTriggerCircularMovement.PathTarget) + data << *areaTriggerCircularMovement.PathTarget; if (areaTriggerCircularMovement.Center) data << *areaTriggerCircularMovement.Center; @@ -72,14 +72,6 @@ WorldPacket const* WorldPackets::AreaTrigger::AreaTriggerDenied::Write() } WorldPacket const* WorldPackets::AreaTrigger::AreaTriggerRePath::Write() -{ - _worldPacket << TriggerGUID; - _worldPacket << AreaTriggerSpline; - - return &_worldPacket; -} - -WorldPacket const* WorldPackets::AreaTrigger::AreaTriggerReShape::Write() { _worldPacket << TriggerGUID; diff --git a/src/server/game/Server/Packets/AreaTriggerPackets.h b/src/server/game/Server/Packets/AreaTriggerPackets.h index e3872493481..b3abf08c5d9 100644 --- a/src/server/game/Server/Packets/AreaTriggerPackets.h +++ b/src/server/game/Server/Packets/AreaTriggerPackets.h @@ -68,18 +68,7 @@ namespace WorldPackets class AreaTriggerRePath final : public ServerPacket { public: - AreaTriggerRePath() : ServerPacket(SMSG_AREA_TRIGGER_RE_PATH, 50) { } - - WorldPacket const* Write() override; - - AreaTriggerSplineInfo AreaTriggerSpline; - ObjectGuid TriggerGUID; - }; - - class AreaTriggerReShape final : public ServerPacket - { - public: - AreaTriggerReShape() : ServerPacket(SMSG_AREA_TRIGGER_RE_SHAPE, 17) { } + AreaTriggerRePath() : ServerPacket(SMSG_AREA_TRIGGER_RE_PATH, 17) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index c28b8281ede..44e9608bddd 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -84,8 +84,6 @@ void WorldPackets::Auth::AuthSession::Read() uint32 realmJoinTicketSize; _worldPacket >> DosResponse; - _worldPacket >> Build; - _worldPacket >> BuildType; _worldPacket >> RegionID; _worldPacket >> BattlegroupID; _worldPacket >> RealmID; @@ -145,6 +143,7 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write() _worldPacket.WriteBit(SuccessInfo->ForceCharacterTemplate); _worldPacket.WriteBit(SuccessInfo->NumPlayersHorde.is_initialized()); _worldPacket.WriteBit(SuccessInfo->NumPlayersAlliance.is_initialized()); + _worldPacket.WriteBit(SuccessInfo->ExpansionTrialExpiration.is_initialized()); _worldPacket.FlushBits(); { @@ -164,6 +163,9 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write() if (SuccessInfo->NumPlayersAlliance) _worldPacket << uint16(*SuccessInfo->NumPlayersAlliance); + if (SuccessInfo->ExpansionTrialExpiration) + _worldPacket << int32(*SuccessInfo->ExpansionTrialExpiration); + for (VirtualRealmInfo const& virtualRealm : SuccessInfo->VirtualRealms) _worldPacket << virtualRealm; diff --git a/src/server/game/Server/Packets/AuthenticationPackets.h b/src/server/game/Server/Packets/AuthenticationPackets.h index 97662944f09..7b0e50844bb 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.h +++ b/src/server/game/Server/Packets/AuthenticationPackets.h @@ -83,8 +83,6 @@ namespace WorldPackets Digest.fill(0); } - uint16 Build = 0; - int8 BuildType = 0; uint32 RegionID = 0; uint32 BattlegroupID = 0; uint32 RealmID = 0; @@ -159,6 +157,7 @@ namespace WorldPackets bool ForceCharacterTemplate = false; ///< forces the client to always use a character template when creating a new character. @see Templates. @todo implement Optional NumPlayersHorde; ///< number of horde players in this realm. @todo implement Optional NumPlayersAlliance; ///< number of alliance players in this realm. @todo implement + Optional ExpansionTrialExpiration; ///< expansion trial expiration unix timestamp }; AuthResponse(); diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp index 05851fb1dfd..14ae46e105a 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.cpp +++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp @@ -67,9 +67,11 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPLogData: data << uint32(playerData.HealingDone); data << uint32(playerData.Stats.size()); data << int32(playerData.PrimaryTalentTree); - data << int32(playerData.PrimaryTalentTreeNameIndex); + data << int32(playerData.Sex); data << int32(playerData.Race); - data << uint32(playerData.Prestige); + data << int32(playerData.Class); + data << int32(playerData.CreatureID); + data << int32(playerData.HonorLevel); if (!playerData.Stats.empty()) data.append(playerData.Stats.data(), playerData.Stats.size()); @@ -89,13 +91,13 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Battleground::PVPLogData: data << uint32(*playerData.PreMatchRating); if (playerData.RatingChange) - data << uint32(*playerData.RatingChange); + data << int32(*playerData.RatingChange); if (playerData.PreMatchMMR) data << uint32(*playerData.PreMatchMMR); if (playerData.MmrChange) - data << uint32(*playerData.MmrChange); + data << int32(*playerData.MmrChange); return data; } diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h index 7340d8d7fc9..14ebc283cb5 100644 --- a/src/server/game/Server/Packets/BattlegroundPackets.h +++ b/src/server/game/Server/Packets/BattlegroundPackets.h @@ -122,9 +122,11 @@ namespace WorldPackets Optional MmrChange; std::vector Stats; int32 PrimaryTalentTree = 0; - int32 PrimaryTalentTreeNameIndex = 0; // controls which name field from ChrSpecialization.dbc will be sent to lua + int32 Sex = 0; int32 Race = 0; - uint32 Prestige = 0; + int32 Class = 0; + int32 CreatureID = 0; + int32 HonorLevel = 0; }; Optional Winner; diff --git a/src/server/game/Server/Packets/CalendarPackets.cpp b/src/server/game/Server/Packets/CalendarPackets.cpp index 45812c01ca6..7c82bd9d377 100644 --- a/src/server/game/Server/Packets/CalendarPackets.cpp +++ b/src/server/game/Server/Packets/CalendarPackets.cpp @@ -24,7 +24,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Calendar::CalendarSendCal data.AppendPackedTime(eventInfo.Date); data << uint32(eventInfo.Flags); data << int32(eventInfo.TextureID); - data << eventInfo.EventGuildID; + data << uint64(eventInfo.EventClubID); data << eventInfo.OwnerGuid; data.WriteBits(eventInfo.EventName.size(), 8); @@ -82,6 +82,7 @@ void WorldPackets::Calendar::CalendarGetEvent::Read() void WorldPackets::Calendar::CalendarCommunityFilter::Read() { + _worldPacket >> ClubID; _worldPacket >> MinLevel; _worldPacket >> MaxLevel; _worldPacket >> MaxRankOrder; @@ -92,26 +93,45 @@ ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Calendar::CalendarAddEv buffer >> invite.Guid; buffer >> invite.Status; buffer >> invite.Moderator; + if (buffer.ReadBit()) + invite.Unused_801_1 = boost::in_place(); + + if (buffer.ReadBit()) + invite.Unused_801_2 = boost::in_place(); + + if (buffer.ReadBit()) + invite.Unused_801_3 = boost::in_place(); + + if (invite.Unused_801_1) + buffer >> *invite.Unused_801_1; + + if (invite.Unused_801_2) + buffer >> *invite.Unused_801_2; + + if (invite.Unused_801_3) + buffer >> *invite.Unused_801_3; + return buffer; } ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Calendar::CalendarAddEventInfo& addEventInfo) { - uint8 titleLength = buffer.ReadBits(8); - uint16 descriptionLength = buffer.ReadBits(11); - + buffer >> addEventInfo.ClubID; buffer >> addEventInfo.EventType; buffer >> addEventInfo.TextureID; addEventInfo.Time = buffer.ReadPackedTime(); buffer >> addEventInfo.Flags; addEventInfo.Invites.resize(buffer.read()); - addEventInfo.Title = buffer.ReadString(titleLength); - addEventInfo.Description = buffer.ReadString(descriptionLength); + uint8 titleLength = buffer.ReadBits(8); + uint16 descriptionLength = buffer.ReadBits(11); for (WorldPackets::Calendar::CalendarAddEventInviteInfo& invite : addEventInfo.Invites) buffer >> invite; + addEventInfo.Title = buffer.ReadString(titleLength); + addEventInfo.Description = buffer.ReadString(descriptionLength); + return buffer; } @@ -121,20 +141,28 @@ void WorldPackets::Calendar::CalendarAddEvent::Read() _worldPacket >> MaxSize; } -void WorldPackets::Calendar::CalendarUpdateEvent::Read() +ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Calendar::CalendarUpdateEventInfo& updateEventInfo) { - _worldPacket >> EventInfo.EventID; - _worldPacket >> EventInfo.ModeratorID; - _worldPacket >> EventInfo.EventType; - _worldPacket >> EventInfo.TextureID; - EventInfo.Time = _worldPacket.ReadPackedTime(); - _worldPacket >> EventInfo.Flags; + buffer >> updateEventInfo.ClubID; + buffer >> updateEventInfo.EventID; + buffer >> updateEventInfo.ModeratorID; + buffer >> updateEventInfo.EventType; + buffer >> updateEventInfo.TextureID; + updateEventInfo.Time = buffer.ReadPackedTime(); + buffer >> updateEventInfo.Flags; - uint8 titleLen = _worldPacket.ReadBits(8); - uint16 descLen = _worldPacket.ReadBits(11); + uint8 titleLen = buffer.ReadBits(8); + uint16 descLen = buffer.ReadBits(11); - EventInfo.Title = _worldPacket.ReadString(titleLen); - EventInfo.Description = _worldPacket.ReadString(descLen); + updateEventInfo.Title = buffer.ReadString(titleLen); + updateEventInfo.Description = buffer.ReadString(descLen); + + return buffer; +} + +void WorldPackets::Calendar::CalendarUpdateEvent::Read() +{ + _worldPacket >> EventInfo; _worldPacket >> MaxSize; } @@ -142,6 +170,7 @@ void WorldPackets::Calendar::CalendarRemoveEvent::Read() { _worldPacket >> EventID; _worldPacket >> ModeratorID; + _worldPacket >> ClubID; _worldPacket >> Flags; } @@ -149,6 +178,7 @@ void WorldPackets::Calendar::CalendarCopyEvent::Read() { _worldPacket >> EventID; _worldPacket >> ModeratorID; + _worldPacket >> EventClubID; Date = _worldPacket.ReadPackedTime(); } @@ -163,6 +193,7 @@ void WorldPackets::Calendar::CalendarEventInvite::Read() { _worldPacket >> EventID; _worldPacket >> ModeratorID; + _worldPacket >> ClubID; uint16 nameLen = _worldPacket.ReadBits(9); Creating = _worldPacket.ReadBit(); @@ -174,6 +205,7 @@ void WorldPackets::Calendar::CalendarEventInvite::Read() void WorldPackets::Calendar::CalendarEventSignUp::Read() { _worldPacket >> EventID; + _worldPacket >> ClubID; Tentative = _worldPacket.ReadBit(); } @@ -255,7 +287,7 @@ WorldPacket const* WorldPackets::Calendar::CalendarSendEvent::Write() _worldPacket << uint32(Flags); _worldPacket.AppendPackedTime(Date); _worldPacket << uint32(LockDate); - _worldPacket << EventGuildID; + _worldPacket << uint64(EventClubID); _worldPacket << uint32(Invites.size()); _worldPacket.WriteBits(EventName.size(), 8); _worldPacket.WriteBits(Description.size(), 11); @@ -277,7 +309,7 @@ WorldPacket const* WorldPackets::Calendar::CalendarEventInviteAlert::Write() _worldPacket << uint32(Flags); _worldPacket << uint8(EventType); _worldPacket << int32(TextureID); - _worldPacket << EventGuildID; + _worldPacket << uint64(EventClubID); _worldPacket << uint64(InviteID); _worldPacket << uint8(Status); _worldPacket << uint8(ModeratorStatus); @@ -344,6 +376,7 @@ WorldPacket const* WorldPackets::Calendar::CalendarEventInviteRemovedAlert::Writ WorldPacket const* WorldPackets::Calendar::CalendarEventUpdatedAlert::Write() { + _worldPacket << uint64(EventClubID); _worldPacket << uint64(EventID); _worldPacket.AppendPackedTime(OriginalDate); @@ -462,8 +495,8 @@ WorldPacket const* WorldPackets::Calendar::CalendarEventInviteNotes::Write() _worldPacket << InviteGuid; _worldPacket << uint64(EventID); - _worldPacket.WriteBits(Notes.size(), 8); _worldPacket.WriteBit(ClearPending); + _worldPacket.WriteBits(Notes.size(), 8); _worldPacket.FlushBits(); _worldPacket.WriteString(Notes); diff --git a/src/server/game/Server/Packets/CalendarPackets.h b/src/server/game/Server/Packets/CalendarPackets.h index 6219c1a6878..7757e51144b 100644 --- a/src/server/game/Server/Packets/CalendarPackets.h +++ b/src/server/game/Server/Packets/CalendarPackets.h @@ -52,6 +52,7 @@ namespace WorldPackets void Read() override; + uint64 ClubID = 0; uint8 MinLevel = 1; uint8 MaxLevel = 100; uint8 MaxRankOrder = 0; @@ -62,10 +63,14 @@ namespace WorldPackets ObjectGuid Guid; uint8 Status = 0; uint8 Moderator = 0; + Optional Unused_801_1; + Optional Unused_801_2; + Optional Unused_801_3; }; struct CalendarAddEventInfo { + uint64 ClubID = 0; std::string Title; std::string Description; uint8 EventType = 0; @@ -88,6 +93,7 @@ namespace WorldPackets struct CalendarUpdateEventInfo { + uint64 ClubID = 0; uint64 EventID = 0; uint64 ModeratorID = 0; std::string Title; @@ -118,6 +124,7 @@ namespace WorldPackets uint64 ModeratorID = 0; uint64 EventID = 0; + uint64 ClubID = 0; uint32 Flags = 0; }; @@ -130,6 +137,7 @@ namespace WorldPackets uint64 ModeratorID = 0; uint64 EventID = 0; + uint64 EventClubID = 0; time_t Date = time_t(0); }; @@ -176,7 +184,7 @@ namespace WorldPackets time_t Date = time_t(0); uint32 Flags = 0; int32 TextureID = 0; - ObjectGuid EventGuildID; + uint64 EventClubID = 0; ObjectGuid OwnerGuid; }; @@ -213,7 +221,7 @@ namespace WorldPackets WorldPacket const* Write() override; ObjectGuid OwnerGuid; - ObjectGuid EventGuildID; + uint64 EventClubID = 0; uint64 EventID = 0; time_t Date = time_t(0); time_t LockDate = time_t(0); @@ -234,7 +242,7 @@ namespace WorldPackets WorldPacket const* Write() override; ObjectGuid OwnerGuid; - ObjectGuid EventGuildID; + uint64 EventClubID = 0; ObjectGuid InvitedByGuid; uint64 InviteID = 0; uint64 EventID = 0; @@ -258,6 +266,7 @@ namespace WorldPackets bool IsSignUp = false; bool Creating = true; uint64 EventID = 0; + uint64 ClubID = 0; std::string Name; }; @@ -343,6 +352,7 @@ namespace WorldPackets WorldPacket const* Write() override; + uint64 EventClubID = 0; uint64 EventID = 0; time_t Date = time_t(0); uint32 Flags = 0; @@ -395,6 +405,7 @@ namespace WorldPackets bool Tentative = false; uint64 EventID = 0; + uint64 ClubID = 0; }; class CalendarRemoveInvite final : public ClientPacket diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 538a2c7e1d5..3973c55cf0e 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -140,6 +140,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharacters ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Character::EnumCharactersResult::CharacterInfo const& charInfo) { data << charInfo.Guid; + data << uint64(charInfo.GuildClubMemberID); data << uint8(charInfo.ListPosition); data << uint8(charInfo.Race); data << uint8(charInfo.Class); @@ -201,9 +202,9 @@ WorldPacket const* WorldPackets::Character::EnumCharactersResult::Write() _worldPacket.WriteBit(Success); _worldPacket.WriteBit(IsDeletedCharacters); - _worldPacket.WriteBit(IsDemonHunterCreationAllowed); + _worldPacket.WriteBit(IsTestDemonHunterCreationAllowed); _worldPacket.WriteBit(HasDemonHunterOnRealm); - _worldPacket.WriteBit(Unknown7x); + _worldPacket.WriteBit(IsDemonHunterCreationAllowed); _worldPacket.WriteBit(DisabledClassesMask.is_initialized()); _worldPacket.WriteBit(IsAlliedRacesCreationAllowed); _worldPacket << uint32(Characters.size()); @@ -227,6 +228,7 @@ void WorldPackets::Character::CreateCharacter::Read() CreateInfo.reset(new CharacterCreateInfo()); uint32 nameLength = _worldPacket.ReadBits(6); bool const hasTemplateSet = _worldPacket.ReadBit(); + CreateInfo->IsTrialBoost = _worldPacket.ReadBit(); _worldPacket >> CreateInfo->Race; _worldPacket >> CreateInfo->Class; @@ -246,6 +248,7 @@ void WorldPackets::Character::CreateCharacter::Read() WorldPacket const* WorldPackets::Character::CreateChar::Write() { _worldPacket << uint8(Code); + _worldPacket << Guid; return &_worldPacket; } diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index 1f4ce11621a..fb5984efc8a 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -56,6 +56,7 @@ namespace WorldPackets std::array CustomDisplay = { }; uint8 OutfitId = 0; Optional TemplateSet; + bool IsTrialBoost = false; std::string Name; /// Server side data @@ -121,6 +122,7 @@ namespace WorldPackets CharacterInfo(Field* fields); ObjectGuid Guid; + uint64 GuildClubMemberID = 0; ///< same as bgs.protocol.club.v1.MemberId.unique_id, guessed basing on SMSG_QUERY_PLAYER_NAME_RESPONSE (that one is known) std::string Name; uint8 ListPosition = 0; ///< Order of the characters in list uint8 Race = 0; @@ -170,22 +172,22 @@ namespace WorldPackets struct RaceUnlock { - int32 RaceID; - bool HasExpansion; - bool HasAchievement; - bool HasHeritageArmor; + int32 RaceID = 0; + bool HasExpansion = false; + bool HasAchievement = false; + bool HasHeritageArmor = false; }; EnumCharactersResult() : ServerPacket(SMSG_ENUM_CHARACTERS_RESULT) { } WorldPacket const* Write() override; - bool Success = false; ///< - bool IsDeletedCharacters = false; ///< used for character undelete list - bool IsDemonHunterCreationAllowed = false; ///< used for demon hunter early access - bool HasDemonHunterOnRealm = false; - bool Unknown7x = false; - bool IsAlliedRacesCreationAllowed = false; + bool Success = false; ///< + bool IsDeletedCharacters = false; ///< used for character undelete list + bool IsTestDemonHunterCreationAllowed = false; ///< allows client to skip 1 per realm and level 70 requirements + bool HasDemonHunterOnRealm = false; + bool IsDemonHunterCreationAllowed = false; ///< used for demon hunter early access + bool IsAlliedRacesCreationAllowed = false; int32 MaxCharacterLevel = 1; Optional DisabledClassesMask; @@ -225,6 +227,7 @@ namespace WorldPackets WorldPacket const* Write() override; uint8 Code = 0; ///< Result code @see enum ResponseCodes + ObjectGuid Guid; }; class CharDelete final : public ClientPacket @@ -537,7 +540,7 @@ namespace WorldPackets class InitialSetup final : public ServerPacket { public: - InitialSetup() : ServerPacket(SMSG_INITIAL_SETUP, 1 + 1 + 4 + 4) { } + InitialSetup() : ServerPacket(SMSG_INITIAL_SETUP, 1 + 1) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/ChatPackets.cpp b/src/server/game/Server/Packets/ChatPackets.cpp index 1200caaa1be..044fe086f48 100644 --- a/src/server/game/Server/Packets/ChatPackets.cpp +++ b/src/server/game/Server/Packets/ChatPackets.cpp @@ -70,6 +70,7 @@ void WorldPackets::Chat::ChatAddonMessageTargeted::Read() _worldPacket.ResetBitPos(); _worldPacket >> Params; + Target = _worldPacket.ReadString(targetLen); } void WorldPackets::Chat::ChatMessageDND::Read() @@ -159,17 +160,17 @@ void WorldPackets::Chat::Chat::SetReceiver(WorldObject const* receiver, LocaleCo WorldPacket const* WorldPackets::Chat::Chat::Write() { - _worldPacket << SlashCmd; - _worldPacket << _Language; + _worldPacket << uint8(SlashCmd); + _worldPacket << uint32(_Language); _worldPacket << SenderGUID; _worldPacket << SenderGuildGUID; _worldPacket << SenderAccountGUID; _worldPacket << TargetGUID; - _worldPacket << TargetVirtualAddress; - _worldPacket << SenderVirtualAddress; + _worldPacket << uint32(TargetVirtualAddress); + _worldPacket << uint32(SenderVirtualAddress); _worldPacket << PartyGUID; - _worldPacket << AchievementID; - _worldPacket << DisplayTime; + _worldPacket << uint32(AchievementID); + _worldPacket << float(DisplayTime); _worldPacket.WriteBits(SenderName.length(), 11); _worldPacket.WriteBits(TargetName.length(), 11); _worldPacket.WriteBits(Prefix.length(), 5); @@ -178,6 +179,7 @@ WorldPacket const* WorldPackets::Chat::Chat::Write() _worldPacket.WriteBits(_ChatFlags, 11); _worldPacket.WriteBit(HideChatLog); _worldPacket.WriteBit(FakeSenderName); + _worldPacket.WriteBit(Unused_801.is_initialized()); _worldPacket.FlushBits(); _worldPacket.WriteString(SenderName); @@ -186,6 +188,9 @@ WorldPacket const* WorldPackets::Chat::Chat::Write() _worldPacket.WriteString(_Channel); _worldPacket.WriteString(ChatText); + if (Unused_801) + _worldPacket << uint32(*Unused_801); + return &_worldPacket; } diff --git a/src/server/game/Server/Packets/ChatPackets.h b/src/server/game/Server/Packets/ChatPackets.h index 9bc47589574..cbb9da156b0 100644 --- a/src/server/game/Server/Packets/ChatPackets.h +++ b/src/server/game/Server/Packets/ChatPackets.h @@ -53,7 +53,7 @@ namespace WorldPackets class ChatMessageWhisper final : public ClientPacket { public: - ChatMessageWhisper(WorldPacket&& packet) : ClientPacket(std::move(packet)) { } + ChatMessageWhisper(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_MESSAGE_WHISPER, std::move(packet)) { } void Read() override; @@ -66,7 +66,7 @@ namespace WorldPackets class ChatMessageChannel final : public ClientPacket { public: - ChatMessageChannel(WorldPacket&& packet) : ClientPacket(std::move(packet)) { } + ChatMessageChannel(WorldPacket&& packet) : ClientPacket(CMSG_CHAT_MESSAGE_CHANNEL, std::move(packet)) { } void Read() override; @@ -150,7 +150,7 @@ namespace WorldPackets WorldPacket const* Write() override; uint8 SlashCmd = 0; ///< @see enum ChatMsg - uint8 _Language = LANG_UNIVERSAL; + uint32 _Language = LANG_UNIVERSAL; ObjectGuid SenderGUID; ObjectGuid SenderGuildGUID; ObjectGuid SenderAccountGUID; @@ -166,6 +166,7 @@ namespace WorldPackets uint32 AchievementID = 0; uint8 _ChatFlags = 0; ///< @see enum ChatFlags float DisplayTime = 0.0f; + Optional Unused_801; bool HideChatLog = false; bool FakeSenderName = false; }; diff --git a/src/server/game/Server/Packets/CombatLogPackets.cpp b/src/server/game/Server/Packets/CombatLogPackets.cpp index 22196336960..243a7fd6e43 100644 --- a/src/server/game/Server/Packets/CombatLogPackets.cpp +++ b/src/server/game/Server/Packets/CombatLogPackets.cpp @@ -26,6 +26,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellNonMeleeDamageLog::Write() *this << int32(SpellID); *this << int32(SpellXSpellVisualID); *this << int32(Damage); + *this << int32(OriginalDamage); *this << int32(Overkill); *this << uint8(SchoolMask); *this << int32(Absorbed); @@ -35,11 +36,11 @@ WorldPacket const* WorldPackets::CombatLog::SpellNonMeleeDamageLog::Write() WriteBits(Flags, 7); WriteBit(false); // Debug info WriteLogDataBit(); - WriteBit(SandboxScaling.is_initialized()); + WriteBit(ContentTuning.is_initialized()); FlushBits(); WriteLogData(); - if (SandboxScaling) - *this << *SandboxScaling; + if (ContentTuning) + *this << *ContentTuning; return &_worldPacket; } @@ -61,12 +62,12 @@ WorldPacket const* WorldPackets::CombatLog::EnvironmentalDamageLog::Write() WorldPacket const* WorldPackets::CombatLog::SpellExecuteLog::Write() { *this << Caster; - *this << SpellID; + *this << int32(SpellID); *this << uint32(Effects.size()); for (SpellLogEffect const& effect : Effects) { - *this << effect.Effect; + *this << int32(effect.Effect); *this << uint32(effect.PowerDrainTargets.size()); *this << uint32(effect.ExtraAttacksTargets.size()); @@ -78,32 +79,32 @@ WorldPacket const* WorldPackets::CombatLog::SpellExecuteLog::Write() for (SpellLogEffectPowerDrainParams const& powerDrainTarget : effect.PowerDrainTargets) { *this << powerDrainTarget.Victim; - *this << powerDrainTarget.Points; - *this << powerDrainTarget.PowerType; - *this << powerDrainTarget.Amplitude; + *this << uint32(powerDrainTarget.Points); + *this << uint32(powerDrainTarget.PowerType); + *this << float(powerDrainTarget.Amplitude); } for (SpellLogEffectExtraAttacksParams const& extraAttacksTarget : effect.ExtraAttacksTargets) { *this << extraAttacksTarget.Victim; - *this << extraAttacksTarget.NumAttacks; + *this << uint32(extraAttacksTarget.NumAttacks); } for (SpellLogEffectDurabilityDamageParams const& durabilityDamageTarget : effect.DurabilityDamageTargets) { *this << durabilityDamageTarget.Victim; - *this << durabilityDamageTarget.ItemID; - *this << durabilityDamageTarget.Amount; + *this << int32(durabilityDamageTarget.ItemID); + *this << int32(durabilityDamageTarget.Amount); } for (SpellLogEffectGenericVictimParams const& genericVictimTarget : effect.GenericVictimTargets) *this << genericVictimTarget.Victim; for (SpellLogEffectTradeSkillItemParams const& tradeSkillTarget : effect.TradeSkillTargets) - *this << tradeSkillTarget.ItemID; + *this << int32(tradeSkillTarget.ItemID); for (SpellLogEffectFeedPetParams const& feedPetTarget : effect.FeedPetTargets) - *this << feedPetTarget.ItemID; + *this << int32(feedPetTarget.ItemID); } WriteLogDataBit(); @@ -119,13 +120,14 @@ WorldPacket const* WorldPackets::CombatLog::SpellHealLog::Write() *this << CasterGUID; *this << int32(SpellID); *this << int32(Health); + *this << int32(OriginalHeal); *this << int32(OverHeal); *this << int32(Absorbed); WriteBit(Crit); WriteBit(CritRollMade.is_initialized()); WriteBit(CritRollNeeded.is_initialized()); WriteLogDataBit(); - WriteBit(SandboxScaling.is_initialized()); + WriteBit(ContentTuning.is_initialized()); FlushBits(); WriteLogData(); @@ -136,8 +138,8 @@ WorldPacket const* WorldPackets::CombatLog::SpellHealLog::Write() if (CritRollNeeded) *this << *CritRollNeeded; - if (SandboxScaling) - *this << *SandboxScaling; + if (ContentTuning) + *this << *ContentTuning; return &_worldPacket; } @@ -155,24 +157,24 @@ WorldPacket const* WorldPackets::CombatLog::SpellPeriodicAuraLog::Write() { *this << int32(effect.Effect); *this << int32(effect.Amount); + *this << int32(effect.OriginalDamage); *this << int32(effect.OverHealOrKill); *this << int32(effect.SchoolMaskOrPower); *this << int32(effect.AbsorbedOrAmplitude); *this << int32(effect.Resisted); WriteBit(effect.Crit); WriteBit(effect.DebugInfo.is_initialized()); - WriteBit(effect.SandboxScaling.is_initialized()); + WriteBit(effect.ContentTuning.is_initialized()); FlushBits(); - if (effect.SandboxScaling) - *this << *effect.SandboxScaling; + if (effect.ContentTuning) + *this << *effect.ContentTuning; if (effect.DebugInfo) { *this << float(effect.DebugInfo->CritRollMade); *this << float(effect.DebugInfo->CritRollNeeded); } - } WriteLogData(); @@ -280,6 +282,7 @@ WorldPacket const* WorldPackets::CombatLog::SpellDamageShield::Write() *this << Defender; *this << int32(SpellID); *this << int32(TotalDamage); + *this << int32(OriginalDamage); *this << int32(OverKill); *this << int32(SchoolMask); *this << int32(LogAbsorbed); @@ -297,6 +300,7 @@ WorldPacket const* WorldPackets::CombatLog::AttackerStateUpdate::Write() attackRoundInfo << AttackerGUID; attackRoundInfo << VictimGUID; attackRoundInfo << int32(Damage); + attackRoundInfo << int32(OriginalDamage); attackRoundInfo << int32(OverDamage); attackRoundInfo << uint8(SubDmg.is_initialized()); if (SubDmg) @@ -338,15 +342,16 @@ WorldPacket const* WorldPackets::CombatLog::AttackerStateUpdate::Write() if (HitInfo & (HITINFO_BLOCK | HITINFO_UNK12)) attackRoundInfo << float(Unk); - attackRoundInfo << uint8(SandboxScaling.Type); - attackRoundInfo << uint8(SandboxScaling.TargetLevel); - attackRoundInfo << uint8(SandboxScaling.Expansion); - attackRoundInfo << uint8(SandboxScaling.Class); - attackRoundInfo << uint8(SandboxScaling.TargetMinScalingLevel); - attackRoundInfo << uint8(SandboxScaling.TargetMaxScalingLevel); - attackRoundInfo << int16(SandboxScaling.PlayerLevelDelta); - attackRoundInfo << int8(SandboxScaling.TargetScalingLevelDelta); - attackRoundInfo << uint16(SandboxScaling.PlayerItemLevel); + attackRoundInfo << uint8(ContentTuning.Type); + attackRoundInfo << uint8(ContentTuning.TargetLevel); + attackRoundInfo << uint8(ContentTuning.Expansion); + attackRoundInfo << uint8(ContentTuning.TargetMinScalingLevel); + attackRoundInfo << uint8(ContentTuning.TargetMaxScalingLevel); + attackRoundInfo << int16(ContentTuning.PlayerLevelDelta); + attackRoundInfo << int8(ContentTuning.TargetScalingLevelDelta); + attackRoundInfo << uint16(ContentTuning.PlayerItemLevel); + attackRoundInfo << uint16(ContentTuning.ScalingHealthItemLevelCurveID); + attackRoundInfo << uint8(ContentTuning.ScalesWithItemLevel ? 1 : 0); WriteLogDataBit(); FlushBits(); diff --git a/src/server/game/Server/Packets/CombatLogPackets.h b/src/server/game/Server/Packets/CombatLogPackets.h index 88a427ac962..4f3d1361796 100644 --- a/src/server/game/Server/Packets/CombatLogPackets.h +++ b/src/server/game/Server/Packets/CombatLogPackets.h @@ -39,6 +39,7 @@ namespace WorldPackets int32 SpellID = 0; int32 SpellXSpellVisualID = 0; int32 Damage = 0; + int32 OriginalDamage = 0; int32 Overkill = -1; uint8 SchoolMask = 0; int32 ShieldBlock = 0; @@ -47,7 +48,7 @@ namespace WorldPackets int32 Absorbed = 0; int32 Flags = 0; // Optional DebugInfo; - Optional SandboxScaling; + Optional ContentTuning; }; class EnvironmentalDamageLog final : public CombatLogServerPacket @@ -99,12 +100,13 @@ namespace WorldPackets ObjectGuid TargetGUID; int32 SpellID = 0; int32 Health = 0; + int32 OriginalHeal = 0; int32 OverHeal = 0; int32 Absorbed = 0; bool Crit = false; Optional CritRollMade; Optional CritRollNeeded; - Optional SandboxScaling; + Optional ContentTuning; }; class SpellPeriodicAuraLog final : public CombatLogServerPacket @@ -120,13 +122,14 @@ namespace WorldPackets { int32 Effect = 0; int32 Amount = 0; + int32 OriginalDamage = 0; int32 OverHealOrKill = 0; int32 SchoolMaskOrPower = 0; int32 AbsorbedOrAmplitude = 0; int32 Resisted = 0; bool Crit = false; Optional DebugInfo; - Optional SandboxScaling; + Optional ContentTuning; }; SpellPeriodicAuraLog() : CombatLogServerPacket(SMSG_SPELL_PERIODIC_AURA_LOG, 16 + 16 + 4 + 4 + 1) { } @@ -267,6 +270,7 @@ namespace WorldPackets ObjectGuid Defender; int32 SpellID = 0; int32 TotalDamage = 0; + int32 OriginalDamage = 0; int32 OverKill = 0; int32 SchoolMask = 0; int32 LogAbsorbed = 0; @@ -308,6 +312,7 @@ namespace WorldPackets ObjectGuid AttackerGUID; ObjectGuid VictimGUID; int32 Damage = 0; + int32 OriginalDamage = 0; int32 OverDamage = -1; // (damage - health) or -1 if unit is still alive Optional SubDmg; uint8 VictimState = 0; @@ -317,7 +322,7 @@ namespace WorldPackets int32 RageGained = 0; UnkAttackerState UnkState; float Unk = 0.0f; - Spells::SandboxScalingData SandboxScaling; + Spells::ContentTuningParams ContentTuning; }; } } diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp index 532779af445..b1e22a3746f 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp @@ -27,6 +27,7 @@ void WorldPackets::Spells::SpellCastLogData::Initialize(Unit const* unit) Health = unit->GetHealth(); AttackPower = unit->GetTotalAttackPowerValue(unit->getClass() == CLASS_HUNTER ? RANGED_ATTACK : BASE_ATTACK); SpellPower = unit->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_SPELL); + Armor = unit->GetArmor(); PowerData.emplace_back(int32(unit->GetPowerType()), unit->GetPower(unit->GetPowerType()), int32(0)); } @@ -35,6 +36,7 @@ void WorldPackets::Spells::SpellCastLogData::Initialize(Spell const* spell) Health = spell->GetCaster()->GetHealth(); AttackPower = spell->GetCaster()->GetTotalAttackPowerValue(spell->GetCaster()->getClass() == CLASS_HUNTER ? RANGED_ATTACK : BASE_ATTACK); SpellPower = spell->GetCaster()->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_SPELL); + Armor = spell->GetCaster()->GetArmor(); Powers primaryPowerType = spell->GetCaster()->GetPowerType(); bool primaryPowerAdded = false; for (SpellPowerCost const& cost : spell->GetPowerCost()) @@ -53,22 +55,22 @@ namespace WorldPackets namespace Spells { template - bool SandboxScalingData::GenerateDataForUnits(T* /*attacker*/, U* /*target*/) + bool ContentTuningParams::GenerateDataForUnits(T* /*attacker*/, U* /*target*/) { return false; } template<> - bool SandboxScalingData::GenerateDataForUnits(Creature* attacker, Player* target) + bool ContentTuningParams::GenerateDataForUnits(Creature* attacker, Player* target) { CreatureTemplate const* creatureTemplate = attacker->GetCreatureTemplate(); Type = TYPE_CREATURE_TO_PLAYER_DAMAGE; PlayerLevelDelta = target->GetInt32Value(ACTIVE_PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA); PlayerItemLevel = target->GetAverageItemLevel(); + ScalingHealthItemLevelCurveID = target->GetUInt32Value(UNIT_FIELD_SCALING_HEALTH_ITEM_LEVEL_CURVE_ID); TargetLevel = target->getLevel(); Expansion = creatureTemplate->RequiredExpansion; - Class = creatureTemplate->unit_class; TargetMinScalingLevel = uint8(creatureTemplate->levelScaling->MinLevel); TargetMaxScalingLevel = uint8(creatureTemplate->levelScaling->MaxLevel); TargetScalingLevelDelta = int8(attacker->GetInt32Value(UNIT_FIELD_SCALING_LEVEL_DELTA)); @@ -76,16 +78,16 @@ namespace WorldPackets } template<> - bool SandboxScalingData::GenerateDataForUnits(Player* attacker, Creature* target) + bool ContentTuningParams::GenerateDataForUnits(Player* attacker, Creature* target) { CreatureTemplate const* creatureTemplate = target->GetCreatureTemplate(); Type = TYPE_PLAYER_TO_CREATURE_DAMAGE; PlayerLevelDelta = attacker->GetInt32Value(ACTIVE_PLAYER_FIELD_SCALING_PLAYER_LEVEL_DELTA); PlayerItemLevel = attacker->GetAverageItemLevel(); + ScalingHealthItemLevelCurveID = target->GetUInt32Value(UNIT_FIELD_SCALING_HEALTH_ITEM_LEVEL_CURVE_ID); TargetLevel = target->getLevel(); Expansion = creatureTemplate->RequiredExpansion; - Class = creatureTemplate->unit_class; TargetMinScalingLevel = uint8(creatureTemplate->levelScaling->MinLevel); TargetMaxScalingLevel = uint8(creatureTemplate->levelScaling->MaxLevel); TargetScalingLevelDelta = int8(target->GetInt32Value(UNIT_FIELD_SCALING_LEVEL_DELTA)); @@ -93,7 +95,7 @@ namespace WorldPackets } template<> - bool SandboxScalingData::GenerateDataForUnits(Creature* attacker, Creature* target) + bool ContentTuningParams::GenerateDataForUnits(Creature* attacker, Creature* target) { Creature* accessor = target->HasScalableLevels() ? target : attacker; CreatureTemplate const* creatureTemplate = accessor->GetCreatureTemplate(); @@ -103,7 +105,6 @@ namespace WorldPackets PlayerItemLevel = 0; TargetLevel = target->getLevel(); Expansion = creatureTemplate->RequiredExpansion; - Class = creatureTemplate->unit_class; TargetMinScalingLevel = uint8(creatureTemplate->levelScaling->MinLevel); TargetMaxScalingLevel = uint8(creatureTemplate->levelScaling->MaxLevel); TargetScalingLevelDelta = int8(accessor->GetInt32Value(UNIT_FIELD_SCALING_LEVEL_DELTA)); @@ -111,7 +112,7 @@ namespace WorldPackets } template<> - bool SandboxScalingData::GenerateDataForUnits(Unit* attacker, Unit* target) + bool ContentTuningParams::GenerateDataForUnits(Unit* attacker, Unit* target) { if (Player* playerAttacker = attacker->ToPlayer()) { @@ -152,6 +153,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastLogData data << int64(spellCastLogData.Health); data << int32(spellCastLogData.AttackPower); data << int32(spellCastLogData.SpellPower); + data << int32(spellCastLogData.Armor); data.WriteBits(spellCastLogData.PowerData.size(), 9); data.FlushBits(); @@ -165,16 +167,18 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastLogData return data; } -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SandboxScalingData const& sandboxScalingData) +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::ContentTuningParams const& contentTuningParams) { - data.WriteBits(sandboxScalingData.Type, 4); - data << int16(sandboxScalingData.PlayerLevelDelta); - data << uint16(sandboxScalingData.PlayerItemLevel); - data << uint8(sandboxScalingData.TargetLevel); - data << uint8(sandboxScalingData.Expansion); - data << uint8(sandboxScalingData.Class); - data << uint8(sandboxScalingData.TargetMinScalingLevel); - data << uint8(sandboxScalingData.TargetMaxScalingLevel); - data << int8(sandboxScalingData.TargetScalingLevelDelta); + data << int16(contentTuningParams.PlayerLevelDelta); + data << uint16(contentTuningParams.PlayerItemLevel); + data << uint16(contentTuningParams.ScalingHealthItemLevelCurveID); + data << uint8(contentTuningParams.TargetLevel); + data << uint8(contentTuningParams.Expansion); + data << uint8(contentTuningParams.TargetMinScalingLevel); + data << uint8(contentTuningParams.TargetMaxScalingLevel); + data << int8(contentTuningParams.TargetScalingLevelDelta); + data.WriteBits(contentTuningParams.Type, 4); + data.WriteBit(contentTuningParams.ScalesWithItemLevel); + data.FlushBits(); return data; } diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.h b/src/server/game/Server/Packets/CombatLogPacketsCommon.h index 172f94e7031..ea3589ce4f7 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.h +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.h @@ -41,31 +41,33 @@ namespace WorldPackets int64 Health = 0; int32 AttackPower = 0; int32 SpellPower = 0; + int32 Armor = 0; std::vector PowerData; void Initialize(Unit const* unit); void Initialize(Spell const* spell); }; - struct SandboxScalingData + struct ContentTuningParams { - enum SandboxScalingDataType : uint32 + enum ContentTuningType : uint32 { - TYPE_PLAYER_TO_PLAYER = 1, // NYI - TYPE_CREATURE_TO_PLAYER_DAMAGE = 2, - TYPE_PLAYER_TO_CREATURE_DAMAGE = 3, + TYPE_PLAYER_TO_PLAYER = 7, // NYI + TYPE_CREATURE_TO_PLAYER_DAMAGE = 1, + TYPE_PLAYER_TO_CREATURE_DAMAGE = 2, TYPE_CREATURE_TO_CREATURE_DAMAGE = 4 }; uint32 Type = 0; int16 PlayerLevelDelta = 0; uint16 PlayerItemLevel = 0; + uint16 ScalingHealthItemLevelCurveID = 0; uint8 TargetLevel = 0; uint8 Expansion = 0; - uint8 Class = 0; uint8 TargetMinScalingLevel = 0; uint8 TargetMaxScalingLevel = 0; int8 TargetScalingLevelDelta = 0; + bool ScalesWithItemLevel = false; template bool GenerateDataForUnits(T* attacker, U* target); @@ -126,6 +128,6 @@ namespace WorldPackets } ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastLogData const& spellCastLogData); -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SandboxScalingData const& sandboxScalingData); +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::ContentTuningParams const& contentTuningParams); #endif // CombatLogPacketsCommon_h__ diff --git a/src/server/game/Server/Packets/CombatPackets.cpp b/src/server/game/Server/Packets/CombatPackets.cpp index 5048595314c..63fc4ac1ed1 100644 --- a/src/server/game/Server/Packets/CombatPackets.cpp +++ b/src/server/game/Server/Packets/CombatPackets.cpp @@ -96,7 +96,7 @@ WorldPacket const* WorldPackets::Combat::AIReaction::Write() WorldPacket const* WorldPackets::Combat::AttackSwingError::Write() { - _worldPacket.WriteBits(Reason, 2); + _worldPacket.WriteBits(Reason, 3); _worldPacket.FlushBits(); return &_worldPacket; } @@ -107,8 +107,8 @@ WorldPacket const* WorldPackets::Combat::PowerUpdate::Write() _worldPacket << uint32(Powers.size()); for (PowerUpdatePower const& power : Powers) { - _worldPacket << power.Power; - _worldPacket << power.PowerType; + _worldPacket << int32(power.Power); + _worldPacket << uint8(power.PowerType); } return &_worldPacket; diff --git a/src/server/game/Server/Packets/CombatPackets.h b/src/server/game/Server/Packets/CombatPackets.h index 446d9f5453b..313d573eae1 100644 --- a/src/server/game/Server/Packets/CombatPackets.h +++ b/src/server/game/Server/Packets/CombatPackets.h @@ -41,9 +41,9 @@ namespace WorldPackets public: enum AttackSwingErr : uint8 { - CantAttack = 0, + NotInRange = 0, BadFacing = 1, - NotInRange = 2, + CantAttack = 2, DeadTarget = 3 }; diff --git a/src/server/game/Server/Packets/DuelPackets.cpp b/src/server/game/Server/Packets/DuelPackets.cpp index f76ccecaa89..ccee13b731a 100644 --- a/src/server/game/Server/Packets/DuelPackets.cpp +++ b/src/server/game/Server/Packets/DuelPackets.cpp @@ -59,6 +59,7 @@ void WorldPackets::Duel::DuelResponse::Read() { _worldPacket >> ArbiterGUID; Accepted = _worldPacket.ReadBit(); + Forfeited = _worldPacket.ReadBit(); } WorldPacket const* WorldPackets::Duel::DuelWinner::Write() diff --git a/src/server/game/Server/Packets/DuelPackets.h b/src/server/game/Server/Packets/DuelPackets.h index b45a8b42ba7..efa2701741a 100644 --- a/src/server/game/Server/Packets/DuelPackets.h +++ b/src/server/game/Server/Packets/DuelPackets.h @@ -103,6 +103,7 @@ namespace WorldPackets ObjectGuid ArbiterGUID; bool Accepted = false; + bool Forfeited = false; }; class DuelWinner final : public ServerPacket diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.h b/src/server/game/Server/Packets/EquipmentSetPackets.h index 1dd7040ec32..5c17fdc3cae 100644 --- a/src/server/game/Server/Packets/EquipmentSetPackets.h +++ b/src/server/game/Server/Packets/EquipmentSetPackets.h @@ -28,7 +28,7 @@ namespace WorldPackets class EquipmentSetID final : public ServerPacket { public: - EquipmentSetID() : ServerPacket(SMSG_EQUIPMENT_SET_ID, 8 + 4) { } + EquipmentSetID() : ServerPacket(SMSG_EQUIPMENT_SET_ID, 8 + 4 + 4) { } WorldPacket const* Write() override; @@ -89,7 +89,7 @@ namespace WorldPackets class UseEquipmentSetResult final : public ServerPacket { public: - UseEquipmentSetResult() : ServerPacket(SMSG_USE_EQUIPMENT_SET_RESULT, 1) { } + UseEquipmentSetResult() : ServerPacket(SMSG_USE_EQUIPMENT_SET_RESULT, 8 + 1) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/GarrisonPackets.h b/src/server/game/Server/Packets/GarrisonPackets.h index a7bd016909c..bf83f006b1e 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.h +++ b/src/server/game/Server/Packets/GarrisonPackets.h @@ -249,7 +249,7 @@ namespace WorldPackets class GarrisonLearnBlueprintResult final : public ServerPacket { public: - GarrisonLearnBlueprintResult() : ServerPacket(SMSG_GARRISON_LEARN_BLUEPRINT_RESULT, 4 + 4) { } + GarrisonLearnBlueprintResult() : ServerPacket(SMSG_GARRISON_LEARN_BLUEPRINT_RESULT, 4 + 4 + 4) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/GuildFinderPackets.cpp b/src/server/game/Server/Packets/GuildFinderPackets.cpp index ac8bcfea9df..2ce269fbdcb 100644 --- a/src/server/game/Server/Packets/GuildFinderPackets.cpp +++ b/src/server/game/Server/Packets/GuildFinderPackets.cpp @@ -108,7 +108,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::GuildFinder::GuildPostDat data << int32(post.Availability); data << int32(post.ClassRoles); data << int32(post.LevelRange); - data << uint32(post.SecondsRemaining); + data << int32(post.SecondsRemaining); data.WriteString(post.Comment); return data; } diff --git a/src/server/game/Server/Packets/GuildFinderPackets.h b/src/server/game/Server/Packets/GuildFinderPackets.h index 1fe3183156a..94084934fc1 100644 --- a/src/server/game/Server/Packets/GuildFinderPackets.h +++ b/src/server/game/Server/Packets/GuildFinderPackets.h @@ -157,7 +157,7 @@ namespace WorldPackets int32 Availability = 0; int32 ClassRoles = 0; int32 LevelRange = 0; - time_t SecondsRemaining = time_t(0); + int32 SecondsRemaining = 0; std::string Comment; }; diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp index 777891b3cef..2a3739f2470 100644 --- a/src/server/game/Server/Packets/GuildPackets.cpp +++ b/src/server/game/Server/Packets/GuildPackets.cpp @@ -63,9 +63,9 @@ WorldPacket const* WorldPackets::Guild::QueryGuildInfoResponse::Write() WorldPacket const* WorldPackets::Guild::GuildRoster::Write() { - _worldPacket << NumAccounts; + _worldPacket << int32(NumAccounts); _worldPacket.AppendPackedTime(CreateDate); - _worldPacket << GuildFlags; + _worldPacket << int32(GuildFlags); _worldPacket << uint32(MemberData.size()); _worldPacket.WriteBits(WelcomeText.length(), 10); _worldPacket.WriteBits(InfoText.length(), 11); @@ -98,8 +98,8 @@ void WorldPackets::Guild::GuildUpdateMotdText::Read() WorldPacket const* WorldPackets::Guild::GuildCommandResult::Write() { - _worldPacket << Result; - _worldPacket << Command; + _worldPacket << int32(Result); + _worldPacket << int32(Command); _worldPacket.WriteBits(Name.length(), 8); _worldPacket.FlushBits(); @@ -127,17 +127,17 @@ WorldPacket const* WorldPackets::Guild::GuildInvite::Write() _worldPacket.WriteBits(OldGuildName.length(), 7); _worldPacket.FlushBits(); - _worldPacket << InviterVirtualRealmAddress; - _worldPacket << GuildVirtualRealmAddress; + _worldPacket << uint32(InviterVirtualRealmAddress); + _worldPacket << uint32(GuildVirtualRealmAddress); _worldPacket << GuildGUID; - _worldPacket << OldGuildVirtualRealmAddress; + _worldPacket << uint32(OldGuildVirtualRealmAddress); _worldPacket << OldGuildGUID; - _worldPacket << EmblemStyle; - _worldPacket << EmblemColor; - _worldPacket << BorderStyle; - _worldPacket << BorderColor; - _worldPacket << Background; - _worldPacket << AchievementPoints; + _worldPacket << uint32(EmblemStyle); + _worldPacket << uint32(EmblemColor); + _worldPacket << uint32(BorderStyle); + _worldPacket << uint32(BorderColor); + _worldPacket << uint32(Background); + _worldPacket << int32(AchievementPoints); _worldPacket.WriteString(InviterName); _worldPacket.WriteString(GuildName); @@ -148,9 +148,9 @@ WorldPacket const* WorldPackets::Guild::GuildInvite::Write() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterProfessionData const& rosterProfessionData) { - data << rosterProfessionData.DbID; - data << rosterProfessionData.Rank; - data << rosterProfessionData.Step; + data << int32(rosterProfessionData.DbID); + data << int32(rosterProfessionData.Rank); + data << int32(rosterProfessionData.Step); return data; } @@ -158,20 +158,20 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterProfess ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterMemberData const& rosterMemberData) { data << rosterMemberData.Guid; - data << rosterMemberData.RankID; - data << rosterMemberData.AreaID; - data << rosterMemberData.PersonalAchievementPoints; - data << rosterMemberData.GuildReputation; - data << rosterMemberData.LastSave; + data << int32(rosterMemberData.RankID); + data << int32(rosterMemberData.AreaID); + data << int32(rosterMemberData.PersonalAchievementPoints); + data << int32(rosterMemberData.GuildReputation); + data << float(rosterMemberData.LastSave); for (uint8 i = 0; i < 2; i++) data << rosterMemberData.Profession[i]; - data << rosterMemberData.VirtualRealmAddress; - data << rosterMemberData.Status; - data << rosterMemberData.Level; - data << rosterMemberData.ClassID; - data << rosterMemberData.Gender; + data << uint32(rosterMemberData.VirtualRealmAddress); + data << uint8(rosterMemberData.Status); + data << uint8(rosterMemberData.Level); + data << uint8(rosterMemberData.ClassID); + data << uint8(rosterMemberData.Gender); data.WriteBits(rosterMemberData.Name.length(), 6); data.WriteBits(rosterMemberData.Note.length(), 8); @@ -190,7 +190,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterMemberD WorldPacket const* WorldPackets::Guild::GuildEventPresenceChange::Write() { _worldPacket << Guid; - _worldPacket << VirtualRealmAddress; + _worldPacket << uint32(VirtualRealmAddress); _worldPacket.WriteBits(Name.length(), 6); _worldPacket.WriteBit(LoggedOn); @@ -215,7 +215,7 @@ WorldPacket const* WorldPackets::Guild::GuildEventMotd::Write() WorldPacket const* WorldPackets::Guild::GuildEventPlayerJoined::Write() { _worldPacket << Guid; - _worldPacket << VirtualRealmAddress; + _worldPacket << uint32(VirtualRealmAddress); _worldPacket.WriteBits(Name.length(), 6); _worldPacket.FlushBits(); @@ -249,9 +249,9 @@ WorldPacket const* WorldPackets::Guild::GuildEventLogQueryResults::Write() { _worldPacket << entry.PlayerGUID; _worldPacket << entry.OtherGUID; - _worldPacket << entry.TransactionType; - _worldPacket << entry.RankID; - _worldPacket << entry.TransactionDate; + _worldPacket << uint8(entry.TransactionType); + _worldPacket << uint8(entry.RankID); + _worldPacket << uint32(entry.TransactionDate); } return &_worldPacket; @@ -269,12 +269,12 @@ WorldPacket const* WorldPackets::Guild::GuildEventPlayerLeft::Write() _worldPacket.FlushBits(); _worldPacket << RemoverGUID; - _worldPacket << RemoverVirtualRealmAddress; + _worldPacket << uint32(RemoverVirtualRealmAddress); _worldPacket.WriteString(RemoverName); } _worldPacket << LeaverGUID; - _worldPacket << LeaverVirtualRealmAddress; + _worldPacket << uint32(LeaverVirtualRealmAddress); _worldPacket.WriteString(LeaverName); return &_worldPacket; @@ -282,16 +282,16 @@ WorldPacket const* WorldPackets::Guild::GuildEventPlayerLeft::Write() WorldPacket const* WorldPackets::Guild::GuildPermissionsQueryResults::Write() { - _worldPacket << RankID; - _worldPacket << WithdrawGoldLimit; - _worldPacket << Flags; - _worldPacket << NumTabs; + _worldPacket << uint32(RankID); + _worldPacket << int32(WithdrawGoldLimit); + _worldPacket << int32(Flags); + _worldPacket << int32(NumTabs); _worldPacket << uint32(Tab.size()); for (GuildRankTabPermissions const& tab : Tab) { - _worldPacket << tab.Flags; - _worldPacket << tab.WithdrawItemLimit; + _worldPacket << int32(tab.Flags); + _worldPacket << int32(tab.WithdrawItemLimit); } return &_worldPacket; @@ -325,9 +325,9 @@ WorldPacket const* WorldPackets::Guild::GuildEventNewLeader::Write() _worldPacket.FlushBits(); _worldPacket << OldLeaderGUID; - _worldPacket << OldLeaderVirtualRealmAddress; + _worldPacket << uint32(OldLeaderVirtualRealmAddress); _worldPacket << NewLeaderGUID; - _worldPacket << NewLeaderVirtualRealmAddress; + _worldPacket << uint32(NewLeaderVirtualRealmAddress); _worldPacket.WriteString(OldLeaderName); _worldPacket.WriteString(NewLeaderName); @@ -337,7 +337,7 @@ WorldPacket const* WorldPackets::Guild::GuildEventNewLeader::Write() WorldPacket const* WorldPackets::Guild::GuildEventTabModified::Write() { - _worldPacket << Tab; + _worldPacket << int32(Tab); _worldPacket.WriteBits(Name.length(), 7); _worldPacket.WriteBits(Icon.length(), 9); @@ -358,15 +358,15 @@ WorldPacket const* WorldPackets::Guild::GuildEventTabTextChanged::Write() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRankData const& rankData) { - data << rankData.RankID; - data << rankData.RankOrder; - data << rankData.Flags; - data << rankData.WithdrawGoldLimit; + data << uint32(rankData.RankID); + data << uint32(rankData.RankOrder); + data << uint32(rankData.Flags); + data << uint32(rankData.WithdrawGoldLimit); for (uint8 i = 0; i < GUILD_BANK_MAX_TABS; i++) { - data << rankData.TabFlags[i]; - data << rankData.TabWithdrawItemLimit[i]; + data << uint32(rankData.TabFlags[i]); + data << uint32(rankData.TabWithdrawItemLimit[i]); } data.WriteBits(rankData.RankName.length(), 7); @@ -416,7 +416,7 @@ WorldPacket const* WorldPackets::Guild::GuildSendRankChange::Write() { _worldPacket << Officer; _worldPacket << Other; - _worldPacket << RankID; + _worldPacket << uint32(RankID); _worldPacket.WriteBit(Promote); _worldPacket.FlushBits(); @@ -499,25 +499,25 @@ WorldPacket const* WorldPackets::Guild::GuildPartyState::Write() _worldPacket.WriteBit(InGuildParty); _worldPacket.FlushBits(); - _worldPacket << NumMembers; - _worldPacket << NumRequired; - _worldPacket << GuildXPEarnedMult; + _worldPacket << int32(NumMembers); + _worldPacket << int32(NumRequired); + _worldPacket << float(GuildXPEarnedMult); return &_worldPacket; } ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRewardItem const& rewardItem) { - data << rewardItem.ItemID; - data << rewardItem.Unk4; + data << uint32(rewardItem.ItemID); + data << uint32(rewardItem.Unk4); data << uint32(rewardItem.AchievementsRequired.size()); data << uint64(rewardItem.RaceMask); - data << rewardItem.MinGuildLevel; - data << rewardItem.MinGuildRep; - data << rewardItem.Cost; + data << int32(rewardItem.MinGuildLevel); + data << int32(rewardItem.MinGuildRep); + data << uint64(rewardItem.Cost); - for (uint8 i = 0; i < rewardItem.AchievementsRequired.size(); i++) - data << rewardItem.AchievementsRequired[i]; + for (std::size_t i = 0; i < rewardItem.AchievementsRequired.size(); i++) + data << uint32(rewardItem.AchievementsRequired[i]); return data; } @@ -529,7 +529,7 @@ void WorldPackets::Guild::RequestGuildRewardsList::Read() WorldPacket const* WorldPackets::Guild::GuildRewardList::Write() { - _worldPacket << Version; + _worldPacket << int32(Version); _worldPacket << uint32(RewardItems.size()); for (GuildRewardItem const& item : RewardItems) @@ -592,9 +592,9 @@ void WorldPackets::Guild::GuildBankWithdrawMoney::Read() WorldPacket const* WorldPackets::Guild::GuildBankQueryResults::Write() { - _worldPacket << Money; - _worldPacket << Tab; - _worldPacket << WithdrawalsRemaining; + _worldPacket << uint64(Money); + _worldPacket << int32(Tab); + _worldPacket << int32(WithdrawalsRemaining); _worldPacket << uint32(TabInfo.size()); _worldPacket << uint32(ItemInfo.size()); _worldPacket.WriteBit(FullUpdate); @@ -602,7 +602,7 @@ WorldPacket const* WorldPackets::Guild::GuildBankQueryResults::Write() for (GuildBankTabInfo const& tab : TabInfo) { - _worldPacket << tab.TabIndex; + _worldPacket << int32(tab.TabIndex); _worldPacket.WriteBits(tab.Name.length(), 7); _worldPacket.WriteBits(tab.Icon.length(), 9); _worldPacket.FlushBits(); @@ -613,12 +613,12 @@ WorldPacket const* WorldPackets::Guild::GuildBankQueryResults::Write() for (GuildBankItemInfo const& item : ItemInfo) { - _worldPacket << item.Slot; - _worldPacket << item.Count; - _worldPacket << item.EnchantmentID; - _worldPacket << item.Charges; - _worldPacket << item.OnUseEnchantmentID; - _worldPacket << item.Flags; + _worldPacket << int32(item.Slot); + _worldPacket << int32(item.Count); + _worldPacket << int32(item.EnchantmentID); + _worldPacket << int32(item.Charges); + _worldPacket << int32(item.OnUseEnchantmentID); + _worldPacket << int32(item.Flags); _worldPacket << item.Item; _worldPacket.WriteBits(item.SocketEnchant.size(), 2); _worldPacket.WriteBit(item.Locked); @@ -658,7 +658,7 @@ void WorldPackets::Guild::GuildBankLogQuery::Read() WorldPacket const* WorldPackets::Guild::GuildBankLogQueryResults::Write() { - _worldPacket << Tab; + _worldPacket << int32(Tab); _worldPacket << uint32(Entry.size()); _worldPacket.WriteBit(WeeklyBonusMoney.is_initialized()); _worldPacket.FlushBits(); @@ -666,8 +666,8 @@ WorldPacket const* WorldPackets::Guild::GuildBankLogQueryResults::Write() for (GuildBankLogEntry const& logEntry : Entry) { _worldPacket << logEntry.PlayerGUID; - _worldPacket << logEntry.TimeOffset; - _worldPacket << logEntry.EntryType; + _worldPacket << uint32(logEntry.TimeOffset); + _worldPacket << int8(logEntry.EntryType); _worldPacket.WriteBit(logEntry.Money.is_initialized()); _worldPacket.WriteBit(logEntry.ItemID.is_initialized()); @@ -676,20 +676,20 @@ WorldPacket const* WorldPackets::Guild::GuildBankLogQueryResults::Write() _worldPacket.FlushBits(); if (logEntry.Money.is_initialized()) - _worldPacket << *logEntry.Money; + _worldPacket << uint64(*logEntry.Money); if (logEntry.ItemID.is_initialized()) - _worldPacket << *logEntry.ItemID; + _worldPacket << int32(*logEntry.ItemID); if (logEntry.Count.is_initialized()) - _worldPacket << *logEntry.Count; + _worldPacket << int32(*logEntry.Count); if (logEntry.OtherTab.is_initialized()) - _worldPacket << *logEntry.OtherTab; + _worldPacket << int8(*logEntry.OtherTab); } if (WeeklyBonusMoney) - _worldPacket << *WeeklyBonusMoney; + _worldPacket << uint64(*WeeklyBonusMoney); return &_worldPacket; } @@ -701,7 +701,7 @@ void WorldPackets::Guild::GuildBankTextQuery::Read() WorldPacket const* WorldPackets::Guild::GuildBankTextQueryResult::Write() { - _worldPacket << Tab; + _worldPacket << int32(Tab); _worldPacket.WriteBits(Text.length(), 14); _worldPacket.FlushBits(); @@ -724,13 +724,13 @@ void WorldPackets::Guild::GuildQueryNews::Read() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildNewsEvent const& newsEvent) { - data << newsEvent.Id; + data << int32(newsEvent.Id); data.AppendPackedTime(newsEvent.CompletedDate); - data << newsEvent.Type; - data << newsEvent.Flags; + data << int32(newsEvent.Type); + data << int32(newsEvent.Flags); - for (uint8 i = 0; i < 2; i++) - data << newsEvent.Data[i]; + for (std::size_t i = 0; i < newsEvent.Data.size(); ++i) + data << int32(newsEvent.Data[i]); data << newsEvent.MemberGuid; data << uint32(newsEvent.MemberList.size()); diff --git a/src/server/game/Server/Packets/GuildPackets.h b/src/server/game/Server/Packets/GuildPackets.h index c68b76e5b95..844dba91f5c 100644 --- a/src/server/game/Server/Packets/GuildPackets.h +++ b/src/server/game/Server/Packets/GuildPackets.h @@ -432,11 +432,11 @@ namespace WorldPackets int32 RankID = 0; int32 RankOrder = 0; - int32 WithdrawGoldLimit = 0; + uint32 WithdrawGoldLimit = 0; uint32 Flags = 0; uint32 OldFlags = 0; - int32 TabFlags[GUILD_BANK_MAX_TABS]; - int32 TabWithdrawItemLimit[GUILD_BANK_MAX_TABS]; + uint32 TabFlags[GUILD_BANK_MAX_TABS]; + uint32 TabWithdrawItemLimit[GUILD_BANK_MAX_TABS]; std::string RankName; }; @@ -687,7 +687,7 @@ namespace WorldPackets WorldPacket const* Write() override; std::vector RewardItems; - uint32 Version = 0; + int32 Version = 0; }; class GuildBankActivate final : public ClientPacket @@ -918,9 +918,9 @@ namespace WorldPackets uint32 CompletedDate = 0; int32 Type = 0; int32 Flags = 0; - int32 Data[2]; + std::array Data; ObjectGuid MemberGuid; - GuidList MemberList; + std::vector MemberList; Optional Item; }; diff --git a/src/server/game/Server/Packets/InspectPackets.cpp b/src/server/game/Server/Packets/InspectPackets.cpp index df9b540e164..04fc01ad669 100644 --- a/src/server/game/Server/Packets/InspectPackets.cpp +++ b/src/server/game/Server/Packets/InspectPackets.cpp @@ -35,6 +35,10 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::InspectItemData { data << itemData.CreatorGUID; data << uint8(itemData.Index); + data << uint32(itemData.AzeritePowers.size()); + if (!itemData.AzeritePowers.empty()) + data.append(itemData.AzeritePowers.data(), itemData.AzeritePowers.size()); + data << itemData.Item; data.WriteBit(itemData.Usable); data.WriteBits(itemData.Enchants.size(), 4); @@ -76,10 +80,11 @@ WorldPackets::Inspect::InspectItemData::InspectItemData(::Item const* item, uint { if (gemData.ItemId) { - WorldPackets::Item::ItemGemData gem; + Gems.emplace_back(); + + WorldPackets::Item::ItemGemData& gem = Gems.back(); gem.Slot = i; gem.Item.Initialize(&gemData); - Gems.push_back(gem); } ++i; } @@ -103,6 +108,7 @@ WorldPacket const* WorldPackets::Inspect::InspectResult::Write() _worldPacket.append(PvpTalents.data(), PvpTalents.size()); _worldPacket.WriteBit(GuildData.is_initialized()); + _worldPacket.WriteBit(AzeriteLevel.is_initialized()); _worldPacket.FlushBits(); for (size_t i = 0; i < Items.size(); ++i) @@ -111,6 +117,9 @@ WorldPacket const* WorldPackets::Inspect::InspectResult::Write() if (GuildData) _worldPacket << *GuildData; + if (AzeriteLevel) + _worldPacket << int32(*AzeriteLevel); + return &_worldPacket; } @@ -138,6 +147,7 @@ void WorldPackets::Inspect::InspectPVPRequest::Read() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::PVPBracketData const& bracket) { + data << uint8(bracket.Bracket); data << int32(bracket.Rating); data << int32(bracket.Rank); data << int32(bracket.WeeklyPlayed); @@ -146,7 +156,9 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::PVPBracketData c data << int32(bracket.SeasonWon); data << int32(bracket.WeeklyBestRating); data << int32(bracket.Unk710); - data << uint8(bracket.Bracket); + data << int32(bracket.Unk801_1); + data.WriteBit(bracket.Unk801_2); + data.FlushBits(); return data; } diff --git a/src/server/game/Server/Packets/InspectPackets.h b/src/server/game/Server/Packets/InspectPackets.h index 7bf6b0baa2a..c6437f182f7 100644 --- a/src/server/game/Server/Packets/InspectPackets.h +++ b/src/server/game/Server/Packets/InspectPackets.h @@ -56,6 +56,7 @@ namespace WorldPackets bool Usable = false; std::vector Enchants; std::vector Gems; + std::vector AzeritePowers; }; struct InspectGuildData @@ -68,7 +69,10 @@ namespace WorldPackets class InspectResult final : public ServerPacket { public: - InspectResult() : ServerPacket(SMSG_INSPECT_RESULT, 45) { } + InspectResult() : ServerPacket(SMSG_INSPECT_RESULT, 45) + { + PvpTalents.fill(0); + } WorldPacket const* Write() override; @@ -76,11 +80,12 @@ namespace WorldPackets std::vector Items; std::vector Glyphs; std::vector Talents; - std::vector PvpTalents; + std::array PvpTalents; int32 ClassID = CLASS_NONE; int32 GenderID = GENDER_NONE; Optional GuildData; int32 SpecializationID = 0; + Optional AzeriteLevel; }; class RequestHonorStats final : public ClientPacket @@ -128,7 +133,9 @@ namespace WorldPackets int32 SeasonWon = 0; int32 WeeklyBestRating = 0; int32 Unk710 = 0; + int32 Unk801_1 = 0; uint8 Bracket = 0; + bool Unk801_2 = false; }; class InspectPVPResponse final : public ServerPacket diff --git a/src/server/game/Server/Packets/InstancePackets.cpp b/src/server/game/Server/Packets/InstancePackets.cpp index 0a6e29e6838..258aa24bd1f 100644 --- a/src/server/game/Server/Packets/InstancePackets.cpp +++ b/src/server/game/Server/Packets/InstancePackets.cpp @@ -31,23 +31,13 @@ WorldPacket const* WorldPackets::Instance::UpdateInstanceOwnership::Write() return &_worldPacket; } -WorldPacket const* WorldPackets::Instance::InstanceInfo::Write() -{ - _worldPacket << int32(LockList.size()); - - for (InstanceLockInfos const& lockInfos : LockList) - _worldPacket << lockInfos; - - return &_worldPacket; -} - -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Instance::InstanceLockInfos const& lockInfos) +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Instance::InstanceLock const& lockInfos) { - data << lockInfos.MapID; - data << lockInfos.DifficultyID; - data << lockInfos.InstanceID; - data << lockInfos.TimeRemaining; - data << lockInfos.CompletedMask; + data << uint32(lockInfos.MapID); + data << uint32(lockInfos.DifficultyID); + data << uint64(lockInfos.InstanceID); + data << uint32(lockInfos.TimeRemaining); + data << uint32(lockInfos.CompletedMask); data.WriteBit(lockInfos.Locked); data.WriteBit(lockInfos.Extended); @@ -57,6 +47,16 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Instance::InstanceLockInf return data; } +WorldPacket const* WorldPackets::Instance::InstanceInfo::Write() +{ + _worldPacket << int32(LockList.size()); + + for (InstanceLock const& instanceLock : LockList) + _worldPacket << instanceLock; + + return &_worldPacket; +} + WorldPacket const* WorldPackets::Instance::InstanceReset::Write() { _worldPacket << uint32(MapID); diff --git a/src/server/game/Server/Packets/InstancePackets.h b/src/server/game/Server/Packets/InstancePackets.h index f13e046906e..0869a137926 100644 --- a/src/server/game/Server/Packets/InstancePackets.h +++ b/src/server/game/Server/Packets/InstancePackets.h @@ -47,7 +47,7 @@ namespace WorldPackets // but it has been deperecated in favor of simply checking group leader, being inside an instance or using dungeon finder }; - struct InstanceLockInfos + struct InstanceLock { uint64 InstanceID = 0u; uint32 MapID = 0u; @@ -66,7 +66,7 @@ namespace WorldPackets WorldPacket const* Write() override; - std::vector LockList; + std::vector LockList; }; class ResetInstances final : public ClientPacket @@ -90,7 +90,7 @@ namespace WorldPackets class InstanceResetFailed final : public ServerPacket { public: - InstanceResetFailed() : ServerPacket(SMSG_INSTANCE_RESET_FAILED, 4 + 4) { } + InstanceResetFailed() : ServerPacket(SMSG_INSTANCE_RESET_FAILED, 4 + 1) { } WorldPacket const* Write() override; @@ -248,6 +248,4 @@ namespace WorldPackets } } -ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Instance::InstanceLockInfos const& lockInfos); - #endif // InstancePackets_h__ diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp index 87599873de5..55f4274eefc 100644 --- a/src/server/game/Server/Packets/ItemPackets.cpp +++ b/src/server/game/Server/Packets/ItemPackets.cpp @@ -280,7 +280,7 @@ WorldPacket const* WorldPackets::Item::ReadItemResultFailed::Write() { _worldPacket << Item; _worldPacket << uint32(Delay); - _worldPacket.WriteBits(Subcode, 3); + _worldPacket.WriteBits(Subcode, 2); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/LFGPackets.cpp b/src/server/game/Server/Packets/LFGPackets.cpp index 5b8d66afd6a..1ec2dec7804 100644 --- a/src/server/game/Server/Packets/LFGPackets.cpp +++ b/src/server/game/Server/Packets/LFGPackets.cpp @@ -311,10 +311,15 @@ WorldPacket const* WorldPackets::LFG::LFGQueueStatus::Write() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LFGPlayerRewards const& lfgPlayerRewards) { - data << int32(lfgPlayerRewards.RewardItem); - data << uint32(lfgPlayerRewards.RewardItemQuantity); - data << int32(lfgPlayerRewards.BonusCurrency); - data.WriteBit(lfgPlayerRewards.IsCurrency); + data.WriteBit(lfgPlayerRewards.RewardItem.is_initialized()); + data.WriteBit(lfgPlayerRewards.RewardCurrency.is_initialized()); + if (lfgPlayerRewards.RewardItem) + data << *lfgPlayerRewards.RewardItem; + + data << uint32(lfgPlayerRewards.Quantity); + data << int32(lfgPlayerRewards.BonusQuantity); + if (lfgPlayerRewards.RewardCurrency) + data << int32(*lfgPlayerRewards.RewardCurrency); return data; } diff --git a/src/server/game/Server/Packets/LFGPackets.h b/src/server/game/Server/Packets/LFGPackets.h index 9e1c513aece..2b31074094d 100644 --- a/src/server/game/Server/Packets/LFGPackets.h +++ b/src/server/game/Server/Packets/LFGPackets.h @@ -20,6 +20,7 @@ #include "Packet.h" #include "PacketUtilities.h" +#include "ItemPacketsCommon.h" #include "LFGPacketsCommon.h" #include "Optional.h" @@ -325,13 +326,24 @@ namespace WorldPackets struct LFGPlayerRewards { LFGPlayerRewards() { } - LFGPlayerRewards(int32 rewardItem, uint32 rewardItemQuantity, int32 bonusCurrency, bool isCurrency) - : RewardItem(rewardItem), RewardItemQuantity(rewardItemQuantity), BonusCurrency(bonusCurrency), IsCurrency(isCurrency) { } - - int32 RewardItem = 0; - uint32 RewardItemQuantity = 0; - int32 BonusCurrency = 0; - bool IsCurrency = false; + LFGPlayerRewards(int32 id, uint32 quantity, int32 bonusQuantity, bool isCurrency) + : Quantity(quantity), BonusQuantity(bonusQuantity) + { + if (!isCurrency) + { + RewardItem = boost::in_place(); + RewardItem->ItemID = id; + } + else + { + RewardCurrency = id; + } + } + + Optional RewardItem; + Optional RewardCurrency; + uint32 Quantity = 0; + int32 BonusQuantity = 0; }; class LFGPlayerReward final : public ServerPacket diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index 4399b0d3924..9f98092d091 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -346,7 +346,8 @@ WorldPacket const* WorldPackets::Misc::LevelUpInfo::Write() for (int32 stat : StatDelta) _worldPacket << stat; - _worldPacket << int32(Cp); + _worldPacket << int32(NumNewTalents); + _worldPacket << int32(NumNewPvpTalentSlots); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 984e8444b3b..df9c99e063b 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -258,7 +258,7 @@ namespace WorldPackets void Read() override; - int32 DifficultyID = 0; + uint32 DifficultyID = 0; }; class SetRaidDifficulty final : public ClientPacket @@ -480,7 +480,8 @@ namespace WorldPackets int32 HealthDelta = 0; std::array PowerDelta = { }; std::array StatDelta = { }; - int32 Cp = 0; + int32 NumNewTalents = 0; + int32 NumNewPvpTalentSlots = 0; }; class PlayMusic final : public ServerPacket diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 38a7f8f68fd..3dd719f46b0 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -213,6 +213,16 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineSp data << uint32(spellEffectExtraData.SpellVisualID); data << uint32(spellEffectExtraData.ProgressCurveID); data << uint32(spellEffectExtraData.ParabolicCurveID); + data << float(spellEffectExtraData.JumpGravity); + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Movement::MonsterSplineJumpExtraData const& jumpExtraData) +{ + data << float(jumpExtraData.JumpGravity); + data << uint32(jumpExtraData.StartTime); + data << uint32(jumpExtraData.Duration); return data; } @@ -224,8 +234,7 @@ ByteBuffer& WorldPackets::operator<<(ByteBuffer& data, Movement::MovementSpline data << uint32(movementSpline.TierTransStartTime); data << int32(movementSpline.Elapsed); data << uint32(movementSpline.MoveTime); - data << float(movementSpline.JumpGravity); - data << uint32(movementSpline.SpecialTime); + data << uint32(movementSpline.FadeObjectTime); data << uint8(movementSpline.Mode); data << uint8(movementSpline.VehicleExitVoluntary); data << movementSpline.TransportGUID; @@ -235,6 +244,7 @@ ByteBuffer& WorldPackets::operator<<(ByteBuffer& data, Movement::MovementSpline data.WriteBits(movementSpline.PackedDeltas.size(), 16); data.WriteBit(movementSpline.SplineFilter.is_initialized()); data.WriteBit(movementSpline.SpellEffectExtraData.is_initialized()); + data.WriteBit(movementSpline.JumpExtraData.is_initialized()); data.FlushBits(); if (movementSpline.SplineFilter) @@ -262,6 +272,9 @@ ByteBuffer& WorldPackets::operator<<(ByteBuffer& data, Movement::MovementSpline if (movementSpline.SpellEffectExtraData) data << *movementSpline.SpellEffectExtraData; + if (movementSpline.JumpExtraData) + data << *movementSpline.JumpExtraData; + return data; } @@ -300,12 +313,12 @@ void WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock(:: data << float(1.0f); // DurationModifier data << float(1.0f); // NextDurationModifier data.WriteBits(moveSpline.facing.type, 2); // Face - bool HasJumpGravity = data.WriteBit(moveSpline.splineflags.parabolic || moveSpline.splineflags.animation); // HasJumpGravity - bool HasSpecialTime = data.WriteBit(moveSpline.splineflags.parabolic && moveSpline.effect_start_time < moveSpline.Duration()); // HasSpecialTime + bool hasFadeObjectTime = data.WriteBit(moveSpline.splineflags.fadeObject && moveSpline.effect_start_time < moveSpline.Duration()); data.WriteBits(moveSpline.getPath().size(), 16); data.WriteBits(uint8(moveSpline.spline.mode()), 2); // Mode data.WriteBit(0); // HasSplineFilter data.WriteBit(moveSpline.spell_effect_extra.is_initialized()); // HasSpellEffectExtraData + data.WriteBit(moveSpline.splineflags.parabolic); // HasJumpExtraData data.FlushBits(); //if (HasSplineFilterKey) @@ -341,11 +354,8 @@ void WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock(:: break; } - if (HasJumpGravity) - data << float(moveSpline.vertical_acceleration); // JumpGravity - - if (HasSpecialTime) - data << uint32(moveSpline.effect_start_time); // SpecialTime + if (hasFadeObjectTime) + data << uint32(moveSpline.effect_start_time); // FadeObjectTime data.append(moveSpline.getPath().data(), moveSpline.getPath().size()); @@ -355,6 +365,14 @@ void WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock(:: data << uint32(moveSpline.spell_effect_extra->SpellVisualId); data << uint32(moveSpline.spell_effect_extra->ProgressCurveId); data << uint32(moveSpline.spell_effect_extra->ParabolicCurveId); + data << float(moveSpline.vertical_acceleration); + } + + if (moveSpline.splineflags.parabolic) + { + data << float(moveSpline.vertical_acceleration); + data << uint32(moveSpline.effect_start_time); + data << uint32(0); // Duration (override) } } } @@ -388,12 +406,13 @@ void WorldPackets::Movement::MonsterMove::InitializeSplineData(::Movement::MoveS if (splineFlags.parabolic) { - movementSpline.JumpGravity = moveSpline.vertical_acceleration; - movementSpline.SpecialTime = moveSpline.effect_start_time; + movementSpline.JumpExtraData = boost::in_place(); + movementSpline.JumpExtraData->JumpGravity = moveSpline.vertical_acceleration; + movementSpline.JumpExtraData->StartTime = moveSpline.effect_start_time; } if (splineFlags.fadeObject) - movementSpline.SpecialTime = moveSpline.effect_start_time; + movementSpline.FadeObjectTime = moveSpline.effect_start_time; if (moveSpline.spell_effect_extra) { @@ -402,6 +421,7 @@ void WorldPackets::Movement::MonsterMove::InitializeSplineData(::Movement::MoveS movementSpline.SpellEffectExtraData->SpellVisualID = moveSpline.spell_effect_extra->SpellVisualId; movementSpline.SpellEffectExtraData->ProgressCurveID = moveSpline.spell_effect_extra->ProgressCurveId; movementSpline.SpellEffectExtraData->ParabolicCurveID = moveSpline.spell_effect_extra->ParabolicCurveId; + movementSpline.SpellEffectExtraData->JumpGravity = moveSpline.vertical_acceleration; } ::Movement::Spline const& spline = moveSpline.spline; diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index aaa5f770535..e50a8cf6a71 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -75,6 +75,14 @@ namespace WorldPackets uint32 SpellVisualID = 0; uint32 ProgressCurveID = 0; uint32 ParabolicCurveID = 0; + float JumpGravity = 0.0f; + }; + + struct MonsterSplineJumpExtraData + { + float JumpGravity = 0.0f; + uint32 StartTime = 0; + uint32 Duration = 0; }; struct MovementSpline @@ -85,8 +93,7 @@ namespace WorldPackets uint32 TierTransStartTime = 0; int32 Elapsed = 0; uint32 MoveTime = 0; - float JumpGravity = 0.0f; - uint32 SpecialTime = 0; + uint32 FadeObjectTime = 0; std::vector> Points; // Spline path uint8 Mode = 0; // Spline mode - actually always 0 in this packet - Catmullrom mode appears only in SMSG_UPDATE_OBJECT. In this packet it is determined by flags uint8 VehicleExitVoluntary = 0; @@ -95,6 +102,7 @@ namespace WorldPackets std::vector> PackedDeltas; Optional SplineFilter; Optional SpellEffectExtraData; + Optional JumpExtraData; float FaceDirection = 0.0f; ObjectGuid FaceGUID; TaggedPosition FaceSpot; diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp index 2b7f9ab7d18..749b4b9a330 100644 --- a/src/server/game/Server/Packets/NPCPackets.cpp +++ b/src/server/game/Server/Packets/NPCPackets.cpp @@ -96,19 +96,19 @@ WorldPacket const* WorldPackets::NPC::VendorInventory::Write() WorldPacket const* WorldPackets::NPC::TrainerList::Write() { _worldPacket << TrainerGUID; - _worldPacket << TrainerType; - _worldPacket << TrainerID; + _worldPacket << uint32(TrainerType); + _worldPacket << uint32(TrainerID); - _worldPacket << int32(Spells.size()); + _worldPacket << uint32(Spells.size()); for (TrainerListSpell const& spell : Spells) { - _worldPacket << spell.SpellID; - _worldPacket << spell.MoneyCost; - _worldPacket << spell.ReqSkillLine; - _worldPacket << spell.ReqSkillRank; + _worldPacket << int32(spell.SpellID); + _worldPacket << uint32(spell.MoneyCost); + _worldPacket << uint32(spell.ReqSkillLine); + _worldPacket << uint32(spell.ReqSkillRank); _worldPacket.append(spell.ReqAbility.data(), spell.ReqAbility.size()); - _worldPacket << spell.Usable; - _worldPacket << spell.ReqLevel; + _worldPacket << uint8(spell.Usable); + _worldPacket << uint8(spell.ReqLevel); } _worldPacket.WriteBits(Greeting.length(), 11); @@ -144,11 +144,13 @@ WorldPacket const* WorldPackets::NPC::PlayerTabardVendorActivate::Write() WorldPacket const* WorldPackets::NPC::GossipPOI::Write() { - _worldPacket.WriteBits(Flags, 14); - _worldPacket.WriteBits(Name.length(), 6); + _worldPacket << int32(ID); _worldPacket << Pos; _worldPacket << int32(Icon); _worldPacket << int32(Importance); + _worldPacket.WriteBits(Flags, 14); + _worldPacket.WriteBits(Name.length(), 6); + _worldPacket.FlushBits(); _worldPacket.WriteString(Name); return &_worldPacket; diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h index a094f25dc22..8148e3aff60 100644 --- a/src/server/game/Server/Packets/NPCPackets.h +++ b/src/server/game/Server/Packets/NPCPackets.h @@ -131,9 +131,9 @@ namespace WorldPackets struct TrainerListSpell { int32 SpellID = 0; - int32 MoneyCost = 0; - int32 ReqSkillLine = 0; - int32 ReqSkillRank = 0; + uint32 MoneyCost = 0; + uint32 ReqSkillLine = 0; + uint32 ReqSkillRank = 0; std::array ReqAbility = { }; uint8 Usable = 0; uint8 ReqLevel = 0; @@ -180,6 +180,7 @@ namespace WorldPackets WorldPacket const* Write() override; + int32 ID = 0; uint32 Flags = 0; TaggedPosition Pos; int32 Icon = 0; diff --git a/src/server/game/Server/Packets/PacketUtilities.h b/src/server/game/Server/Packets/PacketUtilities.h index f7913b9c51d..99b214aab36 100644 --- a/src/server/game/Server/Packets/PacketUtilities.h +++ b/src/server/game/Server/Packets/PacketUtilities.h @@ -42,6 +42,8 @@ namespace WorldPackets typedef typename storage_type::value_type value_type; typedef typename storage_type::size_type size_type; + typedef typename storage_type::pointer pointer; + typedef typename storage_type::const_pointer const_pointer; typedef typename storage_type::reference reference; typedef typename storage_type::const_reference const_reference; typedef typename storage_type::iterator iterator; @@ -55,6 +57,9 @@ namespace WorldPackets iterator end() { return _storage.end(); } const_iterator end() const { return _storage.end(); } + pointer data() { return _storage.data(); } + const_pointer data() const { return _storage.data(); } + size_type size() const { return _storage.size(); } bool empty() const { return _storage.empty(); } diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp index 939f0a65db1..9251addde38 100644 --- a/src/server/game/Server/Packets/PartyPackets.cpp +++ b/src/server/game/Server/Packets/PartyPackets.cpp @@ -33,7 +33,7 @@ WorldPacket const* WorldPackets::Party::PartyCommandResult::Write() _worldPacket.WriteBits(Command, 4); _worldPacket.WriteBits(Result, 6); - _worldPacket << ResultData; + _worldPacket << uint32(ResultData); _worldPacket << ResultGUID; _worldPacket.WriteString(Name); @@ -78,12 +78,12 @@ WorldPacket const* WorldPackets::Party::PartyInvite::Write() _worldPacket << InviterBNetAccountId; _worldPacket << uint16(Unk1); _worldPacket << uint32(ProposedRoles); - _worldPacket << int32(LfgSlots.size()); - _worldPacket << LfgCompletedMask; + _worldPacket << uint32(LfgSlots.size()); + _worldPacket << uint32(LfgCompletedMask); _worldPacket.WriteString(InviterName); - for (int32 LfgSlot : LfgSlots) + for (uint32 LfgSlot : LfgSlots) _worldPacket << LfgSlot; return &_worldPacket; @@ -212,7 +212,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyMemberStats c data << int16(memberStats.PositionY); data << int16(memberStats.PositionZ); data << int32(memberStats.VehicleSeat); - data << int32(memberStats.Auras.size()); + data << uint32(memberStats.Auras.size()); data << memberStats.Phases; for (WorldPackets::Party::PartyMemberAuraStates const& aura : memberStats.Auras) @@ -318,15 +318,13 @@ WorldPacket const* WorldPackets::Party::SendRaidTargetUpdateSingle::Write() WorldPacket const* WorldPackets::Party::SendRaidTargetUpdateAll::Write() { - _worldPacket << PartyIndex; - - _worldPacket << int32(TargetIcons.size()); + _worldPacket << uint8(PartyIndex); + _worldPacket << uint32(TargetIcons.size()); - std::map::const_iterator itr; - for (itr = TargetIcons.begin(); itr != TargetIcons.end(); itr++) + for (auto itr = TargetIcons.begin(); itr != TargetIcons.end(); ++itr) { _worldPacket << itr->second; - _worldPacket << itr->first; + _worldPacket << uint8(itr->first); } return &_worldPacket; @@ -420,7 +418,9 @@ WorldPacket const* WorldPackets::Party::GroupNewLeader::Write() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyPlayerInfo const& playerInfo) { data.WriteBits(playerInfo.Name.size(), 6); + data.WriteBits(playerInfo.VoiceStateID.size(), 6); data.WriteBit(playerInfo.FromSocialQueue); + data.WriteBit(playerInfo.VoiceChatSilenced); data << playerInfo.GUID; data << uint8(playerInfo.Status); data << uint8(playerInfo.Subgroup); @@ -428,6 +428,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyPlayerInfo co data << uint8(playerInfo.RolesAssigned); data << uint8(playerInfo.Class); data.WriteString(playerInfo.Name); + data.WriteString(playerInfo.VoiceStateID); return data; } @@ -524,8 +525,8 @@ void WorldPackets::Party::ClearRaidMarker::Read() WorldPacket const* WorldPackets::Party::RaidMarkersChanged::Write() { - _worldPacket << PartyIndex; - _worldPacket << ActiveMarkers; + _worldPacket << uint8(PartyIndex); + _worldPacket << uint32(ActiveMarkers); _worldPacket.WriteBits(RaidMarkers.size(), 4); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/PartyPackets.h b/src/server/game/Server/Packets/PartyPackets.h index f62e61d0990..d0b689ffb04 100644 --- a/src/server/game/Server/Packets/PartyPackets.h +++ b/src/server/game/Server/Packets/PartyPackets.h @@ -48,8 +48,8 @@ namespace WorldPackets void Read() override; - int8 PartyIndex = 0; - int32 ProposedRoles = 0; + uint8 PartyIndex = 0; + uint32 ProposedRoles = 0; std::string TargetName; std::string TargetRealm; ObjectGuid TargetGUID; @@ -85,9 +85,9 @@ namespace WorldPackets std::string InviterRealmNameNormalized; // Lfg - int32 ProposedRoles = 0; - int32 LfgCompletedMask = 0; - std::vector LfgSlots; + uint32 ProposedRoles = 0; + uint32 LfgCompletedMask = 0; + std::vector LfgSlots; }; class PartyInviteResponse final : public ClientPacket @@ -97,9 +97,9 @@ namespace WorldPackets void Read() override; - int8 PartyIndex = 0; + uint8 PartyIndex = 0; bool Accept = false; - Optional RolesDesired; + Optional RolesDesired; }; class PartyUninvite final : public ClientPacket @@ -109,7 +109,7 @@ namespace WorldPackets void Read() override; - int8 PartyIndex = 0; + uint8 PartyIndex = 0; ObjectGuid TargetGUID; std::string Reason; }; @@ -327,7 +327,7 @@ namespace WorldPackets WorldPacket const* Write() override; - int8 PartyIndex = 0; + uint8 PartyIndex = 0; std::map TargetIcons; }; @@ -359,7 +359,7 @@ namespace WorldPackets void Read() override; ObjectGuid Target; - int8 PartyIndex = 0; + uint8 PartyIndex = 0; bool Apply = false; }; @@ -405,7 +405,7 @@ namespace WorldPackets void Read() override; - int8 PartyIndex = 0; + uint8 PartyIndex = 0; bool IsReady = false; }; @@ -486,13 +486,14 @@ namespace WorldPackets { ObjectGuid GUID; std::string Name; + std::string VoiceStateID; // same as bgs.protocol.club.v1.MemberVoiceState.id uint8 Class = 0; - uint8 Status = 0u; uint8 Subgroup = 0u; uint8 Flags = 0u; uint8 RolesAssigned = 0u; bool FromSocialQueue = false; + bool VoiceChatSilenced = false; }; struct PartyLFGInfo @@ -554,7 +555,7 @@ namespace WorldPackets void Read() override; - int8 PartyIndex = 0; + uint8 PartyIndex = 0; bool EveryoneIsAssistant = false; }; @@ -599,7 +600,7 @@ namespace WorldPackets WorldPacket const* Write() override; - int8 PartyIndex = 0; + uint8 PartyIndex = 0; uint32 ActiveMarkers = 0u; std::vector RaidMarkers; diff --git a/src/server/game/Server/Packets/PetPackets.cpp b/src/server/game/Server/Packets/PetPackets.cpp index 06182856bb4..d62ce6840cb 100644 --- a/src/server/game/Server/Packets/PetPackets.cpp +++ b/src/server/game/Server/Packets/PetPackets.cpp @@ -65,9 +65,8 @@ WorldPacket const* WorldPackets::Pet::PetStableList::Write() _worldPacket << int32(pet.CreatureID); _worldPacket << int32(pet.DisplayID); _worldPacket << int32(pet.ExperienceLevel); - _worldPacket << int32(pet.PetFlags); - - _worldPacket << int8(pet.PetName.length()); + _worldPacket << uint8(pet.PetFlags); + _worldPacket.WriteBits(pet.PetName.length(), 8); _worldPacket.WriteString(pet.PetName); } @@ -92,21 +91,18 @@ WorldPacket const* WorldPackets::Pet::PetUnlearnedSpells::Write() WorldPacket const* WorldPackets::Pet::PetNameInvalid::Write() { + _worldPacket << uint8(Result); _worldPacket << RenameData.PetGUID; _worldPacket << int32(RenameData.PetNumber); _worldPacket << uint8(RenameData.NewName.length()); _worldPacket.WriteBit(RenameData.DeclinedNames.is_initialized()); - _worldPacket.FlushBits(); if (RenameData.DeclinedNames) { for (int32 i = 0; i < MAX_DECLINED_NAME_CASES; i++) - { _worldPacket.WriteBits(RenameData.DeclinedNames->name[i].length(), 7); - _worldPacket.FlushBits(); - } for (int32 i = 0; i < MAX_DECLINED_NAME_CASES; i++) _worldPacket << RenameData.DeclinedNames->name[i]; @@ -121,8 +117,7 @@ void WorldPackets::Pet::PetRename::Read() _worldPacket >> RenameData.PetGUID; _worldPacket >> RenameData.PetNumber; - int8 nameLen = 0; - _worldPacket >> nameLen; + uint8 nameLen = _worldPacket.ReadBits(8); if (_worldPacket.ReadBit()) { diff --git a/src/server/game/Server/Packets/PetPackets.h b/src/server/game/Server/Packets/PetPackets.h index 965dc0b60c4..3f57f0360c9 100644 --- a/src/server/game/Server/Packets/PetPackets.h +++ b/src/server/game/Server/Packets/PetPackets.h @@ -125,7 +125,7 @@ namespace WorldPackets uint32 CreatureID = 0; uint32 DisplayID = 0; uint32 ExperienceLevel = 0; - uint32 PetFlags = 0; + uint8 PetFlags = 0; std::string PetName; }; diff --git a/src/server/game/Server/Packets/PetitionPackets.cpp b/src/server/game/Server/Packets/PetitionPackets.cpp index 132494aed46..06823e15204 100644 --- a/src/server/game/Server/Packets/PetitionPackets.cpp +++ b/src/server/game/Server/Packets/PetitionPackets.cpp @@ -25,32 +25,31 @@ void WorldPackets::Petition::QueryPetition::Read() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Petition::PetitionInfo const& petitionInfo) { - data << petitionInfo.PetitionID; + data << int32(petitionInfo.PetitionID); data << petitionInfo.Petitioner; - - data << petitionInfo.MinSignatures; - data << petitionInfo.MaxSignatures; - data << petitionInfo.DeadLine; - data << petitionInfo.IssueDate; - data << petitionInfo.AllowedGuildID; - data << petitionInfo.AllowedClasses; - data << petitionInfo.AllowedRaces; - data << petitionInfo.AllowedGender; - data << petitionInfo.AllowedMinLevel; - data << petitionInfo.AllowedMaxLevel; - data << petitionInfo.NumChoices; - data << petitionInfo.StaticType; - data << petitionInfo.Muid; + data << int32(petitionInfo.MinSignatures); + data << int32(petitionInfo.MaxSignatures); + data << int32(petitionInfo.DeadLine); + data << int32(petitionInfo.IssueDate); + data << int32(petitionInfo.AllowedGuildID); + data << int32(petitionInfo.AllowedClasses); + data << int32(petitionInfo.AllowedRaces); + data << int16(petitionInfo.AllowedGender); + data << int32(petitionInfo.AllowedMinLevel); + data << int32(petitionInfo.AllowedMaxLevel); + data << int32(petitionInfo.NumChoices); + data << int32(petitionInfo.StaticType); + data << uint32(petitionInfo.Muid); data.WriteBits(petitionInfo.Title.length(), 7); data.WriteBits(petitionInfo.BodyText.length(), 12); - for (uint8 i = 0; i < 10; i++) + for (std::size_t i = 0; i < petitionInfo.Choicetext.size(); ++i) data.WriteBits(petitionInfo.Choicetext[i].length(), 6); data.FlushBits(); - for (uint8 i = 0; i < 10; i++) + for (std::size_t i = 0; i < petitionInfo.Choicetext.size(); ++i) data.WriteString(petitionInfo.Choicetext[i]); data.WriteString(petitionInfo.Title); @@ -61,7 +60,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Petition::PetitionInfo co WorldPacket const* WorldPackets::Petition::QueryPetitionResponse::Write() { - _worldPacket << PetitionID; + _worldPacket << uint32(PetitionID); _worldPacket.WriteBit(Allow); _worldPacket.FlushBits(); @@ -102,13 +101,13 @@ WorldPacket const* WorldPackets::Petition::ServerPetitionShowSignatures::Write() _worldPacket << Item; _worldPacket << Owner; _worldPacket << OwnerAccountID; - _worldPacket << PetitionID; + _worldPacket << int32(PetitionID); _worldPacket << uint32(Signatures.size()); - for (PetitionSignature signature : Signatures) + for (PetitionSignature const& signature : Signatures) { _worldPacket << signature.Signer; - _worldPacket << signature.Choice; + _worldPacket << int32(signature.Choice); } return &_worldPacket; diff --git a/src/server/game/Server/Packets/PetitionPackets.h b/src/server/game/Server/Packets/PetitionPackets.h index a5b4e8dca6f..c378c053d84 100644 --- a/src/server/game/Server/Packets/PetitionPackets.h +++ b/src/server/game/Server/Packets/PetitionPackets.h @@ -56,7 +56,7 @@ namespace WorldPackets int32 NumChoices = 0; int32 StaticType = 0; uint32 Muid = 0; - std::string Choicetext[10]; + std::array Choicetext; }; class QueryPetitionResponse final : public ServerPacket diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp index c640394be93..f941c895722 100644 --- a/src/server/game/Server/Packets/QueryPackets.cpp +++ b/src/server/game/Server/Packets/QueryPackets.cpp @@ -29,7 +29,7 @@ void WorldPackets::Query::QueryCreature::Read() WorldPacket const* WorldPackets::Query::QueryCreatureResponse::Write() { - _worldPacket << CreatureID; + _worldPacket << uint32(CreatureID); _worldPacket.WriteBit(Allow); _worldPacket.FlushBits(); @@ -61,7 +61,16 @@ WorldPacket const* WorldPackets::Query::QueryCreatureResponse::Write() _worldPacket << int32(Stats.CreatureFamily); _worldPacket << int32(Stats.Classification); _worldPacket.append(Stats.ProxyCreatureID.data(), Stats.ProxyCreatureID.size()); - _worldPacket.append(Stats.CreatureDisplayID.data(), Stats.CreatureDisplayID.size()); + _worldPacket << uint32(Stats.Display.CreatureDisplay.size()); + _worldPacket << float(Stats.Display.TotalProbability); + + for (CreatureXDisplay const& display : Stats.Display.CreatureDisplay) + { + _worldPacket << uint32(display.CreatureDisplayID); + _worldPacket << float(display.Scale); + _worldPacket << float(display.Probability); + } + _worldPacket << float(Stats.HpMulti); _worldPacket << float(Stats.EnergyMulti); _worldPacket << uint32(Stats.QuestItems.size()); @@ -69,6 +78,7 @@ WorldPacket const* WorldPackets::Query::QueryCreatureResponse::Write() _worldPacket << int32(Stats.HealthScalingExpansion); _worldPacket << int32(Stats.RequiredExpansion); _worldPacket << int32(Stats.VignetteID); + _worldPacket << int32(Stats.Class); if (!Stats.Title.empty()) _worldPacket << Stats.Title; @@ -79,8 +89,8 @@ WorldPacket const* WorldPackets::Query::QueryCreatureResponse::Write() if (!Stats.CursorName.empty()) _worldPacket << Stats.CursorName; - for (int32 questItem : Stats.QuestItems) - _worldPacket << questItem; + if (!Stats.QuestItems.empty()) + _worldPacket.append(Stats.QuestItems.data(), Stats.QuestItems.size()); } return &_worldPacket; @@ -162,6 +172,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupDa data << lookupData.AccountID; data << lookupData.BnetAccountID; data << lookupData.GuidActual; + data << uint64(lookupData.GuildClubMemberID); data << uint32(lookupData.VirtualRealmAddress); data << uint8(lookupData.Race); data << uint8(lookupData.Sex); @@ -174,7 +185,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupDa WorldPacket const* WorldPackets::Query::QueryPlayerNameResponse::Write() { - _worldPacket << Result; + _worldPacket << uint8(Result); _worldPacket << Player; if (Result == RESPONSE_SUCCESS) @@ -206,7 +217,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::QueryPageTextRespo WorldPacket const* WorldPackets::Query::QueryPageTextResponse::Write() { - _worldPacket << PageTextID; + _worldPacket << uint32(PageTextID); _worldPacket.WriteBit(Allow); _worldPacket.FlushBits(); @@ -229,7 +240,7 @@ void WorldPackets::Query::QueryNPCText::Read() WorldPacket const* WorldPackets::Query::QueryNPCTextResponse::Write() { - _worldPacket << TextID; + _worldPacket << uint32(TextID); _worldPacket.WriteBit(Allow); _worldPacket.FlushBits(); @@ -238,10 +249,8 @@ WorldPacket const* WorldPackets::Query::QueryNPCTextResponse::Write() if (Allow) { - for (uint32 i = 0; i < MAX_NPC_TEXT_OPTIONS; ++i) - _worldPacket << Probabilities[i]; - for (uint32 i = 0; i < MAX_NPC_TEXT_OPTIONS; ++i) - _worldPacket << BroadcastTextID[i]; + _worldPacket.append(Probabilities.data(), Probabilities.size()); + _worldPacket.append(BroadcastTextID.data(), BroadcastTextID.size()); } return &_worldPacket; @@ -276,8 +285,8 @@ WorldPacket const* WorldPackets::Query::QueryGameObjectResponse::Write() statsData << float(Stats.Size); statsData << uint8(Stats.QuestItems.size()); - for (int32 questItem : Stats.QuestItems) - statsData << int32(questItem); + if (!Stats.QuestItems.empty()) + statsData.append(Stats.QuestItems.data(), Stats.QuestItems.size()); statsData << int32(Stats.RequiredLevel); } @@ -334,7 +343,7 @@ void WorldPackets::Query::QuestPOIQuery::Read() { _worldPacket >> MissingQuestCount; - for (uint8 i = 0; i < 50; ++i) + for (std::size_t i = 0; i < MissingQuestPOIs.size(); ++i) _worldPacket >> MissingQuestPOIs[i]; } @@ -356,13 +365,12 @@ WorldPacket const* WorldPackets::Query::QuestPOIQueryResponse::Write() _worldPacket << int32(questPOIBlobData.QuestObjectiveID); _worldPacket << int32(questPOIBlobData.QuestObjectID); _worldPacket << int32(questPOIBlobData.MapID); - _worldPacket << int32(questPOIBlobData.WorldMapAreaID); - _worldPacket << int32(questPOIBlobData.Floor); + _worldPacket << int32(questPOIBlobData.UiMapID); _worldPacket << int32(questPOIBlobData.Priority); _worldPacket << int32(questPOIBlobData.Flags); _worldPacket << int32(questPOIBlobData.WorldEffectID); _worldPacket << int32(questPOIBlobData.PlayerConditionID); - _worldPacket << int32(questPOIBlobData.UnkWoD1); + _worldPacket << int32(questPOIBlobData.SpawnTrackingID); _worldPacket << int32(questPOIBlobData.QuestPOIBlobPointStats.size()); for (QuestPOIBlobPoint const& questPOIBlobPoint : questPOIBlobData.QuestPOIBlobPointStats) @@ -381,13 +389,9 @@ WorldPacket const* WorldPackets::Query::QuestPOIQueryResponse::Write() void WorldPackets::Query::QueryQuestCompletionNPCs::Read() { - uint32 questCount = 0; - - _worldPacket >> questCount; - QuestCompletionNPCs.resize(questCount); - - for (int32& QuestID : QuestCompletionNPCs) - _worldPacket >> QuestID; + QuestCompletionNPCs.resize(_worldPacket.read()); + if (!QuestCompletionNPCs.empty()) + _worldPacket.read(QuestCompletionNPCs.data(), QuestCompletionNPCs.size()); } WorldPacket const* WorldPackets::Query::QuestCompletionNPCResponse::Write() @@ -396,10 +400,9 @@ WorldPacket const* WorldPackets::Query::QuestCompletionNPCResponse::Write() for (auto& quest : QuestCompletionNPCs) { _worldPacket << int32(quest.QuestID); - _worldPacket << uint32(quest.NPCs.size()); - for (int32 const& npc : quest.NPCs) - _worldPacket << int32(npc); + if (!quest.NPCs.empty()) + _worldPacket.append(quest.NPCs.data(), quest.NPCs.size()); } return &_worldPacket; @@ -453,6 +456,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::ItemTextCache cons WorldPacket const* WorldPackets::Query::QueryItemTextResponse::Write() { _worldPacket.WriteBit(Valid); + _worldPacket.FlushBits(); _worldPacket << Item; _worldPacket << Id; diff --git a/src/server/game/Server/Packets/QueryPackets.h b/src/server/game/Server/Packets/QueryPackets.h index 7639f165dae..dfdf3d437a0 100644 --- a/src/server/game/Server/Packets/QueryPackets.h +++ b/src/server/game/Server/Packets/QueryPackets.h @@ -23,6 +23,7 @@ #include "NPCHandler.h" #include "ObjectGuid.h" #include "Position.h" +#include "QuestDef.h" #include "SharedDefines.h" #include "UnitDefines.h" #include @@ -43,13 +44,25 @@ namespace WorldPackets uint32 CreatureID = 0; }; + struct CreatureXDisplay + { + uint32 CreatureDisplayID = 0; + float Scale = 1.0f; + float Probability = 1.0f; + }; + + struct CreatureDisplayStats + { + float TotalProbability = 0.0f; + std::vector CreatureDisplay; + }; + struct CreatureStats { CreatureStats() { Flags.fill(0); ProxyCreatureID.fill(0); - CreatureDisplayID.fill(0); } std::string Title; @@ -58,6 +71,7 @@ namespace WorldPackets int32 CreatureType = 0; int32 CreatureFamily = 0; int32 Classification = 0; + CreatureDisplayStats Display; float HpMulti = 0.0f; float EnergyMulti = 0.0f; bool Leader = false; @@ -66,9 +80,9 @@ namespace WorldPackets int32 HealthScalingExpansion = 0; uint32 RequiredExpansion = 0; uint32 VignetteID = 0; + int32 Class = 0; std::array Flags; std::array ProxyCreatureID; - std::array CreatureDisplayID; std::array Name; std::array NameAlt; }; @@ -110,6 +124,7 @@ namespace WorldPackets ObjectGuid BnetAccountID; ObjectGuid GuidActual; std::string Name; + uint64 GuildClubMemberID = 0; // same as bgs.protocol.club.v1.MemberId.unique_id uint32 VirtualRealmAddress = 0; uint8 Race = RACE_NONE; uint8 Sex = GENDER_NONE; @@ -182,8 +197,8 @@ namespace WorldPackets uint32 TextID = 0; bool Allow = false; - float Probabilities[MAX_NPC_TEXT_OPTIONS]; - uint32 BroadcastTextID[MAX_NPC_TEXT_OPTIONS]; + std::array Probabilities; + std::array BroadcastTextID; }; class QueryGameObject final : public ClientPacket @@ -297,7 +312,7 @@ namespace WorldPackets void Read() override; int32 MissingQuestCount = 0; - int32 MissingQuestPOIs[50]; + std::array MissingQuestPOIs; }; struct QuestPOIBlobPoint @@ -313,13 +328,12 @@ namespace WorldPackets int32 QuestObjectiveID = 0; int32 QuestObjectID = 0; int32 MapID = 0; - int32 WorldMapAreaID = 0; - int32 Floor = 0; + int32 UiMapID = 0; int32 Priority = 0; int32 Flags = 0; int32 WorldEffectID = 0; int32 PlayerConditionID = 0; - int32 UnkWoD1 = 0; + int32 SpawnTrackingID = 0; std::vector QuestPOIBlobPointStats; bool AlwaysAllowMergingBlobs = false; }; @@ -347,7 +361,7 @@ namespace WorldPackets void Read() override; - std::vector QuestCompletionNPCs; + Array QuestCompletionNPCs; }; struct QuestCompletionNPC diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index 20a6539ae1d..0468e170d7c 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -65,6 +65,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write() _worldPacket << int32(Info.QuestID); _worldPacket << int32(Info.QuestType); _worldPacket << int32(Info.QuestLevel); + _worldPacket << int32(Info.QuestScalingFactionGroup); _worldPacket << int32(Info.QuestMaxScalingLevel); _worldPacket << int32(Info.QuestPackageID); _worldPacket << int32(Info.QuestMinLevel); @@ -88,6 +89,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write() _worldPacket << int32(Info.StartItem); _worldPacket << uint32(Info.Flags); _worldPacket << uint32(Info.FlagsEx); + _worldPacket << uint32(Info.FlagsEx2); for (uint32 i = 0; i < QUEST_REWARD_ITEM_COUNT; ++i) { @@ -115,6 +117,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write() _worldPacket << int32(Info.RewardNumSkillUps); _worldPacket << int32(Info.PortraitGiver); + _worldPacket << int32(Info.PortraitGiverMount); _worldPacket << int32(Info.PortraitTurnIn); for (uint32 i = 0; i < QUEST_REWARD_REPUTATIONS_COUNT; ++i) @@ -141,7 +144,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write() _worldPacket << uint32(Info.Objectives.size()); _worldPacket << uint64(Info.AllowableRaces); - _worldPacket << int32(Info.QuestRewardID); + _worldPacket << int32(Info.TreasurePickerID); _worldPacket << int32(Info.Expansion); _worldPacket.WriteBits(Info.LogTitle.size(), 9); @@ -222,13 +225,6 @@ WorldPacket const* WorldPackets::Quest::QuestUpdateAddPvPCredit::Write() ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestRewards const& questRewards) { data << int32(questRewards.ChoiceItemCount); - - for (uint32 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i) - { - data << int32(questRewards.ChoiceItems[i].ItemID); - data << int32(questRewards.ChoiceItems[i].Quantity); - } - data << int32(questRewards.ItemCount); for (uint32 i = 0; i < QUEST_REWARD_ITEM_COUNT; ++i) @@ -266,7 +262,13 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::QuestRewards const data << int32(questRewards.SkillLineID); data << int32(questRewards.NumSkillUps); - data << int32(questRewards.RewardID); + data << int32(questRewards.TreasurePickerID); + + for (uint32 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i) + { + data << questRewards.ChoiceItems[i].Item; + data << int32(questRewards.ChoiceItems[i].Quantity); + } data.WriteBit(questRewards.IsBoostSpell); data.FlushBits(); @@ -302,6 +304,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverOfferRewardMessage::Write() _worldPacket << QuestData; // WorldPackets::Quest::QuestGiverOfferReward _worldPacket << int32(QuestPackageID); _worldPacket << int32(PortraitGiver); + _worldPacket << int32(PortraitGiverMount); _worldPacket << int32(PortraitTurnIn); _worldPacket.WriteBits(QuestTitle.size(), 9); @@ -360,6 +363,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestDetails::Write() _worldPacket << int32(QuestID); _worldPacket << int32(QuestPackageID); _worldPacket << int32(PortraitGiver); + _worldPacket << int32(PortraitGiverMount); _worldPacket << int32(PortraitTurnIn); _worldPacket << uint32(QuestFlags[0]); // Flags _worldPacket << uint32(QuestFlags[1]); // FlagsEx @@ -643,6 +647,9 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Quest::PlayerChoiceRespon { data << int32(playerChoiceResponse.ResponseID); data << int32(playerChoiceResponse.ChoiceArtFileID); + data << int32(playerChoiceResponse.Flags); + data << uint32(playerChoiceResponse.WidgetSetID); + data << uint8(playerChoiceResponse.GroupID); data.WriteBits(playerChoiceResponse.Answer.length(), 9); data.WriteBits(playerChoiceResponse.Header.length(), 9); @@ -670,6 +677,7 @@ WorldPacket const* WorldPackets::Quest::DisplayPlayerChoice::Write() _worldPacket.WriteBits(Question.length(), 8); _worldPacket.WriteBit(CloseChoiceFrame); _worldPacket.WriteBit(HideWarboardHeader); + _worldPacket.WriteBit(KeepOpenAfterChoice); _worldPacket.FlushBits(); for (PlayerChoiceResponse const& response : Responses) diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index 1dd40e1ccc2..1315a57949c 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -109,6 +109,7 @@ namespace WorldPackets int32 QuestID = 0; int32 QuestType = 0; // Accepted values: 0, 1 or 2. 0 == IsAutoComplete() (skip objectives/details) int32 QuestLevel = 0; // may be -1, static data, in other cases must be used dynamic level: Player::GetQuestLevel (0 is not known, but assuming this is no longer valid for quest intended for client) + int32 QuestScalingFactionGroup = 0; int32 QuestMaxScalingLevel = 255; int32 QuestPackageID = 0; int32 QuestMinLevel = 0; @@ -132,6 +133,7 @@ namespace WorldPackets int32 StartItem = 0; uint32 Flags = 0; uint32 FlagsEx = 0; + uint32 FlagsEx2 = 0; int32 POIContinent = 0; float POIx = 0.0f; float POIy = 0.0f; @@ -146,6 +148,7 @@ namespace WorldPackets int32 RewardSkillLineID = 0; // reward skill id int32 RewardNumSkillUps = 0; // reward skill points int32 PortraitGiver = 0; // quest giver entry ? + int32 PortraitGiverMount = 0; int32 PortraitTurnIn = 0; // quest turn in entry ? std::string PortraitGiverText; std::string PortraitGiverName; @@ -157,7 +160,7 @@ namespace WorldPackets int32 CompleteSoundKitID = 0; int32 AreaGroupID = 0; int32 TimeAllowed = 0; - int32 QuestRewardID = 0; + int32 TreasurePickerID = 0; int32 Expansion = 0; std::vector Objectives; int32 RewardItems[QUEST_REWARD_ITEM_COUNT] = { }; @@ -225,7 +228,7 @@ namespace WorldPackets struct QuestChoiceItem { - int32 ItemID = 0; + Item::ItemInstance Item; int32 Quantity = 0; }; @@ -244,7 +247,7 @@ namespace WorldPackets int32 SpellCompletionID = 0; int32 SkillLineID = 0; int32 NumSkillUps = 0; - int32 RewardID = 0; + int32 TreasurePickerID = 0; QuestChoiceItem ChoiceItems[QUEST_REWARD_CHOICES_COUNT]; int32 ItemID[QUEST_REWARD_ITEM_COUNT] = { }; int32 ItemQty[QUEST_REWARD_ITEM_COUNT] = { }; @@ -285,6 +288,7 @@ namespace WorldPackets int32 PortraitTurnIn = 0; int32 PortraitGiver = 0; + int32 PortraitGiverMount = 0; std::string QuestTitle; std::string RewardText; std::string PortraitGiverText; @@ -365,6 +369,7 @@ namespace WorldPackets std::vector LearnSpells; int32 PortraitTurnIn = 0; int32 PortraitGiver = 0; + int32 PortraitGiverMount = 0; int32 QuestStartItemID = 0; std::string PortraitGiverText; std::string PortraitGiverName; @@ -663,6 +668,9 @@ namespace WorldPackets { int32 ResponseID = 0; int32 ChoiceArtFileID = 0; + int32 Flags = 0; + uint32 WidgetSetID = 0; + uint8 GroupID = 0; std::string Answer; std::string Header; std::string Description; @@ -684,6 +692,7 @@ namespace WorldPackets std::vector Responses; bool CloseChoiceFrame = false; bool HideWarboardHeader = false; + bool KeepOpenAfterChoice = false; }; class ChoiceResponse final : public ClientPacket diff --git a/src/server/game/Server/Packets/ReputationPackets.cpp b/src/server/game/Server/Packets/ReputationPackets.cpp index 314dac85c5e..5e4eb54a918 100644 --- a/src/server/game/Server/Packets/ReputationPackets.cpp +++ b/src/server/game/Server/Packets/ReputationPackets.cpp @@ -46,8 +46,6 @@ WorldPacket const* WorldPackets::Reputation::SetForcedReactions::Write() for (ForcedReaction const& reaction : Reactions) _worldPacket << reaction; - _worldPacket.FlushBits(); - return &_worldPacket; } diff --git a/src/server/game/Server/Packets/ReputationPackets.h b/src/server/game/Server/Packets/ReputationPackets.h index 0156d504491..2046e169ab5 100644 --- a/src/server/game/Server/Packets/ReputationPackets.h +++ b/src/server/game/Server/Packets/ReputationPackets.h @@ -30,7 +30,7 @@ namespace WorldPackets class InitializeFactions final : public ServerPacket { public: - InitializeFactions() : ServerPacket(SMSG_INITIALIZE_FACTIONS, 1312) + InitializeFactions() : ServerPacket(SMSG_INITIALIZE_FACTIONS, FactionCount * (4 + 1) + FactionCount / 8) { FactionStandings.fill(0); FactionHasBonus.fill(false); diff --git a/src/server/game/Server/Packets/ScenarioPackets.cpp b/src/server/game/Server/Packets/ScenarioPackets.cpp index 38a667980a1..73f5120ee8d 100644 --- a/src/server/game/Server/Packets/ScenarioPackets.cpp +++ b/src/server/game/Server/Packets/ScenarioPackets.cpp @@ -109,8 +109,7 @@ WorldPacket const* WorldPackets::Scenario::ScenarioPOIs::Write() { _worldPacket << int32(scenarioPOI.BlobIndex); _worldPacket << int32(scenarioPOI.MapID); - _worldPacket << int32(scenarioPOI.WorldMapAreaID); - _worldPacket << int32(scenarioPOI.Floor); + _worldPacket << int32(scenarioPOI.UiMapID); _worldPacket << int32(scenarioPOI.Priority); _worldPacket << int32(scenarioPOI.Flags); _worldPacket << int32(scenarioPOI.WorldEffectID); diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index ec6d57f2748..7b3117156fc 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -33,6 +33,7 @@ void WorldPackets::Spells::PetCancelAura::Read() void WorldPackets::Spells::CancelChannelling::Read() { _worldPacket >> ChannelSpell; + _worldPacket >> Reason; } WorldPacket const* WorldPackets::Spells::CategoryCooldown::Write() @@ -99,16 +100,17 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::AuraDataInfo cons data << uint32(auraData.ActiveFlags); data << uint16(auraData.CastLevel); data << uint8(auraData.Applications); + data << int32(auraData.ContentTuningID); data.WriteBit(auraData.CastUnit.is_initialized()); data.WriteBit(auraData.Duration.is_initialized()); data.WriteBit(auraData.Remaining.is_initialized()); data.WriteBit(auraData.TimeMod.is_initialized()); data.WriteBits(auraData.Points.size(), 6); data.WriteBits(auraData.EstimatedPoints.size(), 6); - data.WriteBit(auraData.SandboxScaling.is_initialized()); + data.WriteBit(auraData.ContentTuning.is_initialized()); - if (auraData.SandboxScaling) - data << *auraData.SandboxScaling; + if (auraData.ContentTuning) + data << *auraData.ContentTuning; if (auraData.CastUnit) data << *auraData.CastUnit; @@ -211,7 +213,7 @@ ByteBuffer& operator>>(ByteBuffer& buffer, WorldPackets::Spells::SpellCastReques buffer >> request.SpellID; buffer >> request.SpellXSpellVisualID; buffer >> request.MissileTrajectory; - buffer >> request.Charmer; + buffer >> request.CraftingNPC; request.SendCastFlags = buffer.ReadBits(5); bool hasMoveUpdate = buffer.ReadBit(); request.Weight.resize(buffer.ReadBits(2)); @@ -366,13 +368,13 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCastData con data << int32(spellCastData.SpellID); data << uint32(spellCastData.SpellXSpellVisualID); data << uint32(spellCastData.CastFlags); + data << uint32(spellCastData.CastFlagsEx); data << uint32(spellCastData.CastTime); data << spellCastData.MissileTrajectory; data << int32(spellCastData.Ammo.DisplayID); data << uint8(spellCastData.DestLocSpellCastIndex); data << spellCastData.Immunities; data << spellCastData.Predict; - data.WriteBits(spellCastData.CastFlagsEx, 23); data.WriteBits(spellCastData.HitTargets.size(), 16); data.WriteBits(spellCastData.MissTargets.size(), 16); data.WriteBits(spellCastData.MissStatus.size(), 16); @@ -716,6 +718,7 @@ WorldPacket const* WorldPackets::Spells::PlayOrphanSpellVisual::Write() _worldPacket << int32(SpellVisualID); _worldPacket << float(TravelSpeed); _worldPacket << float(UnkZero); + _worldPacket << float(Unk801); _worldPacket.WriteBit(SpeedAsTime); _worldPacket.FlushBits(); @@ -726,12 +729,14 @@ WorldPacket const* WorldPackets::Spells::PlaySpellVisual::Write() { _worldPacket << Source; _worldPacket << Target; + _worldPacket << Unk801_1; _worldPacket << TargetPosition; - _worldPacket << SpellVisualID; - _worldPacket << TravelSpeed; - _worldPacket << MissReason; - _worldPacket << ReflectStatus; - _worldPacket << Orientation; + _worldPacket << uint32(SpellVisualID); + _worldPacket << float(TravelSpeed); + _worldPacket << uint16(MissReason); + _worldPacket << uint16(ReflectStatus); + _worldPacket << float(Orientation); + _worldPacket << float(Unk801_2); _worldPacket.WriteBit(SpeedAsTime); _worldPacket.FlushBits(); diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index b1230459627..1df8e8772c0 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -57,6 +57,8 @@ namespace WorldPackets void Read() override; int32 ChannelSpell = 0; + int32 Reason = 0; // 40 = /run SpellStopCasting(), 16 = movement/AURA_INTERRUPT_FLAG_MOVE, 41 = turning/AURA_INTERRUPT_FLAG_TURNING + // does not match SpellCastResult enum }; class CancelGrowthAura final : public ClientPacket @@ -177,7 +179,8 @@ namespace WorldPackets uint32 ActiveFlags = 0; uint16 CastLevel = 1; uint8 Applications = 1; - Optional SandboxScaling; + int32 ContentTuningID = 0; + Optional ContentTuning; Optional CastUnit; Optional Duration; Optional Remaining; @@ -245,7 +248,7 @@ namespace WorldPackets MissileTrajectoryRequest MissileTrajectory; Optional MoveUpdate; std::vector Weight; - ObjectGuid Charmer; + ObjectGuid CraftingNPC; int32 Misc[2] = { }; }; @@ -613,7 +616,7 @@ namespace WorldPackets class SetSpellCharges final : public ServerPacket { public: - SetSpellCharges() : ServerPacket(SMSG_SET_SPELL_CHARGES, 1 + 4 + 4) { } + SetSpellCharges() : ServerPacket(SMSG_SET_SPELL_CHARGES, 4 + 4 + 1 + 4 + 1) { } WorldPacket const* Write() override; @@ -697,6 +700,7 @@ namespace WorldPackets bool SpeedAsTime = false; float TravelSpeed = 0.0f; float UnkZero = 0.0f; // Always zero + float Unk801 = 0.0f; TaggedPosition SourceRotation; // Vector of rotations, Orientation is z TaggedPosition TargetLocation; // Exclusive with Target }; @@ -710,6 +714,7 @@ namespace WorldPackets ObjectGuid Source; ObjectGuid Target; // Exclusive with TargetPosition + ObjectGuid Unk801_1; uint16 MissReason = 0; uint32 SpellVisualID = 0; bool SpeedAsTime = false; @@ -717,6 +722,7 @@ namespace WorldPackets float TravelSpeed = 0.0f; TaggedPosition TargetPosition; // Exclusive with Target float Orientation = 0.0f; + float Unk801_2 = 0.0f; }; class PlaySpellVisualKit final : public ServerPacket diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index da674178456..71dbce750e7 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -37,6 +37,8 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write() _worldPacket << uint32(BpayStoreProductDeliveryDelay); + _worldPacket << uint32(ClubsPresenceUpdateTimer); + _worldPacket.WriteBit(VoiceEnabled); _worldPacket.WriteBit(EuropaTicketSystemStatus.is_initialized()); _worldPacket.WriteBit(ScrollOfResurrectionEnabled); @@ -49,16 +51,22 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write() _worldPacket.WriteBit(RecruitAFriendSendingEnabled); _worldPacket.WriteBit(CharUndeleteEnabled); _worldPacket.WriteBit(RestrictedAccount); + _worldPacket.WriteBit(CommerceSystemEnabled); _worldPacket.WriteBit(TutorialsEnabled); _worldPacket.WriteBit(NPETutorialsEnabled); _worldPacket.WriteBit(TwitterEnabled); - _worldPacket.WriteBit(CommerceSystemEnabled); _worldPacket.WriteBit(Unk67); _worldPacket.WriteBit(WillKickFromWorld); _worldPacket.WriteBit(KioskModeEnabled); _worldPacket.WriteBit(CompetitiveModeEnabled); _worldPacket.WriteBit(RaceClassExpansionLevels.is_initialized()); _worldPacket.WriteBit(TokenBalanceEnabled); + _worldPacket.WriteBit(WarModeFeatureEnabled); + _worldPacket.WriteBit(ClubsEnabled); + _worldPacket.WriteBit(ClubsBattleNetClubTypeAllowed); + _worldPacket.WriteBit(ClubsCharacterClubTypeAllowed); + _worldPacket.WriteBit(VoiceChatDisabledByParentalControl); + _worldPacket.WriteBit(VoiceChatMutedByParentalControl); _worldPacket.FlushBits(); @@ -102,6 +110,12 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write() _worldPacket.append(RaceClassExpansionLevels->data(), RaceClassExpansionLevels->size()); } + { + _worldPacket.WriteBit(VoiceChatManagerSettings.Enabled); + _worldPacket << VoiceChatManagerSettings.Unused_801_1; + _worldPacket << VoiceChatManagerSettings.Unused_801_2; + } + if (EuropaTicketSystemStatus) { _worldPacket.WriteBit(EuropaTicketSystemStatus->TicketsEnabled); @@ -141,7 +155,12 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatusGlueScreen::Write() _worldPacket << int32(TokenPollTimeSeconds); _worldPacket << int32(TokenRedeemIndex); _worldPacket << int64(TokenBalanceAmount); + _worldPacket << int32(MaxCharactersPerRealm); _worldPacket << uint32(BpayStoreProductDeliveryDelay); + _worldPacket << int32(ActiveCharacterUpgradeBoostType); + _worldPacket << int32(ActiveClassTrialBoostType); + _worldPacket << int32(MinimumExpansionLevel); + _worldPacket << int32(MaximumExpansionLevel); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h index 74d40bf4e05..8fe1f515590 100644 --- a/src/server/game/Server/Packets/SystemPackets.h +++ b/src/server/game/Server/Packets/SystemPackets.h @@ -80,6 +80,13 @@ namespace WorldPackets float ThrottleDfBestPriority = 0.0f; }; + struct VoiceChatProxySettings + { + bool Enabled = false; + ObjectGuid Unused_801_1; + ObjectGuid Unused_801_2; + }; + FeatureSystemStatus() : ServerPacket(SMSG_FEATURE_SYSTEM_STATUS, 48) { } WorldPacket const* Write() override; @@ -103,6 +110,7 @@ namespace WorldPackets uint32 TokenRedeemIndex = 0; int64 TokenBalanceAmount = 0; uint32 BpayStoreProductDeliveryDelay = 0; + uint32 ClubsPresenceUpdateTimer = 0; bool ItemRestorationButtonEnabled = false; bool CharUndeleteEnabled = false; ///< Implemented bool BpayStoreDisabledByParentalControls = false; @@ -110,16 +118,22 @@ namespace WorldPackets bool CommerceSystemEnabled = false; bool Unk67 = false; bool WillKickFromWorld = false; - bool RestrictedAccount = false; bool TutorialsEnabled = false; bool NPETutorialsEnabled = false; bool KioskModeEnabled = false; bool CompetitiveModeEnabled = false; bool TokenBalanceEnabled = false; + bool WarModeFeatureEnabled = false; + bool ClubsEnabled = false; + bool ClubsBattleNetClubTypeAllowed = false; + bool ClubsCharacterClubTypeAllowed = false; + bool VoiceChatDisabledByParentalControl = false; + bool VoiceChatMutedByParentalControl = false; Optional> RaceClassExpansionLevels; SocialQueueConfig QuickJoinConfig; + VoiceChatProxySettings VoiceChatManagerSettings; }; class FeatureSystemStatusGlueScreen final : public ServerPacket @@ -147,7 +161,12 @@ namespace WorldPackets int32 TokenPollTimeSeconds = 0; // NYI int32 TokenRedeemIndex = 0; // NYI int64 TokenBalanceAmount = 0; // NYI + int32 MaxCharactersPerRealm = 0; uint32 BpayStoreProductDeliveryDelay = 0; // NYI + int32 ActiveCharacterUpgradeBoostType = 0; // NYI + int32 ActiveClassTrialBoostType = 0; // NYI + int32 MinimumExpansionLevel = 0; + int32 MaximumExpansionLevel = 0; }; class MOTD final : public ServerPacket diff --git a/src/server/game/Server/Packets/TalentPackets.cpp b/src/server/game/Server/Packets/TalentPackets.cpp index c5cbb0769a5..3344ef292fc 100644 --- a/src/server/game/Server/Packets/TalentPackets.cpp +++ b/src/server/game/Server/Packets/TalentPackets.cpp @@ -17,6 +17,20 @@ #include "TalentPackets.h" +ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::Talent::PvPTalent& pvpTalent) +{ + data >> pvpTalent.PvPTalentID; + data >> pvpTalent.Slot; + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Talent::PvPTalent const& pvpTalent) +{ + data << uint16(pvpTalent.PvPTalentID); + data << uint8(pvpTalent.Slot); + return data; +} + WorldPacket const* WorldPackets::Talent::UpdateTalentData::Write() { _worldPacket << uint8(Info.ActiveGroup); @@ -27,13 +41,13 @@ WorldPacket const* WorldPackets::Talent::UpdateTalentData::Write() { _worldPacket << uint32(talentGroupInfo.SpecID); _worldPacket << uint32(talentGroupInfo.TalentIDs.size()); - _worldPacket << uint32(talentGroupInfo.PvPTalentIDs.size()); + _worldPacket << uint32(talentGroupInfo.PvPTalents.size()); - for (uint16 talentID : talentGroupInfo.TalentIDs) - _worldPacket << uint16(talentID); + for (uint16 talent : talentGroupInfo.TalentIDs) + _worldPacket << uint16(talent); - for (uint16 talentID : talentGroupInfo.PvPTalentIDs) - _worldPacket << uint16(talentID); + for (PvPTalent talent : talentGroupInfo.PvPTalents) + _worldPacket << talent; } return &_worldPacket; @@ -92,7 +106,7 @@ WorldPacket const* WorldPackets::Talent::ActiveGlyphs::Write() void WorldPackets::Talent::LearnPvpTalents::Read() { - Talents.resize(_worldPacket.ReadBits(6)); + Talents.resize(_worldPacket.read()); for (uint32 i = 0; i < Talents.size(); ++i) _worldPacket >> Talents[i]; } @@ -102,8 +116,8 @@ WorldPacket const* WorldPackets::Talent::LearnPvpTalentsFailed::Write() _worldPacket.WriteBits(Reason, 4); _worldPacket << int32(SpellID); _worldPacket << uint32(Talents.size()); - if (!Talents.empty()) - _worldPacket.append(Talents.data(), Talents.size()); + for (PvPTalent pvpTalent : Talents) + _worldPacket << pvpTalent; return &_worldPacket; } diff --git a/src/server/game/Server/Packets/TalentPackets.h b/src/server/game/Server/Packets/TalentPackets.h index 27db9f99eb5..6cbc8aca057 100644 --- a/src/server/game/Server/Packets/TalentPackets.h +++ b/src/server/game/Server/Packets/TalentPackets.h @@ -27,11 +27,17 @@ namespace WorldPackets { namespace Talent { + struct PvPTalent + { + uint16 PvPTalentID = 0; + uint8 Slot = 0; + }; + struct TalentGroupInfo { uint32 SpecID = 0; std::vector TalentIDs; - std::vector PvPTalentIDs; + std::vector PvPTalents; }; struct TalentInfoUpdate @@ -121,7 +127,7 @@ namespace WorldPackets void Read() override; - Array Talents; + Array Talents; }; class LearnPvpTalentsFailed final : public ServerPacket @@ -133,7 +139,7 @@ namespace WorldPackets uint32 Reason = 0; int32 SpellID = 0; - std::vector Talents; + std::vector Talents; }; } } diff --git a/src/server/game/Server/Packets/TaxiPackets.h b/src/server/game/Server/Packets/TaxiPackets.h index 098ed293fbb..9e10f7bd442 100644 --- a/src/server/game/Server/Packets/TaxiPackets.h +++ b/src/server/game/Server/Packets/TaxiPackets.h @@ -110,7 +110,7 @@ namespace WorldPackets class ActivateTaxiReply final : public ServerPacket { public: - ActivateTaxiReply() : ServerPacket(SMSG_ACTIVATE_TAXI_REPLY, 4) { } + ActivateTaxiReply() : ServerPacket(SMSG_ACTIVATE_TAXI_REPLY, 1) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/TicketPackets.cpp b/src/server/game/Server/Packets/TicketPackets.cpp index cafb723c062..fe74550c77f 100644 --- a/src/server/game/Server/Packets/TicketPackets.cpp +++ b/src/server/game/Server/Packets/TicketPackets.cpp @@ -201,9 +201,17 @@ void WorldPackets::Ticket::SupportTicketSubmitComplaint::Read() bool hasGuildInfo = _worldPacket.ReadBit(); bool hasLFGListSearchResult = _worldPacket.ReadBit(); bool hasLFGListApplicant = _worldPacket.ReadBit(); + bool hasClubMessage = _worldPacket.ReadBit(); _worldPacket.ResetBitPos(); + if (hasClubMessage) + { + CommunityMessage = boost::in_place(); + CommunityMessage->IsPlayerUsingVoice = _worldPacket.ReadBit(); + _worldPacket.ResetBitPos(); + } + if (hasMailInfo) _worldPacket >> MailInfo; diff --git a/src/server/game/Server/Packets/TicketPackets.h b/src/server/game/Server/Packets/TicketPackets.h index 6e25f3da4a9..5e7fc20f2eb 100644 --- a/src/server/game/Server/Packets/TicketPackets.h +++ b/src/server/game/Server/Packets/TicketPackets.h @@ -178,6 +178,11 @@ namespace WorldPackets std::string Comment; }; + struct SupportTicketCommunityMessage + { + bool IsPlayerUsingVoice = false; + }; + SupportTicketSubmitComplaint(WorldPacket&& packet) : ClientPacket(CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT, std::move(packet)) { } void Read() override; @@ -193,7 +198,7 @@ namespace WorldPackets Optional GuildInfo; Optional LFGListSearchResult; Optional LFGListApplicant; - + Optional CommunityMessage; }; class Complaint final : public ClientPacket diff --git a/src/server/game/Server/Packets/TotemPackets.cpp b/src/server/game/Server/Packets/TotemPackets.cpp index 1bd8f1c915e..a7b042ca19a 100644 --- a/src/server/game/Server/Packets/TotemPackets.cpp +++ b/src/server/game/Server/Packets/TotemPackets.cpp @@ -25,7 +25,7 @@ void WorldPackets::Totem::TotemDestroyed::Read() WorldPacket const* WorldPackets::Totem::TotemCreated::Write() { - _worldPacket << Slot; + _worldPacket << uint8(Slot); _worldPacket << Totem; _worldPacket << int32(Duration); _worldPacket << int32(SpellID); diff --git a/src/server/game/Server/Packets/TotemPackets.h b/src/server/game/Server/Packets/TotemPackets.h index b438109825c..232b26f1cbb 100644 --- a/src/server/game/Server/Packets/TotemPackets.h +++ b/src/server/game/Server/Packets/TotemPackets.h @@ -46,7 +46,7 @@ namespace WorldPackets ObjectGuid Totem; int32 SpellID = 0; int32 Duration = 0; - int8 Slot = 0; + uint8 Slot = 0; float TimeMod = 1.0f; bool CannotDismiss = false; }; diff --git a/src/server/game/Server/Packets/TransmogrificationPackets.cpp b/src/server/game/Server/Packets/TransmogrificationPackets.cpp index 7d50891bc3e..da2c3972b12 100644 --- a/src/server/game/Server/Packets/TransmogrificationPackets.cpp +++ b/src/server/game/Server/Packets/TransmogrificationPackets.cpp @@ -41,8 +41,8 @@ WorldPacket const* WorldPackets::Transmogrification::TransmogCollectionUpdate::W _worldPacket.WriteBit(IsFullUpdate); _worldPacket.WriteBit(IsSetFavorite); _worldPacket << uint32(FavoriteAppearances.size()); - for (uint32 itemModifiedAppearanceId : FavoriteAppearances) - _worldPacket << uint32(itemModifiedAppearanceId); + if (!FavoriteAppearances.empty()) + _worldPacket.append(FavoriteAppearances.data(), FavoriteAppearances.size()); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/WhoPackets.cpp b/src/server/game/Server/Packets/WhoPackets.cpp index afc6c3bdd28..9cfbc04e488 100644 --- a/src/server/game/Server/Packets/WhoPackets.cpp +++ b/src/server/game/Server/Packets/WhoPackets.cpp @@ -117,8 +117,8 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Who::WhoResponse const& r data.WriteBits(response.Entries.size(), 6); data.FlushBits(); - for (size_t i = 0; i < response.Entries.size(); ++i) - data << response.Entries[i]; + for (WorldPackets::Who::WhoEntry const& whoEntry : response.Entries) + data << whoEntry; return data; } diff --git a/src/server/game/Server/Packets/WorldStatePackets.cpp b/src/server/game/Server/Packets/WorldStatePackets.cpp index 0c202978de8..8129e2e8af0 100644 --- a/src/server/game/Server/Packets/WorldStatePackets.cpp +++ b/src/server/game/Server/Packets/WorldStatePackets.cpp @@ -24,14 +24,14 @@ WorldPacket const* WorldPackets::WorldState::InitWorldStates::Write() { _worldPacket.reserve(16 + Worldstates.size() * 8); - _worldPacket << uint32(MapID); - _worldPacket << uint32(AreaID); - _worldPacket << uint32(SubareaID); + _worldPacket << int32(MapID); + _worldPacket << int32(AreaID); + _worldPacket << int32(SubareaID); _worldPacket << uint32(Worldstates.size()); for (WorldStateInfo const& wsi : Worldstates) { - _worldPacket << uint32(wsi.VariableID); + _worldPacket << int32(wsi.VariableID); _worldPacket << int32(wsi.Value); } diff --git a/src/server/game/Server/Packets/WorldStatePackets.h b/src/server/game/Server/Packets/WorldStatePackets.h index ba7aa8fe282..766725fcf66 100644 --- a/src/server/game/Server/Packets/WorldStatePackets.h +++ b/src/server/game/Server/Packets/WorldStatePackets.h @@ -29,10 +29,10 @@ namespace WorldPackets public: struct WorldStateInfo { - WorldStateInfo(uint32 variableID, int32 value) + WorldStateInfo(int32 variableID, int32 value) : VariableID(variableID), Value(value) { } - uint32 VariableID; + int32 VariableID; int32 Value; }; @@ -40,9 +40,9 @@ namespace WorldPackets WorldPacket const* Write() override; - uint32 AreaID = 0; ///< ZoneId - uint32 SubareaID = 0; ///< AreaId - uint32 MapID = 0; ///< MapId + int32 AreaID = 0; ///< ZoneId + int32 SubareaID = 0; ///< AreaId + int32 MapID = 0; ///< MapId std::vector Worldstates; }; diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index ec0efbf4446..2f75b82ec74 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -898,7 +898,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_DENIED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_NO_CORPSE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_RE_PATH, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_RE_SHAPE, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_AREA_TRIGGER_RE_SHAPE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_CROWD_CONTROL_SPELLS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_ERROR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1008,7 +1008,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_BROADCAST_ACHIEVEMENT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BUY_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_BUY_SUCCEEDED, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_CACHE_INFO, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_CACHE_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CACHE_VERSION, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_CLEAR_PENDING_ACTION, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_COMMAND_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1237,6 +1237,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_COMPLETE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_POI, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_GOSSIP_TEXT_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_ACTION_THROTTLED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_DECLINE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_GROUP_DESTROYED, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1520,7 +1521,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_INVITE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_KILL_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_MEMBER_STATE, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_MEMBER_STATE_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_MEMBER_STATE_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAUSE_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_PENDING_RAID_LOCK, STATUS_NEVER, CONNECTION_TYPE_REALM); @@ -1656,7 +1657,6 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_REQUEST_PVP_BRAWL_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_REQUEST_PVP_REWARDS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESEARCH_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_AREA_TRIGGER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_COMPRESSION_CONTEXT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_FAILED_NOTIFY, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_RANGED_COMBAT_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index bdf5bc3b9fa..9164e453ad7 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -797,8 +797,8 @@ enum OpcodeServer : uint16 SMSG_AREA_SPIRIT_HEALER_TIME = 0x278A, SMSG_AREA_TRIGGER_DENIED = 0x26A2, SMSG_AREA_TRIGGER_NO_CORPSE = 0x275E, - SMSG_AREA_TRIGGER_RE_PATH = 0x2641, - SMSG_AREA_TRIGGER_RE_SHAPE = 0x263E, + SMSG_AREA_TRIGGER_RE_PATH = 0x263E, + SMSG_AREA_TRIGGER_RE_SHAPE = 0x2642, SMSG_ARENA_CROWD_CONTROL_SPELLS = 0x2650, SMSG_ARENA_ERROR = 0x271A, SMSG_ARENA_PREP_OPPONENT_SPECIALIZATIONS = 0x2667, @@ -1136,6 +1136,7 @@ enum OpcodeServer : uint16 SMSG_GOSSIP_COMPLETE = 0x2A96, SMSG_GOSSIP_MESSAGE = 0x2A97, SMSG_GOSSIP_POI = 0x27E4, + SMSG_GOSSIP_TEXT_UPDATE = 0x2A98, SMSG_GROUP_ACTION_THROTTLED = 0x259C, SMSG_GROUP_DECLINE = 0x27DF, SMSG_GROUP_DESTROYED = 0x27E1, @@ -1557,7 +1558,6 @@ enum OpcodeServer : uint16 SMSG_REQUEST_PVP_BRAWL_INFO_RESPONSE = 0x25D5, SMSG_REQUEST_PVP_REWARDS_RESPONSE = 0x25D4, SMSG_RESEARCH_COMPLETE = 0x2585, - SMSG_RESET_AREA_TRIGGER = 0x2642, SMSG_RESET_COMPRESSION_CONTEXT = 0x304F, SMSG_RESET_FAILED_NOTIFY = 0x26E9, SMSG_RESET_RANGED_COMBAT_TIMER = 0x271C, diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 4442a41a0a2..ecf3dcf5819 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -1127,7 +1127,7 @@ class TC_GAME_API WorldSession void HandleUndeleteCooldownStatusCallback(PreparedQueryResult result); void HandleCharUndeleteOpcode(WorldPackets::Character::UndeleteCharacter& undeleteInfo); - void SendCharCreate(ResponseCodes result); + void SendCharCreate(ResponseCodes result, ObjectGuid const& guid = ObjectGuid::Empty); void SendCharDelete(ResponseCodes result); void SendCharRename(ResponseCodes result, WorldPackets::Character::CharacterRenameInfo const* renameInfo); void SendCharCustomize(ResponseCodes result, WorldPackets::Character::CharCustomizeInfo const* customizeInfo); diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 974fb7879dc..dd4a75865ac 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -70,8 +70,7 @@ uint8 const WorldSocket::AuthCheckSeed[16] = { 0xC5, 0xC6, 0x98, 0x95, 0x76, 0x3 uint8 const WorldSocket::SessionKeySeed[16] = { 0x58, 0xCB, 0xCF, 0x40, 0xFE, 0x2E, 0xCE, 0xA6, 0x5A, 0x90, 0xB8, 0x01, 0x68, 0x6C, 0x28, 0x0B }; uint8 const WorldSocket::ContinuedSessionSeed[16] = { 0x16, 0xAD, 0x0C, 0xD4, 0x46, 0xF9, 0x4F, 0xB2, 0xEF, 0x7D, 0xEA, 0x2A, 0x17, 0x66, 0x4D, 0x2F }; -uint8 const ClientTypeSeed_Win[16] = { 0x79, 0x7E, 0xCC, 0x19, 0x66, 0x2D, 0xCB, 0xD5, 0x09, 0x0A, 0x44, 0x81, 0x17, 0x3F, 0x1D, 0x26 }; -uint8 const ClientTypeSeed_Wn64[16] = { 0x6E, 0x21, 0x2D, 0xEF, 0x6A, 0x01, 0x24, 0xA3, 0xD9, 0xAD, 0x07, 0xF5, 0xE3, 0x22, 0xF7, 0xAE }; +uint8 const ClientTypeSeed_Wn64[16] = { 0xDD, 0x62, 0x65, 0x17, 0xCC, 0x6D, 0x31, 0x93, 0x2B, 0x47, 0x99, 0x34, 0xCC, 0xDC, 0x0A, 0xBF }; uint8 const ClientTypeSeed_Mc64[16] = { 0x34, 0x1C, 0xFE, 0xFE, 0x3D, 0x72, 0xAC, 0xA9, 0xA4, 0x40, 0x7D, 0xC5, 0x35, 0xDE, 0xD6, 0x6A }; WorldSocket::WorldSocket(tcp::socket&& socket) : Socket(std::move(socket)), @@ -670,9 +669,7 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptrDealDamage(target, damage, &cleanDamage, DOT, GetSpellInfo()->GetSchoolMask(), GetSpellInfo(), true); @@ -5657,6 +5657,7 @@ void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) c // SendSpellNonMeleeDamageLog expects non-absorbed/non-resisted damage SpellNonMeleeDamage log(caster, target, GetId(), GetBase()->GetSpellXSpellVisualId(), GetSpellInfo()->GetSchoolMask(), GetBase()->GetCastGUID()); log.damage = damage; + log.originalDamage = dmg; log.absorb = absorb; log.resist = resist; log.periodicLog = true; @@ -5805,7 +5806,7 @@ void AuraEffect::HandlePeriodicHealAurasTick(Unit* target, Unit* caster) const caster->CalcHealAbsorb(healInfo); caster->DealHeal(healInfo); - SpellPeriodicAuraLogInfo pInfo(this, heal, heal - healInfo.GetEffectiveHeal(), healInfo.GetAbsorb(), 0, 0.0f, crit); + SpellPeriodicAuraLogInfo pInfo(this, heal, damage, heal - healInfo.GetEffectiveHeal(), healInfo.GetAbsorb(), 0, 0.0f, crit); target->SendPeriodicAuraLog(&pInfo); target->getHostileRefManager().threatAssist(caster, float(healInfo.GetEffectiveHeal()) * 0.5f, GetSpellInfo()); @@ -5849,7 +5850,7 @@ void AuraEffect::HandlePeriodicManaLeechAuraTick(Unit* target, Unit* caster) con float gainMultiplier = GetSpellEffectInfo()->CalcValueMultiplier(caster); - SpellPeriodicAuraLogInfo pInfo(this, drainedAmount, 0, 0, 0, gainMultiplier, false); + SpellPeriodicAuraLogInfo pInfo(this, drainedAmount, drainAmount, 0, 0, 0, gainMultiplier, false); int32 gainAmount = int32(drainedAmount * gainMultiplier); int32 gainedAmount = 0; @@ -5903,7 +5904,7 @@ void AuraEffect::HandleObsModPowerAuraTick(Unit* target, Unit* caster) const TC_LOG_DEBUG("spells.periodic", "PeriodicTick: %s energize %s for %u dmg inflicted by %u", GetCasterGUID().ToString().c_str(), target->GetGUID().ToString().c_str(), amount, GetId()); - SpellPeriodicAuraLogInfo pInfo(this, amount, 0, 0, 0, 0.0f, false); + SpellPeriodicAuraLogInfo pInfo(this, amount, amount, 0, 0, 0, 0.0f, false); int32 gain = target->ModifyPower(powerType, amount); if (caster) @@ -5931,7 +5932,7 @@ void AuraEffect::HandlePeriodicEnergizeAuraTick(Unit* target, Unit* caster) cons // ignore negative values (can be result apply spellmods to aura damage int32 amount = std::max(m_amount, 0); - SpellPeriodicAuraLogInfo pInfo(this, amount, 0, 0, 0, 0.0f, false); + SpellPeriodicAuraLogInfo pInfo(this, amount, amount, 0, 0, 0, 0.0f, false); TC_LOG_DEBUG("spells.periodic", "PeriodicTick: %s energize %s for %u dmg inflicted by %u", GetCasterGUID().ToString().c_str(), target->GetGUID().ToString().c_str(), amount, GetId()); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index b6f009b971e..6cfb2764f08 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -410,7 +410,8 @@ void Spell::EffectEnvironmentalDMG(SpellEffIndex /*effIndex*/) m_caster->CalcAbsorbResist(damageInfo); SpellNonMeleeDamage log(m_caster, unitTarget, m_spellInfo->Id, m_SpellVisual, m_spellInfo->GetSchoolMask(), m_castId); - log.damage = damage; + log.damage = damageInfo.GetDamage(); + log.originalDamage = damage; log.absorb = damageInfo.GetAbsorb(); log.resist = damageInfo.GetResist(); diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h index 50720cb53a6..690edb8f508 100644 --- a/src/server/game/Spells/SpellMgr.h +++ b/src/server/game/Spells/SpellMgr.h @@ -561,7 +561,7 @@ bool IsWeaponSkill(uint32 skill); inline bool IsProfessionSkill(uint32 skill) { - return IsPrimaryProfessionSkill(skill) || skill == SKILL_FISHING || skill == SKILL_COOKING || skill == SKILL_FIRST_AID; + return IsPrimaryProfessionSkill(skill) || skill == SKILL_FISHING || skill == SKILL_COOKING; } inline bool IsProfessionOrRidingSkill(uint32 skill) diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h index fdd3667a3a6..c7009028e9c 100644 --- a/src/server/shared/Packets/ByteBuffer.h +++ b/src/server/shared/Packets/ByteBuffer.h @@ -123,9 +123,10 @@ class TC_SHARED_API ByteBuffer _storage.clear(); } - template void append(T value) + template + void append(T value) { - static_assert(std::is_fundamental::value, "append(compound)"); + static_assert(std::is_trivially_copyable::value, "append(T) must be used with trivially copyable types"); EndianConvert(value); append((uint8 *)&value, sizeof(value)); } @@ -210,7 +211,7 @@ class TC_SHARED_API ByteBuffer template void put(std::size_t pos, T value) { - static_assert(std::is_fundamental::value, "append(compound)"); + static_assert(std::is_trivially_copyable::value, "put(size_t, T) must be used with trivially copyable types"); EndianConvert(value); put(pos, (uint8 *)&value, sizeof(value)); } @@ -435,7 +436,8 @@ class TC_SHARED_API ByteBuffer _rpos += skip; } - template T read() + template + T read() { ResetBitPos(); T r = read(_rpos); @@ -443,7 +445,8 @@ class TC_SHARED_API ByteBuffer return r; } - template T read(size_t pos) const + template + T read(size_t pos) const { if (pos + sizeof(T) > size()) throw ByteBufferPositionException(pos, sizeof(T), size()); @@ -452,6 +455,13 @@ class TC_SHARED_API ByteBuffer return val; } + template + void read(T* dest, size_t count) + { + static_assert(std::is_trivially_copyable::value, "read(T*, size_t) must be used with trivially copyable types"); + return read(reinterpret_cast(dest), count * sizeof(T)); + } + void read(uint8 *dest, size_t len) { if (_rpos + len > size()) @@ -540,7 +550,8 @@ class TC_SHARED_API ByteBuffer return append((const uint8 *)src, cnt); } - template void append(const T *src, size_t cnt) + template + void append(const T *src, size_t cnt) { return append((const uint8 *)src, cnt * sizeof(T)); } -- cgit v1.2.3 From b82cb8678db9830d55a975943b0e19905b9ef3f9 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 25 Nov 2018 11:05:09 +0100 Subject: Core/Taxi: Fixed building taxi masks --- src/server/game/DataStores/DB2Stores.cpp | 2 +- src/server/game/Entities/Player/PlayerTaxi.h | 4 ++-- src/server/game/Globals/ObjectMgr.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src/server/game/Entities/Player') diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index 4ace4f67aca..03e2e872c65 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -1218,7 +1218,7 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) continue; // valid taxi network node - uint8 field = (uint8)((node->ID - 1) / 8); + uint32 field = uint32((node->ID - 1) / 8); uint32 submask = 1 << ((node->ID - 1) % 8); sTaxiNodesMask[field] |= submask; diff --git a/src/server/game/Entities/Player/PlayerTaxi.h b/src/server/game/Entities/Player/PlayerTaxi.h index 7a98e01baa1..9da960883a6 100644 --- a/src/server/game/Entities/Player/PlayerTaxi.h +++ b/src/server/game/Entities/Player/PlayerTaxi.h @@ -44,13 +44,13 @@ class TC_GAME_API PlayerTaxi bool IsTaximaskNodeKnown(uint32 nodeidx) const { - uint8 field = uint8((nodeidx - 1) / 8); + uint32 field = uint32((nodeidx - 1) / 8); uint32 submask = 1 << ((nodeidx-1) % 8); return (m_taximask[field] & submask) == submask; } bool SetTaximaskNode(uint32 nodeidx) { - uint8 field = uint8((nodeidx - 1) / 8); + uint32 field = uint32((nodeidx - 1) / 8); uint32 submask = 1 << ((nodeidx- 1) % 8); if ((m_taximask[field] & submask) != submask) { diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 4b2d0ab6add..a9bbf7bbade 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -6171,7 +6171,7 @@ uint32 ObjectMgr::GetNearestTaxiNode(float x, float y, float z, uint32 mapid, ui if (!node || node->ContinentID != mapid || !(node->Flags & requireFlag)) continue; - uint8 field = (uint8)((node->ID - 1) / 8); + uint32 field = uint32((node->ID - 1) / 8); uint32 submask = 1 << ((node->ID - 1) % 8); // skip not taxi network nodes -- cgit v1.2.3 From 947771e6bdbeaa8788c373e0659cd8ca95cd96f2 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 25 Nov 2018 14:28:44 +0100 Subject: Core/Taxi: Filter out unreachable nodes from taxi nodes packet --- src/server/game/Entities/Player/PlayerTaxi.cpp | 8 ++-- src/server/game/Entities/Taxi/TaxiPathGraph.cpp | 64 ++++++++++++++++++------- src/server/game/Entities/Taxi/TaxiPathGraph.h | 8 +++- src/server/game/Handlers/TaxiHandler.cpp | 10 ++++ src/server/game/Server/Packets/TaxiPackets.cpp | 8 ++-- src/server/game/Server/Packets/TaxiPackets.h | 4 +- 6 files changed, 74 insertions(+), 28 deletions(-) (limited to 'src/server/game/Entities/Player') diff --git a/src/server/game/Entities/Player/PlayerTaxi.cpp b/src/server/game/Entities/Player/PlayerTaxi.cpp index 7a7f8d8533c..68d34e97c33 100644 --- a/src/server/game/Entities/Player/PlayerTaxi.cpp +++ b/src/server/game/Entities/Player/PlayerTaxi.cpp @@ -111,13 +111,13 @@ void PlayerTaxi::AppendTaximaskTo(WorldPackets::Taxi::ShowTaxiNodes& data, bool { if (all) { - data.CanLandNodes = &sTaxiNodesMask; // all existed nodes - data.CanUseNodes = &sTaxiNodesMask; + data.CanLandNodes = sTaxiNodesMask; // all existed nodes + data.CanUseNodes = sTaxiNodesMask; } else { - data.CanLandNodes = &m_taximask; // known nodes - data.CanUseNodes = &m_taximask; + data.CanLandNodes = m_taximask; // known nodes + data.CanUseNodes = m_taximask; } } diff --git a/src/server/game/Entities/Taxi/TaxiPathGraph.cpp b/src/server/game/Entities/Taxi/TaxiPathGraph.cpp index b60c1780fd3..2614ad0520c 100644 --- a/src/server/game/Entities/Taxi/TaxiPathGraph.cpp +++ b/src/server/game/Entities/Taxi/TaxiPathGraph.cpp @@ -21,6 +21,7 @@ #include "DB2Stores.h" #include "Config.h" #include "Util.h" +#include #include #include @@ -32,7 +33,7 @@ TaxiPathGraph& TaxiPathGraph::Instance() void TaxiPathGraph::Initialize() { - if (GetVertexCount() > 0) + if (boost::num_vertices(m_graph) > 0) return; std::vector> edges; @@ -47,7 +48,7 @@ void TaxiPathGraph::Initialize() } // create graph - m_graph = Graph(GetVertexCount()); + m_graph = Graph(m_nodesByVertex.size()); WeightMap weightmap = boost::get(boost::edge_weight, m_graph); for (std::size_t j = 0; j < edges.size(); ++j) @@ -59,21 +60,16 @@ void TaxiPathGraph::Initialize() uint32 TaxiPathGraph::GetNodeIDFromVertexID(vertex_descriptor vertexID) { - if (vertexID < m_vertices.size()) - return m_vertices[vertexID]->ID; + if (vertexID < m_nodesByVertex.size()) + return m_nodesByVertex[vertexID]->ID; return std::numeric_limits::max(); } TaxiPathGraph::vertex_descriptor TaxiPathGraph::GetVertexIDFromNodeID(TaxiNodesEntry const* node) { - return node->CharacterBitNumber; -} - -std::size_t TaxiPathGraph::GetVertexCount() -{ - //So we can use this function for readability, we define either max defined vertices or already loaded in graph count - return std::max(boost::num_vertices(m_graph), m_vertices.size()); + auto itr = m_verticesByNode.find(node->ID); + return itr != m_verticesByNode.end() ? itr->second : std::numeric_limits::max(); } void GetTaxiMapPosition(DBCPosition3D const& position, int32 mapId, DBCPosition2D* uiMapPosition, int32* uiMapId) @@ -181,14 +177,50 @@ std::size_t TaxiPathGraph::GetCompleteNodeRoute(TaxiNodesEntry const* from, Taxi return shortestPath.size(); } +template +struct DiscoverVertexVisitor : public boost::base_visitor> +{ + using event_filter = boost::on_discover_vertex; + + DiscoverVertexVisitor(T&& func) : _func(std::forward(func)) { } + + template + void operator()(Vertex v, Graph& /*g*/) + { + _func(v); + } + +private: + T _func; +}; + +template +inline auto make_discover_vertex_dfs_visitor(T&& t) +{ + return boost::make_dfs_visitor(DiscoverVertexVisitor(std::forward(t))); +} + +void TaxiPathGraph::GetReachableNodesMask(TaxiNodesEntry const* from, TaxiMask* mask) +{ + boost::vector_property_map color(boost::num_vertices(m_graph)); + std::fill(color.storage_begin(), color.storage_end(), boost::white_color); + boost::depth_first_visit(m_graph, GetVertexIDFromNodeID(from), make_discover_vertex_dfs_visitor([this, mask](vertex_descriptor vertex) + { + if (TaxiNodesEntry const* taxiNode = sTaxiNodesStore.LookupEntry(GetNodeIDFromVertexID(vertex))) + (*mask)[(taxiNode->ID - 1) / 8] |= 1 << ((taxiNode->ID - 1) % 8); + }), color); +} + TaxiPathGraph::vertex_descriptor TaxiPathGraph::CreateVertexFromFromNodeInfoIfNeeded(TaxiNodesEntry const* node) { - //Check if we need a new one or if it may be already created - if (m_vertices.size() <= node->CharacterBitNumber) - m_vertices.resize(node->CharacterBitNumber + 1); + auto itr = m_verticesByNode.find(node->ID); + if (itr == m_verticesByNode.end()) + { + itr = m_verticesByNode.emplace(node->ID, m_nodesByVertex.size()).first; + m_nodesByVertex.push_back(node); + } - m_vertices[node->CharacterBitNumber] = node; - return node->CharacterBitNumber; + return itr->second; } uint32 TaxiPathGraph::EdgeCost::EvaluateDistance(Player const* player) const diff --git a/src/server/game/Entities/Taxi/TaxiPathGraph.h b/src/server/game/Entities/Taxi/TaxiPathGraph.h index 5331f12ba49..4f6508e2cfc 100644 --- a/src/server/game/Entities/Taxi/TaxiPathGraph.h +++ b/src/server/game/Entities/Taxi/TaxiPathGraph.h @@ -20,7 +20,10 @@ #include "Position.h" #include "Define.h" +#include "DBCEnums.h" #include +#include +#include class Player; struct TaxiNodesEntry; @@ -32,6 +35,7 @@ public: void Initialize(); std::size_t GetCompleteNodeRoute(TaxiNodesEntry const* from, TaxiNodesEntry const* to, Player const* player, std::vector& shortestPath); + void GetReachableNodesMask(TaxiNodesEntry const* from, TaxiMask* mask); private: struct EdgeCost @@ -53,10 +57,10 @@ private: vertex_descriptor GetVertexIDFromNodeID(TaxiNodesEntry const* node); uint32 GetNodeIDFromVertexID(vertex_descriptor vertexID); vertex_descriptor CreateVertexFromFromNodeInfoIfNeeded(TaxiNodesEntry const* node); - std::size_t GetVertexCount(); Graph m_graph; - std::vector m_vertices; + std::vector m_nodesByVertex; + std::unordered_map m_verticesByNode; TaxiPathGraph(TaxiPathGraph const&) = delete; TaxiPathGraph& operator=(TaxiPathGraph const&) = delete; diff --git a/src/server/game/Handlers/TaxiHandler.cpp b/src/server/game/Handlers/TaxiHandler.cpp index 5b08ed6bdb2..dbefda3cd11 100644 --- a/src/server/game/Handlers/TaxiHandler.cpp +++ b/src/server/game/Handlers/TaxiHandler.cpp @@ -107,6 +107,16 @@ void WorldSession::SendTaxiMenu(Creature* unit) GetPlayer()->m_taxi.AppendTaximaskTo(data, lastTaxiCheaterState); + TaxiMask reachableNodes; + std::fill(reachableNodes.begin(), reachableNodes.end(), 0); + sTaxiPathGraph.GetReachableNodesMask(sTaxiNodesStore.LookupEntry(curloc), &reachableNodes); + + for (std::size_t i = 0; i < TaxiMaskSize; ++i) + { + data.CanLandNodes[i] &= reachableNodes[i]; + data.CanUseNodes[i] &= reachableNodes[i]; + } + SendPacket(data.Write()); GetPlayer()->SetTaxiCheater(lastTaxiCheaterState); diff --git a/src/server/game/Server/Packets/TaxiPackets.cpp b/src/server/game/Server/Packets/TaxiPackets.cpp index 9e8e552f363..a39e37425f7 100644 --- a/src/server/game/Server/Packets/TaxiPackets.cpp +++ b/src/server/game/Server/Packets/TaxiPackets.cpp @@ -36,8 +36,8 @@ WorldPacket const* WorldPackets::Taxi::ShowTaxiNodes::Write() _worldPacket.WriteBit(WindowInfo.is_initialized()); _worldPacket.FlushBits(); - _worldPacket << uint32(CanLandNodes->size()); - _worldPacket << uint32(CanUseNodes->size()); + _worldPacket << uint32(CanLandNodes.size()); + _worldPacket << uint32(CanUseNodes.size()); if (WindowInfo.is_initialized()) { @@ -45,8 +45,8 @@ WorldPacket const* WorldPackets::Taxi::ShowTaxiNodes::Write() _worldPacket << uint32(WindowInfo->CurrentNode); } - _worldPacket.append(CanLandNodes->data(), CanLandNodes->size()); - _worldPacket.append(CanUseNodes->data(), CanUseNodes->size()); + _worldPacket.append(CanLandNodes.data(), CanLandNodes.size()); + _worldPacket.append(CanUseNodes.data(), CanUseNodes.size()); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/TaxiPackets.h b/src/server/game/Server/Packets/TaxiPackets.h index 9e10f7bd442..dbf730a8bd9 100644 --- a/src/server/game/Server/Packets/TaxiPackets.h +++ b/src/server/game/Server/Packets/TaxiPackets.h @@ -62,8 +62,8 @@ namespace WorldPackets WorldPacket const* Write() override; Optional WindowInfo; - TaxiMask const* CanLandNodes = nullptr; // Nodes known by player - TaxiMask const* CanUseNodes = nullptr; // Nodes available for use - this can temporarily disable a known node + TaxiMask CanLandNodes; // Nodes known by player + TaxiMask CanUseNodes; // Nodes available for use - this can temporarily disable a known node }; class EnableTaxiNode final : public ClientPacket -- cgit v1.2.3 From 1b67a2626b77cf4bf04006cfcb09fdf46e6436fc Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 2 Dec 2018 17:39:41 +0100 Subject: Core/Players: Update profession rank handling with new split skill values for each expansion --- sql/base/characters_database.sql | 3 +- .../characters/master/2018_12_02_00_characters.sql | 135 ++++++++++++++++++++ sql/updates/world/master/2018_12_02_00_world.sql | 8 ++ src/server/game/DataStores/DB2Stores.cpp | 9 ++ src/server/game/DataStores/DB2Stores.h | 1 + src/server/game/Entities/Player/Player.cpp | 141 ++++++++++++--------- src/server/game/Entities/Player/Player.h | 3 +- src/server/game/Server/Packets/SystemPackets.cpp | 4 +- src/server/game/Server/Packets/SystemPackets.h | 4 +- src/server/game/Spells/SpellEffects.cpp | 4 +- 10 files changed, 240 insertions(+), 72 deletions(-) create mode 100644 sql/updates/characters/master/2018_12_02_00_characters.sql create mode 100644 sql/updates/world/master/2018_12_02_00_world.sql (limited to 'src/server/game/Entities/Player') diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql index 17bf37bc811..248f489fc5a 100644 --- a/sql/base/characters_database.sql +++ b/sql/base/characters_database.sql @@ -3570,7 +3570,8 @@ INSERT INTO `updates` VALUES ('2018_07_28_00_characters.sql','31F66AE7831251A8915625EC7F10FA138AB8B654','RELEASED','2018-07-28 18:30:19',0), ('2018_07_31_00_characters.sql','7DA8D4A4534520B23E6F5BBD5B8EE205B799C798','RELEASED','2018-07-31 20:54:39',0), ('2018_09_18_00_characters.sql','7FE9641C93ED762597C08F1E9B6649C9EC2F0E47','RELEASED','2018-09-18 23:34:29',0), -('2018_10_10_00_characters.sql','C80B936AAD94C58A0F33382CED08CFB4E0B6AC34','RELEASED','2018-10-10 22:05:28',0); +('2018_10_10_00_characters.sql','C80B936AAD94C58A0F33382CED08CFB4E0B6AC34','RELEASED','2018-10-10 22:05:28',0), +('2018_12_02_00_characters.sql','DBBA0C06985CE8AC4E6E7E94BD6B2673E9ADFAE2','RELEASED','2018-12-02 17:32:31',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/characters/master/2018_12_02_00_characters.sql b/sql/updates/characters/master/2018_12_02_00_characters.sql new file mode 100644 index 00000000000..6c95b00778d --- /dev/null +++ b/sql/updates/characters/master/2018_12_02_00_characters.sql @@ -0,0 +1,135 @@ +-- +-- Table structure for table `profession_skill_migration_data` +-- +DROP TABLE IF EXISTS `profession_skill_migration_data`; +CREATE TABLE `profession_skill_migration_data` ( + `SkillID` int(10) unsigned, + `ParentSkillLineID` int(10) unsigned, + `MaxValue` int(10) unsigned, + `NewMaxValue` int(10) unsigned, + `SpellID_A` int(10) unsigned, + `SpellID_H` int(10) unsigned, + PRIMARY KEY (`SkillID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- +-- Dumping data for table `profession_skill_migration_data` +-- +INSERT INTO `profession_skill_migration_data` VALUES +(2437,164,900,150,264448,265803), +(2454,164,800,100,264446,264446), +(2472,164,700,100,264444,264444), +(2473,164,600,75,264442,264442), +(2474,164,525,75,264440,264440), +(2475,164,450,75,264438,264438), +(2476,164,375,75,264436,264436), +(2477,164,300,300,264434,264434), +(2478,171,900,150,264255,265787), +(2479,171,800,100,264250,264250), +(2480,171,700,100,264247,264247), +(2481,171,600,75,264245,264245), +(2482,171,525,75,264243,264243), +(2483,171,450,75,264220,264220), +(2484,171,375,75,264213,264213), +(2485,171,300,300,264211,264211), +(2486,333,900,150,264473,265805), +(2487,333,800,100,264471,264471), +(2488,333,700,100,264469,264469), +(2489,333,600,75,264467,264467), +(2491,333,525,75,264464,264464), +(2492,333,450,75,264462,264462), +(2493,333,375,75,264460,264460), +(2494,333,300,300,264455,264455), +(2499,202,900,150,264492,265807), +(2500,202,800,100,264490,264490), +(2501,202,700,100,264487,264487), +(2502,202,600,75,264485,264485), +(2503,202,525,75,264483,264483), +(2504,202,450,75,264481,264481), +(2505,202,375,75,264479,264479), +(2506,202,300,300,264475,264475), +(2507,773,900,150,264508,265809), +(2508,773,800,100,264506,264506), +(2509,773,700,100,264504,264504), +(2510,773,600,75,264502,264502), +(2511,773,525,75,264500,264500), +(2512,773,450,75,264498,264498), +(2513,773,375,75,264496,264496), +(2514,773,300,300,264494,264494), +(2517,755,900,150,264548,265811), +(2518,755,800,100,264546,264546), +(2519,755,700,100,264544,264544), +(2520,755,600,75,264542,264542), +(2521,755,525,75,264539,264539), +(2522,755,450,75,264537,264537), +(2523,755,375,75,264534,264534), +(2524,755,300,300,264532,264532), +(2525,165,900,150,264592,265813), +(2526,165,800,100,264590,264590), +(2527,165,700,100,264588,264588), +(2528,165,600,75,264585,264585), +(2529,165,525,75,264583,264583), +(2530,165,450,75,264581,264581), +(2531,165,375,75,264579,264579), +(2532,165,300,300,264577,264577), +(2533,197,900,150,264630,265815), +(2534,197,800,100,264628,264628), +(2535,197,700,100,264626,264626), +(2536,197,600,75,264624,264624), +(2537,197,525,75,264622,264622), +(2538,197,450,75,264620,264620), +(2539,197,375,75,264618,264618), +(2540,197,300,300,264616,264616), +(2541,185,825,150,264646,265817), +(2542,185,750,100,264644,264644), +(2543,185,700,100,264642,264642), +(2544,185,600,75,264640,264640), +(2545,185,525,75,264638,264638), +(2546,185,450,75,264636,264636), +(2547,185,375,75,264634,264634), +(2548,185,300,300,264632,264632), +(2549,182,900,150,265831,265835), +(2550,182,800,100,265834,265834), +(2551,182,700,100,265829,265829), +(2552,182,600,75,265827,265827), +(2553,182,525,75,265825,265825), +(2554,182,450,75,265823,265823), +(2555,182,375,75,265821,265821), +(2556,182,300,300,265819,265819), +(2557,393,900,150,265869,265871), +(2558,393,800,100,265867,265867), +(2559,393,700,100,265865,265865), +(2560,393,600,75,265863,265863), +(2561,393,525,75,265861,265861), +(2562,393,450,75,265859,265859), +(2563,393,375,75,265857,265857), +(2564,393,300,300,265855,265855), +(2565,186,900,150,265851,265853), +(2566,186,800,100,265849,265849), +(2567,186,700,100,265847,265847), +(2568,186,600,75,265845,265845), +(2569,186,525,75,265843,265843), +(2570,186,450,75,265841,265841), +(2571,186,375,75,265839,265839), +(2572,186,300,300,265837,265837), +(2585,356,825,150,271675,271677), +(2586,356,750,100,271672,271672), +(2587,356,700,100,271664,271664), +(2588,356,600,75,271662,271662), +(2589,356,525,75,271660,271660), +(2590,356,450,75,271658,271658), +(2591,356,375,75,271656,271656), +(2592,356,300,300,271616,271616); + +INSERT IGNORE INTO `character_spell` +SELECT cs.`guid`, IF(c.`race` IN (1,3,4,7,11,22,25,29,30,34), psmd.`SpellID_A`, psmd.`SpellID_H`), 1, 0 +FROM `profession_skill_migration_data` psmd +INNER JOIN `character_skills` cs ON psmd.`ParentSkillLineID` = cs.`skill` AND psmd.`MaxValue` <= cs.`max` +INNER JOIN `characters` c ON cs.`guid` = c.`guid`; + +INSERT IGNORE INTO `character_skills` +SELECT cs.`guid`, psmd.`SkillID`, CASE WHEN psmd.`MaxValue` < cs.`value` THEN psmd.`NewMaxValue` WHEN psmd.`MaxValue` - cs.`value` < psmd.`NewMaxValue` THEN psmd.`NewMaxValue` + cs.`value` - psmd.`MaxValue` ELSE 1 END, psmd.`NewMaxValue` +FROM `profession_skill_migration_data` psmd +INNER JOIN `character_skills` cs ON psmd.`ParentSkillLineID` = cs.`skill` AND psmd.`MaxValue` <= cs.`max`; + +DROP TABLE IF EXISTS `profession_skill_migration_data`; diff --git a/sql/updates/world/master/2018_12_02_00_world.sql b/sql/updates/world/master/2018_12_02_00_world.sql new file mode 100644 index 00000000000..9228a56d2b8 --- /dev/null +++ b/sql/updates/world/master/2018_12_02_00_world.sql @@ -0,0 +1,8 @@ +DELETE FROM `skill_tiers` WHERE `ID` IN (333,335,336,338); +INSERT INTO `skill_tiers` (`ID`,`Value1`,`Value2`,`Value3`,`Value4`,`Value5`,`Value6`,`Value7`,`Value8`,`Value9`,`Value10`,`Value11`,`Value12`,`Value13`,`Value14`,`Value15`,`Value16`) VALUES +(333,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), +(335,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), +(336,300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), +(338,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); + +UPDATE `skill_tiers` SET `Value10`=800,`Value11`=950 WHERE `ID`=224; diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index 03e2e872c65..a2639077eb4 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -392,6 +392,7 @@ namespace std::unordered_map> _rewardPackCurrencyTypes; std::unordered_map> _rewardPackItems; RulesetItemUpgradeContainer _rulesetItemUpgrade; + std::unordered_map> _skillLineAbilitiesBySkillupSkill; SkillRaceClassInfoContainer _skillRaceClassInfoBySkill; SpecializationSpellsContainer _specializationSpellsBySpec; std::unordered_set _spellFamilyNames; @@ -1023,6 +1024,9 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) for (RulesetItemUpgradeEntry const* rulesetItemUpgrade : sRulesetItemUpgradeStore) _rulesetItemUpgrade[rulesetItemUpgrade->ItemID] = rulesetItemUpgrade->ItemUpgradeID; + for (SkillLineAbilityEntry const* skillLineAbility : sSkillLineAbilityStore) + _skillLineAbilitiesBySkillupSkill[skillLineAbility->SkillupSkillLineID ? skillLineAbility->SkillupSkillLineID : skillLineAbility->SkillLine].push_back(skillLineAbility); + for (SkillRaceClassInfoEntry const* entry : sSkillRaceClassInfoStore) if (sSkillLineStore.LookupEntry(entry->SkillID)) _skillRaceClassInfoBySkill.insert(SkillRaceClassInfoContainer::value_type(entry->SkillID, entry)); @@ -2278,6 +2282,11 @@ uint32 DB2Manager::GetRulesetItemUpgrade(uint32 itemId) const return 0; } +std::vector const* DB2Manager::GetSkillLineAbilitiesBySkill(uint32 skillId) const +{ + return Trinity::Containers::MapGetValuePtr(_skillLineAbilitiesBySkillupSkill, skillId); +} + SkillRaceClassInfoEntry const* DB2Manager::GetSkillRaceClassInfo(uint32 skill, uint8 race, uint8 class_) { auto bounds = _skillRaceClassInfoBySkill.equal_range(skill); diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h index 06f8635c908..389a19e952e 100644 --- a/src/server/game/DataStores/DB2Stores.h +++ b/src/server/game/DataStores/DB2Stores.h @@ -323,6 +323,7 @@ public: std::vector const* GetRewardPackCurrencyTypesByRewardID(uint32 rewardPackID) const; std::vector const* GetRewardPackItemsByRewardID(uint32 rewardPackID) const; uint32 GetRulesetItemUpgrade(uint32 itemId) const; + std::vector const* GetSkillLineAbilitiesBySkill(uint32 skillId) const; SkillRaceClassInfoEntry const* GetSkillRaceClassInfo(uint32 skill, uint8 race, uint8 class_); std::vector const* GetSpecializationSpells(uint32 specId) const; static bool IsValidSpellFamiliyName(SpellFamilyNames family); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 51db53c9c61..b3e8bd33097 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -5172,43 +5172,6 @@ void Player::SetRegularAttackTime() } } -//skill+step, checking for max value -bool Player::UpdateSkill(uint32 skill_id, uint32 step) -{ - if (!skill_id) - return false; - - SkillStatusMap::iterator itr = mSkillStatus.find(skill_id); - if (itr == mSkillStatus.end() || itr->second.uState == SKILL_DELETED) - return false; - - uint16 field = itr->second.pos / 2; - uint8 offset = itr->second.pos & 1; // itr->second.pos % 2 - - uint16 value = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset); - uint16 max = GetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset); - - if (!max || !value || value >= max) - return false; - - if (value < max) - { - uint32 new_value = value + step; - if (new_value > max) - new_value = max; - - SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, new_value); - if (itr->second.uState != SKILL_NEW) - itr->second.uState = SKILL_CHANGED; - - UpdateSkillEnchantments(skill_id, value, new_value); - UpdateCriteria(CRITERIA_TYPE_REACH_SKILL_LEVEL, skill_id); - return true; - } - - return false; -} - inline int SkillGainChance(uint32 SkillValue, uint32 GrayLevel, uint32 GreenLevel, uint32 YellowLevel) { if (SkillValue >= GrayLevel) @@ -5229,21 +5192,21 @@ bool Player::UpdateCraftSkill(uint32 spellid) for (SkillLineAbilityMap::const_iterator _spell_idx = bounds.first; _spell_idx != bounds.second; ++_spell_idx) { - if (_spell_idx->second->SkillLine) + if (_spell_idx->second->SkillupSkillLineID) { - uint32 SkillValue = GetPureSkillValue(_spell_idx->second->SkillLine); + uint32 SkillValue = GetPureSkillValue(_spell_idx->second->SkillupSkillLineID); // Alchemy Discoveries here SpellInfo const* spellEntry = sSpellMgr->GetSpellInfo(spellid); if (spellEntry && spellEntry->Mechanic == MECHANIC_DISCOVERY) { - if (uint32 discoveredSpell = GetSkillDiscoverySpell(_spell_idx->second->SkillLine, spellid, this)) + if (uint32 discoveredSpell = GetSkillDiscoverySpell(_spell_idx->second->SkillupSkillLineID, spellid, this)) LearnSpell(discoveredSpell, false); } uint32 craft_skill_gain = _spell_idx->second->NumSkillUps * sWorld->getIntConfig(CONFIG_SKILL_GAIN_CRAFTING); - return UpdateSkillPro(_spell_idx->second->SkillLine, SkillGainChance(SkillValue, + return UpdateSkillPro(_spell_idx->second->SkillupSkillLineID, SkillGainChance(SkillValue, _spell_idx->second->TrivialSkillLineRankHigh, (_spell_idx->second->TrivialSkillLineRankHigh + _spell_idx->second->TrivialSkillLineRankLow)/2, _spell_idx->second->TrivialSkillLineRankLow), @@ -5321,8 +5284,7 @@ bool Player::UpdateSkillPro(uint16 skillId, int32 chance, uint32 step) // levels sync. with spell requirement for skill levels to learn // bonus abilities in sSkillLineAbilityStore // Used only to avoid scan DBC at each skill grow - static uint32 bonusSkillLevels[] = { 75, 150, 225, 300, 375, 450, 525 }; - static const size_t bonusSkillLevelsSize = sizeof(bonusSkillLevels) / sizeof(uint32); + uint32 const bonusSkillLevels[] = { 75, 150, 225, 300, 375, 450, 525, 600, 700, 850 }; TC_LOG_DEBUG("entities.player.skills", "Player::UpdateSkillPro: Player '%s' (%s), SkillID: %u, Chance: %3.1f%%)", GetName().c_str(), GetGUID().ToString().c_str(), skillId, chance / 10.0f); @@ -5364,9 +5326,8 @@ bool Player::UpdateSkillPro(uint16 skillId, int32 chance, uint32 step) if (itr->second.uState != SKILL_NEW) itr->second.uState = SKILL_CHANGED; - for (size_t i = 0; i < bonusSkillLevelsSize; ++i) + for (uint32 bsl : bonusSkillLevels) { - uint32 bsl = bonusSkillLevels[i]; if (value < bsl && new_value >= bsl) { LearnSkillRewardedSpells(skillId, new_value); @@ -5525,10 +5486,13 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) mSkillStatus.erase(itr); // remove all spells that related to this skill - for (uint32 j = 0; j < sSkillLineAbilityStore.GetNumRows(); ++j) - if (SkillLineAbilityEntry const* pAbility = sSkillLineAbilityStore.LookupEntry(j)) - if (pAbility->SkillLine == id) - RemoveSpell(sSpellMgr->GetFirstSpellInChain(pAbility->Spell)); + if (std::vector const* skillLineAbilities = sDB2Manager.GetSkillLineAbilitiesBySkill(id)) + for (SkillLineAbilityEntry const* skillLineAbility : *skillLineAbilities) + RemoveSpell(sSpellMgr->GetFirstSpellInChain(skillLineAbility->Spell)); + + for (SkillLineEntry const* childSkillLine : sSkillLineStore) + if (childSkillLine->ParentSkillLineID == id) + SetSkill(childSkillLine->ID, 0, 0, 0); // Clear profession lines if (GetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE) == id) @@ -5555,15 +5519,27 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) return; } - SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, id); - if (skillEntry->CategoryID == SKILL_CATEGORY_PROFESSION) + if (skillEntry->ParentSkillLineID && skillEntry->ParentTierIndex > 0) { - if (!GetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE)) - SetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE, id); - else if (!GetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE + 1)) - SetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE + 1, id); + if (SkillRaceClassInfoEntry const* rcEntry = sDB2Manager.GetSkillRaceClassInfo(skillEntry->ParentSkillLineID, getRace(), getClass())) + { + if (SkillTiersEntry const* tier = sObjectMgr->GetSkillTier(rcEntry->SkillTierID)) + { + uint16 skillval = GetPureSkillValue(skillEntry->ParentSkillLineID); + SetSkill(skillEntry->ParentSkillLineID, skillEntry->ParentTierIndex, std::max(skillval, 1), tier->Value[skillEntry->ParentTierIndex - 1]); + } + } + + if (skillEntry->CategoryID == SKILL_CATEGORY_PROFESSION) + { + int32 freeProfessionSlot = FindProfessionSlotFor(id); + if (freeProfessionSlot != -1) + SetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE + freeProfessionSlot, id); + } } + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_ID_OFFSET + field, offset, id); + SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_STEP_OFFSET + field, offset, step); SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_RANK_OFFSET + field, offset, newVal); SetUInt16Value(ACTIVE_PLAYER_FIELD_SKILL_LINEID + SKILL_MAX_RANK_OFFSET + field, offset, maxVal); @@ -24119,12 +24095,12 @@ void Player::LearnSkillRewardedSpells(uint32 skillId, uint32 skillValue) { uint64 raceMask = getRaceMask(); uint32 classMask = getClassMask(); - for (uint32 j = 0; j < sSkillLineAbilityStore.GetNumRows(); ++j) - { - SkillLineAbilityEntry const* ability = sSkillLineAbilityStore.LookupEntry(j); - if (!ability || ability->SkillLine != int32(skillId)) - continue; + std::vector const* skillLineAbilities = sDB2Manager.GetSkillLineAbilitiesBySkill(skillId); + if (!skillLineAbilities) + return; + for (SkillLineAbilityEntry const* ability : *skillLineAbilities) + { SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(ability->Spell); if (!spellInfo) continue; @@ -24159,6 +24135,42 @@ void Player::LearnSkillRewardedSpells(uint32 skillId, uint32 skillValue) } } +int32 Player::FindProfessionSlotFor(uint32 skillId) const +{ + SkillLineEntry const* skillEntry = sSkillLineStore.LookupEntry(skillId); + if (!skillEntry) + return -1; + + uint32 constexpr professionSlots = 2; + uint32 const* professionsBegin = &m_uint32Values[ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE]; + uint32 const* professionsEnd = professionsBegin + professionSlots; + + // both free, return first slot + if (std::none_of(professionsBegin, professionsEnd, [](uint32 slot) { return slot != 0; })) + return 0; + + // when any slot is filled we need to check both - one of them might be earlier step of the same profession + auto sameProfessionSlot = std::find_if(professionsBegin, professionsEnd, [&](uint32 slot) + { + if (SkillLineEntry const* slotProfession = sSkillLineStore.LookupEntry(slot)) + if (slotProfession->ParentSkillLineID == skillEntry->ParentSkillLineID) + return true; + return false; + }); + + if (sameProfessionSlot != professionsEnd) + { + if (sSkillLineStore.AssertEntry(*sameProfessionSlot)->ParentTierIndex < skillEntry->ParentTierIndex) + return std::distance(professionsBegin, sameProfessionSlot); + + return -1; + } + + // if there is no same profession, find any free slot + auto freeSlot = std::find(professionsBegin, professionsEnd, 0u); + return freeSlot != professionsEnd ? std::distance(professionsBegin, freeSlot) : -1; +} + void Player::SendAurasForTarget(Unit* target) const { if (!target || target->GetVisibleAuras().empty()) // speedup things @@ -25792,7 +25804,6 @@ void Player::_LoadSkills(PreparedQueryResult result) // SetPQuery(PLAYER_LOGIN_QUERY_LOADSKILLS, "SELECT skill, value, max FROM character_skills WHERE guid = '%u'", GUID_LOPART(m_guid)); uint32 count = 0; - uint8 professionCount = 0; std::unordered_map loadedSkillValues; if (result) { @@ -25859,8 +25870,12 @@ void Player::_LoadSkills(PreparedQueryResult result) { step = max / 75; - if (professionCount < 2) - SetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE + professionCount++, skill); + if (skillLine->ParentSkillLineID && skillLine->ParentTierIndex) + { + int32 professionSlot = FindProfessionSlotFor(skill); + if (professionSlot != -1) + SetUInt32Value(ACTIVE_PLAYER_FIELD_PROFESSION_SKILL_LINE + professionSlot, skill); + } } } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index e3092f0279c..d53dbf33db0 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1786,9 +1786,7 @@ class TC_GAME_API Player : public Unit, public GridObject static Difficulty CheckLoadedLegacyRaidDifficultyID(Difficulty difficulty); void SendRaidGroupOnlyMessage(RaidGroupReason reason, int32 delay) const; - bool UpdateSkill(uint32 skill_id, uint32 step); bool UpdateSkillPro(uint16 skillId, int32 chance, uint32 step); - bool UpdateCraftSkill(uint32 spellid); bool UpdateGatherSkill(uint32 SkillId, uint32 SkillValue, uint32 RedLevel, uint32 Multiplicator = 1); bool UpdateFishingSkill(); @@ -1928,6 +1926,7 @@ class TC_GAME_API Player : public Unit, public GridObject uint16 GetSkillStep(uint16 skill) const; // 0...6 bool HasSkill(uint32 skill) const; void LearnSkillRewardedSpells(uint32 skillId, uint32 skillValue); + int32 FindProfessionSlotFor(uint32 skillId) const; WorldLocation& GetTeleportDest() { return m_teleport_dest; } bool IsBeingTeleported() const { return mSemaphoreTeleport_Near || mSemaphoreTeleport_Far; } diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index 71dbce750e7..853e35fce5c 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -112,8 +112,8 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write() { _worldPacket.WriteBit(VoiceChatManagerSettings.Enabled); - _worldPacket << VoiceChatManagerSettings.Unused_801_1; - _worldPacket << VoiceChatManagerSettings.Unused_801_2; + _worldPacket << VoiceChatManagerSettings.BnetAccountGuid; + _worldPacket << VoiceChatManagerSettings.GuildGuid; } if (EuropaTicketSystemStatus) diff --git a/src/server/game/Server/Packets/SystemPackets.h b/src/server/game/Server/Packets/SystemPackets.h index 8fe1f515590..4d0812e7e67 100644 --- a/src/server/game/Server/Packets/SystemPackets.h +++ b/src/server/game/Server/Packets/SystemPackets.h @@ -83,8 +83,8 @@ namespace WorldPackets struct VoiceChatProxySettings { bool Enabled = false; - ObjectGuid Unused_801_1; - ObjectGuid Unused_801_2; + ObjectGuid BnetAccountGuid; + ObjectGuid GuildGuid; }; FeatureSystemStatus() : ServerPacket(SMSG_FEATURE_SYSTEM_STATUS, 48) { } diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 6cfb2764f08..4a1061b6425 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -2366,7 +2366,7 @@ void Spell::EffectLearnSkill(SpellEffIndex /*effIndex*/) if (unitTarget->GetTypeId() != TYPEID_PLAYER) return; - if (damage < 0) + if (damage < 1) return; uint32 skillid = effectInfo->MiscValue; @@ -2379,7 +2379,7 @@ void Spell::EffectLearnSkill(SpellEffIndex /*effIndex*/) return; uint16 skillval = unitTarget->ToPlayer()->GetPureSkillValue(skillid); - unitTarget->ToPlayer()->SetSkill(skillid, effectInfo->CalcValue(), std::max(skillval, 1), tier->Value[damage - 1]); + unitTarget->ToPlayer()->SetSkill(skillid, damage, std::max(skillval, 1), tier->Value[damage - 1]); } void Spell::EffectPlayMovie(SpellEffIndex /*effIndex*/) -- cgit v1.2.3 From 8e1d5d51433253dfb66f5a4355824d64e9a347a0 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 7 Dec 2018 19:09:10 +0100 Subject: Core/Spells: Updated gathering profession skills --- src/server/game/Entities/Player/Player.cpp | 24 ++++++++++++++ src/server/game/Miscellaneous/SharedDefines.h | 48 +++++++++++++++++++++++---- src/server/game/Spells/SpellEffects.cpp | 37 ++++++++++++++++++--- 3 files changed, 99 insertions(+), 10 deletions(-) (limited to 'src/server/game/Entities/Player') diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index b3e8bd33097..ce02cdad3ce 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -5227,15 +5227,39 @@ bool Player::UpdateGatherSkill(uint32 SkillId, uint32 SkillValue, uint32 RedLeve switch (SkillId) { case SKILL_HERBALISM: + case SKILL_HERBALISM_2: + case SKILL_OUTLAND_HERBALISM: + case SKILL_NORTHREND_HERBALISM: + case SKILL_CATACLYSM_HERBALISM: + case SKILL_PANDARIA_HERBALISM: + case SKILL_DRAENOR_HERBALISM: + case SKILL_LEGION_HERBALISM: + case SKILL_KUL_TIRAN_HERBALISM: case SKILL_JEWELCRAFTING: case SKILL_INSCRIPTION: return UpdateSkillPro(SkillId, SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator, gathering_skill_gain); case SKILL_SKINNING: + case SKILL_SKINNING_2: + case SKILL_OUTLAND_SKINNING: + case SKILL_NORTHREND_SKINNING: + case SKILL_CATACLYSM_SKINNING: + case SKILL_PANDARIA_SKINNING: + case SKILL_DRAENOR_SKINNING: + case SKILL_LEGION_SKINNING: + case SKILL_KUL_TIRAN_SKINNING: if (sWorld->getIntConfig(CONFIG_SKILL_CHANCE_SKINNING_STEPS) == 0) return UpdateSkillPro(SkillId, SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator, gathering_skill_gain); else return UpdateSkillPro(SkillId, (SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator) >> (SkillValue/sWorld->getIntConfig(CONFIG_SKILL_CHANCE_SKINNING_STEPS)), gathering_skill_gain); case SKILL_MINING: + case SKILL_MINING_2: + case SKILL_OUTLAND_MINING: + case SKILL_NORTHREND_MINING: + case SKILL_CATACLYSM_MINING: + case SKILL_PANDARIA_MINING: + case SKILL_DRAENOR_MINING: + case SKILL_LEGION_MINING: + case SKILL_KUL_TIRAN_MINING: if (sWorld->getIntConfig(CONFIG_SKILL_CHANCE_MINING_STEPS) == 0) return UpdateSkillPro(SkillId, SkillGainChance(SkillValue, RedLevel+100, RedLevel+50, RedLevel+25)*Multiplicator, gathering_skill_gain); else diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index bb4277aba10..a3ff3403e86 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -3881,7 +3881,7 @@ enum LockKeyType // LockType.dbc (6.0.2.18988) enum LockType { - LOCKTYPE_PICKLOCK = 1, + LOCKTYPE_LOCKPICKING = 1, LOCKTYPE_HERBALISM = 2, LOCKTYPE_MINING = 3, LOCKTYPE_DISARM_TRAP = 4, @@ -3897,14 +3897,34 @@ enum LockType LOCKTYPE_OPEN_ATTACKING = 14, LOCKTYPE_GAHZRIDIAN = 15, LOCKTYPE_BLASTING = 16, - LOCKTYPE_SLOW_OPEN = 17, - LOCKTYPE_SLOW_CLOSE = 18, + LOCKTYPE_PVP_OPEN = 17, + LOCKTYPE_PVP_CLOSE = 18, LOCKTYPE_FISHING = 19, LOCKTYPE_INSCRIPTION = 20, LOCKTYPE_OPEN_FROM_VEHICLE = 21, - LOCKTYPE_ARCHAELOGY = 22, + LOCKTYPE_ARCHAEOLOGY = 22, LOCKTYPE_PVP_OPEN_FAST = 23, - LOCKTYPE_LUMBER_MILL = 28 + LOCKTYPE_LUMBER_MILL = 28, + LOCKTYPE_SKINNING = 29, + LOCKTYPE_ANCIENT_MANA = 30, + LOCKTYPE_WARBOARD = 31, + LOCKTYPE_CLASSIC_HERBALISM = 32, + LOCKTYPE_OUTLAND_HERBALISM = 33, + LOCKTYPE_NORTHREND_HERBALISM = 34, + LOCKTYPE_CATACLYSM_HERBALISM = 35, + LOCKTYPE_PANDARIA_HERBALISM = 36, + LOCKTYPE_DRAENOR_HERBALISM = 37, + LOCKTYPE_LEGION_HERBALISM = 38, + LOCKTYPE_KUL_TIRAN_HERBALISM = 39, + LOCKTYPE_CLASSIC_MINING = 40, + LOCKTYPE_OUTLAND_MINING = 41, + LOCKTYPE_NORTHREND_MINING = 42, + LOCKTYPE_CATACLYSM_MINING = 43, + LOCKTYPE_PANDARIA_MINING = 44, + LOCKTYPE_DRAENOR_MINING = 45, + LOCKTYPE_LEGION_MINING = 46, + LOCKTYPE_KUL_TIRAN_MINING = 47, + LOCKTYPE_SKINNING_2 = 48 }; // this is important type for npcs! @@ -4560,8 +4580,24 @@ inline SkillType SkillByLockType(LockType locktype) case LOCKTYPE_MINING: return SKILL_MINING; case LOCKTYPE_FISHING: return SKILL_FISHING; case LOCKTYPE_INSCRIPTION: return SKILL_INSCRIPTION; - case LOCKTYPE_ARCHAELOGY: return SKILL_ARCHAEOLOGY; + case LOCKTYPE_ARCHAEOLOGY: return SKILL_ARCHAEOLOGY; case LOCKTYPE_LUMBER_MILL: return SKILL_LOGGING; + case LOCKTYPE_CLASSIC_HERBALISM: return SKILL_HERBALISM_2; + case LOCKTYPE_OUTLAND_HERBALISM: return SKILL_OUTLAND_HERBALISM; + case LOCKTYPE_NORTHREND_HERBALISM: return SKILL_NORTHREND_HERBALISM; + case LOCKTYPE_CATACLYSM_HERBALISM: return SKILL_CATACLYSM_HERBALISM; + case LOCKTYPE_PANDARIA_HERBALISM: return SKILL_PANDARIA_HERBALISM; + case LOCKTYPE_DRAENOR_HERBALISM: return SKILL_DRAENOR_HERBALISM; + case LOCKTYPE_LEGION_HERBALISM: return SKILL_LEGION_HERBALISM; + case LOCKTYPE_KUL_TIRAN_HERBALISM: return SKILL_KUL_TIRAN_HERBALISM; + case LOCKTYPE_CLASSIC_MINING: return SKILL_MINING_2; + case LOCKTYPE_OUTLAND_MINING: return SKILL_OUTLAND_MINING; + case LOCKTYPE_NORTHREND_MINING: return SKILL_NORTHREND_MINING; + case LOCKTYPE_CATACLYSM_MINING: return SKILL_CATACLYSM_MINING; + case LOCKTYPE_PANDARIA_MINING: return SKILL_PANDARIA_MINING; + case LOCKTYPE_DRAENOR_MINING: return SKILL_DRAENOR_MINING; + case LOCKTYPE_LEGION_MINING: return SKILL_LEGION_MINING; + case LOCKTYPE_KUL_TIRAN_MINING: return SKILL_KUL_TIRAN_MINING; default: break; } return SKILL_NONE; diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 4a1061b6425..34743342da6 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -4183,12 +4183,41 @@ void Spell::EffectSkinning(SpellEffIndex /*effIndex*/) creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE); creature->SetFlag(OBJECT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE); - int32 reqValue = targetLevel < 10 ? 0 : targetLevel < 20 ? (targetLevel-10)*10 : targetLevel*5; + if (skill == SKILL_SKINNING) + { + int32 reqValue; + if (targetLevel <= 10) + reqValue = 1; + else if (targetLevel < 20) + reqValue = (targetLevel - 10) * 10; + else if (targetLevel <= 73) + reqValue = targetLevel * 5; + else if (targetLevel < 80) + reqValue = targetLevel * 10 - 365; + else if (targetLevel <= 84) + reqValue = targetLevel * 5 + 35; + else if (targetLevel <= 87) + reqValue = targetLevel * 15 - 805; + else if (targetLevel <= 92) + reqValue = (targetLevel - 62) * 20; + else if (targetLevel <= 104) + reqValue = targetLevel * 5 + 175; + else if (targetLevel <= 107) + reqValue = targetLevel * 15 - 905; + else if (targetLevel <= 112) + reqValue = (targetLevel - 72) * 20; + else if (targetLevel <= 122) + reqValue = (targetLevel - 32) * 10; + else + reqValue = 900; - int32 skillValue = m_caster->ToPlayer()->GetPureSkillValue(skill); + // TODO: Specialize skillid for each expansion + // new db field? + // tied to one of existing expansion fields in creature_template? - // Double chances for elites - m_caster->ToPlayer()->UpdateGatherSkill(skill, skillValue, reqValue, creature->isElite() ? 2 : 1); + // Double chances for elites + m_caster->ToPlayer()->UpdateGatherSkill(skill, damage, reqValue, creature->isElite() ? 2 : 1); + } } void Spell::EffectCharge(SpellEffIndex /*effIndex*/) -- cgit v1.2.3