diff options
30 files changed, 211 insertions, 208 deletions
diff --git a/src/server/database/Database/Implementation/CharacterDatabase.cpp b/src/server/database/Database/Implementation/CharacterDatabase.cpp index a20984fe09d..729840647a8 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/database/Database/Implementation/CharacterDatabase.cpp @@ -211,7 +211,6 @@ void CharacterDatabaseConnection::DoPrepareStatements() PrepareStatement(CHAR_UPD_GUILD_BANK_TAB_INFO, "UPDATE guild_bank_tab SET TabName = ?, TabIcon = ? WHERE guildid = ? AND TabId = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_GUILD_BANK_MONEY, "UPDATE guild SET BankMoney = ? WHERE guildid = ?", CONNECTION_ASYNC); // 0: uint64, 1: uint32 // 0: uint8, 1: uint32, 2: uint8, 3: uint32 - PrepareStatement(CHAR_UPD_GUILD_BANK_EVENTLOG_TAB, "UPDATE guild_bank_eventlog SET TabId = ? WHERE guildid = ? AND TabId = ? AND LogGuid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_GUILD_RANK_BANK_MONEY, "UPDATE guild_rank SET BankMoneyPerDay = ? WHERE rid = ? AND guildid = ?", CONNECTION_ASYNC); // 0: uint32, 1: uint8, 2: uint32 PrepareStatement(CHAR_UPD_GUILD_BANK_TAB_TEXT, "UPDATE guild_bank_tab SET TabText = ? WHERE guildid = ? AND TabId = ?", CONNECTION_ASYNC); // 0: string, 1: uint32, 2: uint8 @@ -418,7 +417,6 @@ void CharacterDatabaseConnection::DoPrepareStatements() PrepareStatement(CHAR_SEL_CHAR_HOMEBIND, "SELECT mapId, zoneId, posX, posY, posZ FROM character_homebind WHERE guid = ?", CONNECTION_SYNCH); PrepareStatement(CHAR_SEL_CHAR_GUID_NAME_BY_ACC, "SELECT guid, name, online FROM characters WHERE account = ?", CONNECTION_SYNCH); PrepareStatement(CHAR_SEL_CHARACTER_AT_LOGIN, "SELECT at_login FROM characters WHERE guid = ?", CONNECTION_SYNCH); - PrepareStatement(CHAR_SEL_CHAR_CLASS_LVL_AT_LOGIN, "SELECT class, level, at_login, knownTitles FROM characters WHERE guid = ?", CONNECTION_SYNCH); PrepareStatement(CHAR_SEL_CHAR_CUSTOMIZE_INFO, "SELECT name, race, class, gender, at_login FROM characters WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_CHAR_RACE_OR_FACTION_CHANGE_INFOS, "SELECT c.at_login, c.knownTitles, gm.guid, c.map FROM characters c LEFT JOIN group_member gm ON c.guid = gm.memberGuid WHERE c.guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_INSTANCE, "SELECT data, completedEncounters FROM instance WHERE map = ? AND id = ?", CONNECTION_SYNCH); diff --git a/src/server/database/Database/Implementation/CharacterDatabase.h b/src/server/database/Database/Implementation/CharacterDatabase.h index 4258d1b5788..2ac4b706bd1 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.h +++ b/src/server/database/Database/Implementation/CharacterDatabase.h @@ -182,7 +182,6 @@ enum CharacterDatabaseStatements : uint32 CHAR_UPD_GUILD_EMBLEM_INFO, CHAR_UPD_GUILD_BANK_TAB_INFO, CHAR_UPD_GUILD_BANK_MONEY, - CHAR_UPD_GUILD_BANK_EVENTLOG_TAB, CHAR_UPD_GUILD_RANK_BANK_MONEY, CHAR_UPD_GUILD_BANK_TAB_TEXT, CHAR_INS_GUILD_MEMBER_WITHDRAW, @@ -347,7 +346,6 @@ enum CharacterDatabaseStatements : uint32 CHAR_SEL_CHAR_HOMEBIND, CHAR_SEL_CHAR_GUID_NAME_BY_ACC, CHAR_SEL_CHARACTER_AT_LOGIN, - CHAR_SEL_CHAR_CLASS_LVL_AT_LOGIN, CHAR_SEL_CHAR_CUSTOMIZE_INFO, CHAR_SEL_CHAR_RACE_OR_FACTION_CHANGE_INFOS, CHAR_SEL_INSTANCE, diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index f7e93b85a6b..2a685a6be04 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -216,23 +216,23 @@ void SmartAIMgr::LoadSmartAIFromDB() { case SMART_SCRIPT_TYPE_CREATURE: { - CreatureData const* creature = sObjectMgr->GetCreatureData(uint32(std::abs(temp.entryOrGuid))); + CreatureData const* creature = sObjectMgr->GetCreatureData(uint32(-temp.entryOrGuid)); if (!creature) { - TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: Creature guid ({}) does not exist, skipped loading.", uint32(std::abs(temp.entryOrGuid))); + TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: Creature guid ({}) does not exist, skipped loading.", -temp.entryOrGuid); continue; } CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(creature->id); if (!creatureInfo) { - TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: Creature entry ({}) guid ({}) does not exist, skipped loading.", creature->id, uint32(std::abs(temp.entryOrGuid))); + TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: Creature entry ({}) guid ({}) does not exist, skipped loading.", creature->id, -temp.entryOrGuid); continue; } if (creatureInfo->AIName != "SmartAI") { - TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: Creature entry ({}) guid ({}) is not using SmartAI, skipped loading.", creature->id, uint32(std::abs(temp.entryOrGuid))); + TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: Creature entry ({}) guid ({}) is not using SmartAI, skipped loading.", creature->id, -temp.entryOrGuid); continue; } break; @@ -242,20 +242,20 @@ void SmartAIMgr::LoadSmartAIFromDB() GameObjectData const* gameObject = sObjectMgr->GetGameObjectData(uint32(std::abs(temp.entryOrGuid))); if (!gameObject) { - TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: GameObject guid ({}) does not exist, skipped loading.", uint32(std::abs(temp.entryOrGuid))); + TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: GameObject guid ({}) does not exist, skipped loading.", -temp.entryOrGuid); continue; } GameObjectTemplate const* gameObjectInfo = sObjectMgr->GetGameObjectTemplate(gameObject->id); if (!gameObjectInfo) { - TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: GameObject entry ({}) guid ({}) does not exist, skipped loading.", gameObject->id, uint32(std::abs(temp.entryOrGuid))); + TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: GameObject entry ({}) guid ({}) does not exist, skipped loading.", gameObject->id, -temp.entryOrGuid); continue; } if (gameObjectInfo->AIName != "SmartGameObjectAI") { - TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: GameObject entry ({}) guid ({}) is not using SmartGameObjectAI, skipped loading.", gameObject->id, uint32(std::abs(temp.entryOrGuid))); + TC_LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: GameObject entry ({}) guid ({}) is not using SmartGameObjectAI, skipped loading.", gameObject->id, -temp.entryOrGuid); continue; } break; diff --git a/src/server/game/Entities/Corpse/Corpse.cpp b/src/server/game/Entities/Corpse/Corpse.cpp index 588e69302ec..8fe0383633c 100644 --- a/src/server/game/Entities/Corpse/Corpse.cpp +++ b/src/server/game/Entities/Corpse/Corpse.cpp @@ -153,7 +153,6 @@ bool Corpse::LoadCorpseFromDB(ObjectGuid::LowType guid, Field* fields) // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // SELECT posX, posY, posZ, orientation, mapId, displayId, itemCache, bytes1, bytes2, guildId, flags, dynFlags, time, corpseType, instanceId, phaseMask, guid FROM corpse WHERE mapId = ? AND instanceId = ? - ObjectGuid::LowType ownerGuid = fields[16].GetUInt32(); float posX = fields[0].GetFloat(); float posY = fields[1].GetFloat(); float posZ = fields[2].GetFloat(); @@ -174,7 +173,7 @@ bool Corpse::LoadCorpseFromDB(ObjectGuid::LowType guid, Field* fields) SetUInt32Value(CORPSE_FIELD_GUILD, fields[9].GetUInt32()); SetUInt32Value(CORPSE_FIELD_FLAGS, fields[10].GetUInt8()); SetUInt32Value(CORPSE_FIELD_DYNAMIC_FLAGS, fields[11].GetUInt8()); - SetGuidValue(CORPSE_FIELD_OWNER, ObjectGuid(HighGuid::Player, ownerGuid)); + SetGuidValue(CORPSE_FIELD_OWNER, ObjectGuid::Create<HighGuid::Player>(fields[16].GetUInt32())); m_time = time_t(fields[12].GetUInt32()); diff --git a/src/server/game/Entities/Creature/CreatureGroups.h b/src/server/game/Entities/Creature/CreatureGroups.h index 9889baf13d8..748df579251 100644 --- a/src/server/game/Entities/Creature/CreatureGroups.h +++ b/src/server/game/Entities/Creature/CreatureGroups.h @@ -52,7 +52,7 @@ class TC_GAME_API FormationMgr FormationMgr(); ~FormationMgr(); - std::unordered_map<uint32 /*spawnID*/, FormationInfo> _creatureGroupMap; + std::unordered_map<ObjectGuid::LowType /*spawnID*/, FormationInfo> _creatureGroupMap; public: static FormationMgr* instance(); diff --git a/src/server/game/Entities/Item/Container/Bag.cpp b/src/server/game/Entities/Item/Container/Bag.cpp index 267ee1f691a..814cc01ec89 100644 --- a/src/server/game/Entities/Item/Container/Bag.cpp +++ b/src/server/game/Entities/Item/Container/Bag.cpp @@ -82,7 +82,7 @@ bool Bag::Create(ObjectGuid::LowType guidlow, uint32 itemid, Player const* owner if (owner) { - SetGuidValue(ITEM_FIELD_OWNER, owner->GetGUID()); + SetOwnerGUID(owner->GetGUID()); SetGuidValue(ITEM_FIELD_CONTAINED, owner->GetGUID()); } @@ -96,7 +96,7 @@ bool Bag::Create(ObjectGuid::LowType guidlow, uint32 itemid, Player const* owner // Cleaning 20 slots for (uint8 i = 0; i < MAX_BAG_SIZE; ++i) { - SetGuidValue(CONTAINER_FIELD_SLOT_1 + (i*2), ObjectGuid::Empty); + SetGuidValue(CONTAINER_FIELD_SLOT_1 + (i * 2), ObjectGuid::Empty); m_bagslot[i] = nullptr; } @@ -165,7 +165,7 @@ void Bag::StoreItem(uint8 slot, Item* pItem, bool /*update*/) m_bagslot[slot] = pItem; SetGuidValue(CONTAINER_FIELD_SLOT_1 + (slot * 2), pItem->GetGUID()); pItem->SetGuidValue(ITEM_FIELD_CONTAINED, GetGUID()); - pItem->SetGuidValue(ITEM_FIELD_OWNER, GetOwnerGUID()); + pItem->SetOwnerGUID(GetOwnerGUID()); pItem->SetContainer(this); pItem->SetSlot(slot); } diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index 0d9648ca7e4..23fd96789b2 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -273,7 +273,7 @@ bool Item::Create(ObjectGuid::LowType guidlow, uint32 itemId, Player const* owne if (owner) { - SetGuidValue(ITEM_FIELD_OWNER, owner->GetGUID()); + SetOwnerGUID(owner->GetGUID()); SetGuidValue(ITEM_FIELD_CONTAINED, owner->GetGUID()); } diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index e825af8c4dd..f5d7ae63f4d 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -3458,11 +3458,13 @@ void WorldObject::DestroyForNearbyPlayers() if (!player->HaveAtClient(this)) continue; - if (Unit const* unit = ToUnit(); unit && unit->GetCharmerGUID() == player->GetGUID()) /// @todo this is for puppet - continue; + if (Unit const* unit = ToUnit()) + { + if (unit->GetCharmerGUID() == player->GetGUID()) /// @todo this is for puppet + continue; - if (GetTypeId() == TYPEID_UNIT) - DestroyForPlayer(player, ToUnit()->IsDuringRemoveFromWorld() && ToCreature()->isDead()); // at remove from world (destroy) show kill animation + DestroyForPlayer(player, unit->IsDuringRemoveFromWorld() && unit->isDead()); // at remove from world (destroy) show kill animation + } else DestroyForPlayer(player); diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 3ede7366b9b..e2855e6fdce 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -838,9 +838,7 @@ bool Pet::CreateBaseAtCreatureInfo(CreatureTemplate const* cinfo, Unit* owner) bool Pet::CreateBaseAtTamed(CreatureTemplate const* cinfo, Map* map, uint32 phaseMask) { TC_LOG_DEBUG("entities.pet", "Pet::CreateBaseForTamed"); - ObjectGuid::LowType guid = map->GenerateLowGuid<HighGuid::Pet>(); - uint32 petId = sObjectMgr->GeneratePetNumber(); - if (!Create(guid, map, phaseMask, cinfo->Entry, petId)) + if (!Create(map->GenerateLowGuid<HighGuid::Pet>(), map, phaseMask, cinfo->Entry, sObjectMgr->GeneratePetNumber())) return false; SetMaxPower(POWER_HAPPINESS, GetCreatePowerValue(POWER_HAPPINESS)); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 348b6c9d487..05b3ffa9d06 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -109,18 +109,6 @@ #define ZONE_UPDATE_INTERVAL (1*IN_MILLISECONDS) -#define PLAYER_SKILL_INDEX(x) (PLAYER_SKILL_INFO_1_1 + ((x)*3)) -#define PLAYER_SKILL_VALUE_INDEX(x) (PLAYER_SKILL_INDEX(x)+1) -#define PLAYER_SKILL_BONUS_INDEX(x) (PLAYER_SKILL_INDEX(x)+2) - -#define SKILL_VALUE(x) PAIR32_LOPART(x) -#define SKILL_MAX(x) PAIR32_HIPART(x) -#define MAKE_SKILL_VALUE(v, m) MAKE_PAIR32(v, m) - -#define SKILL_TEMP_BONUS(x) int16(PAIR32_LOPART(x)) -#define SKILL_PERM_BONUS(x) int16(PAIR32_HIPART(x)) -#define MAKE_SKILL_BONUS(t, p) MAKE_PAIR32(t, p) - enum CharacterFlags { CHARACTER_FLAG_NONE = 0x00000000, @@ -4038,7 +4026,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe uint32 mail_id = mailFields[0].GetUInt32(); uint8 mailType = mailFields[1].GetUInt8(); uint16 mailTemplateId= mailFields[2].GetUInt16(); - uint32 sender = mailFields[3].GetUInt32(); + ObjectGuid::LowType sender = mailFields[3].GetUInt32(); std::string subject = mailFields[4].GetString(); std::string body = mailFields[5].GetString(); uint32 money = mailFields[6].GetUInt32(); @@ -5481,21 +5469,17 @@ bool Player::UpdateSkill(uint32 skill_id, uint32 step) if (itr == mSkillStatus.end() || itr->second.uState == SKILL_DELETED) return false; - uint32 valueIndex = PLAYER_SKILL_VALUE_INDEX(itr->second.pos); - uint32 data = GetUInt32Value(valueIndex); - uint32 value = SKILL_VALUE(data); - uint32 max = SKILL_MAX(data); + uint16 value = GetSkillRankByPos(itr->second.pos); + uint16 max = GetSkillMaxRankByPos(itr->second.pos); - if ((!max) || (!value) || (value >= max)) + if (!max || !value || value >= max) return false; if (value < max) { - uint32 new_value = value + step; - if (new_value > max) - new_value = max; + uint16 new_value = std::min(uint16(value + step), max); - SetUInt32Value(valueIndex, MAKE_SKILL_VALUE(new_value, max)); + SetSkillRank(itr->second.pos, new_value); if (itr->second.uState != SKILL_NEW) itr->second.uState = SKILL_CHANGED; @@ -5638,11 +5622,8 @@ bool Player::UpdateSkillPro(uint16 skillId, int32 chance, uint32 step) if (itr == mSkillStatus.end() || itr->second.uState == SKILL_DELETED) return false; - uint32 valueIndex = PLAYER_SKILL_VALUE_INDEX(itr->second.pos); - - uint32 data = GetUInt32Value(valueIndex); - uint16 value = SKILL_VALUE(data); - uint16 max = SKILL_MAX(data); + uint16 value = GetSkillRankByPos(itr->second.pos); + uint16 max = GetSkillMaxRankByPos(itr->second.pos); if (!max || !value || value >= max) return false; @@ -5659,7 +5640,7 @@ bool Player::UpdateSkillPro(uint16 skillId, int32 chance, uint32 step) if (new_value > max) new_value = max; - SetUInt32Value(valueIndex, MAKE_SKILL_VALUE(new_value, max)); + SetSkillRank(itr->second.pos, new_value); if (itr->second.uState != SKILL_NEW) itr->second.uState = SKILL_CHANGED; @@ -5756,16 +5737,10 @@ void Player::ModifySkillBonus(uint32 skillid, int32 val, bool talent) if (itr == mSkillStatus.end() || itr->second.uState == SKILL_DELETED) return; - uint32 bonusIndex = PLAYER_SKILL_BONUS_INDEX(itr->second.pos); - - uint32 bonus_val = GetUInt32Value(bonusIndex); - int16 temp_bonus = SKILL_TEMP_BONUS(bonus_val); - int16 perm_bonus = SKILL_PERM_BONUS(bonus_val); - if (talent) // permanent bonus stored in high part - SetUInt32Value(bonusIndex, MAKE_SKILL_BONUS(temp_bonus, perm_bonus+val)); + SetSkillPermBonus(itr->second.pos, GetSkillPermBonusByPos(itr->second.pos) + val); else // temporary/item bonus stored in low part - SetUInt32Value(bonusIndex, MAKE_SKILL_BONUS(temp_bonus+val, perm_bonus)); + SetSkillTempBonus(itr->second.pos, GetSkillTempBonusByPos(itr->second.pos) + val); } void Player::UpdateSkillsForLevel() @@ -5788,10 +5763,7 @@ void Player::UpdateSkillsForLevel() if (GetSkillRangeType(rcEntry) != SKILL_RANGE_LEVEL) continue; - uint32 valueIndex = PLAYER_SKILL_VALUE_INDEX(itr->second.pos); - uint32 data = GetUInt32Value(valueIndex); - uint32 max = SKILL_MAX(data); - uint32 val = SKILL_VALUE(data); + uint16 max = GetSkillMaxRankByPos(itr->second.pos); /// update only level dependent max skill values if (max != 1) @@ -5799,13 +5771,14 @@ void Player::UpdateSkillsForLevel() /// maximize skill always if (alwaysMaxSkill || (rcEntry->Flags & SKILL_FLAG_ALWAYS_MAX_VALUE)) { - SetUInt32Value(valueIndex, MAKE_SKILL_VALUE(maxSkill, maxSkill)); + SetSkillRank(itr->second.pos, maxSkill); + SetSkillMaxRank(itr->second.pos, maxSkill); if (itr->second.uState != SKILL_NEW) itr->second.uState = SKILL_CHANGED; } else if (max != maxconfskill) /// update max skill value if current max skill not maximized { - SetUInt32Value(valueIndex, MAKE_SKILL_VALUE(val, maxSkill)); + SetSkillMaxRank(itr->second.pos, maxSkill); if (itr->second.uState != SKILL_NEW) itr->second.uState = SKILL_CHANGED; } @@ -5823,13 +5796,12 @@ void Player::UpdateWeaponsSkillsToMaxSkillsForLevel() uint32 pskill = itr->first; if (IsProfessionOrRidingSkill(pskill)) continue; - uint32 valueIndex = PLAYER_SKILL_VALUE_INDEX(itr->second.pos); - uint32 data = GetUInt32Value(valueIndex); - uint32 max = SKILL_MAX(data); + + uint16 max = GetSkillMaxRankByPos(itr->second.pos); if (max > 1) { - SetUInt32Value(valueIndex, MAKE_SKILL_VALUE(max, max)); + SetSkillRank(itr->second.pos, max); if (itr->second.uState != SKILL_NEW) itr->second.uState = SKILL_CHANGED; } @@ -5851,16 +5823,18 @@ void Player::SetSkill(uint32 id, uint16 step, uint16 newVal, uint16 maxVal) //has skill if (itr != mSkillStatus.end() && itr->second.uState != SKILL_DELETED) { - currVal = SKILL_VALUE(GetUInt32Value(PLAYER_SKILL_VALUE_INDEX(itr->second.pos))); + currVal = GetSkillRankByPos(itr->second.pos); if (newVal) { // if skill value is going down, update enchantments before setting the new value if (newVal < currVal) UpdateSkillEnchantments(id, currVal, newVal); // update step - SetUInt32Value(PLAYER_SKILL_INDEX(itr->second.pos), MAKE_PAIR32(id, step)); + SetSkillStep(itr->second.pos, step); // update value - SetUInt32Value(PLAYER_SKILL_VALUE_INDEX(itr->second.pos), MAKE_SKILL_VALUE(newVal, maxVal)); + SetSkillRank(itr->second.pos, newVal); + SetSkillMaxRank(itr->second.pos, maxVal); + if (itr->second.uState != SKILL_NEW) itr->second.uState = SKILL_CHANGED; LearnSkillRewardedSpells(id, newVal); @@ -5875,9 +5849,12 @@ void Player::SetSkill(uint32 id, uint16 step, uint16 newVal, uint16 maxVal) //remove enchantments needing this skill UpdateSkillEnchantments(id, currVal, 0); // clear skill fields - SetUInt32Value(PLAYER_SKILL_INDEX(itr->second.pos), 0); - SetUInt32Value(PLAYER_SKILL_VALUE_INDEX(itr->second.pos), 0); - SetUInt32Value(PLAYER_SKILL_BONUS_INDEX(itr->second.pos), 0); + SetSkillLineId(itr->second.pos, 0); + SetSkillStep(itr->second.pos, 0); + SetSkillRank(itr->second.pos, 0); + SetSkillMaxRank(itr->second.pos, 0); + SetSkillTempBonus(itr->second.pos, 0); + SetSkillPermBonus(itr->second.pos, 0); // mark as deleted or simply remove from map if not saved yet if (itr->second.uState != SKILL_NEW) @@ -5894,9 +5871,9 @@ void Player::SetSkill(uint32 id, uint16 step, uint16 newVal, uint16 maxVal) else if (newVal) //add { currVal = 0; - for (int i=0; i < PLAYER_MAX_SKILLS; ++i) + for (uint32 i = 0; i < PLAYER_MAX_SKILLS; ++i) { - if (!GetUInt32Value(PLAYER_SKILL_INDEX(i))) + if (!GetSkillLineIdByPos(i)) { SkillLineEntry const* pSkill = sSkillLineStore.LookupEntry(id); if (!pSkill) @@ -5906,8 +5883,10 @@ void Player::SetSkill(uint32 id, uint16 step, uint16 newVal, uint16 maxVal) return; } - SetUInt32Value(PLAYER_SKILL_INDEX(i), MAKE_PAIR32(id, step)); - SetUInt32Value(PLAYER_SKILL_VALUE_INDEX(i), MAKE_SKILL_VALUE(newVal, maxVal)); + SetSkillLineId(i, id); + SetSkillStep(i, step); + SetSkillRank(i, newVal); + SetSkillMaxRank(i, maxVal); UpdateSkillEnchantments(id, currVal, newVal); // insert new entry or update if not deleted old entry yet @@ -5920,7 +5899,8 @@ void Player::SetSkill(uint32 id, uint16 step, uint16 newVal, uint16 maxVal) mSkillStatus.insert(SkillStatusMap::value_type(id, SkillStatusData(i, SKILL_NEW))); // apply skill bonuses - SetUInt32Value(PLAYER_SKILL_BONUS_INDEX(i), 0); + SetSkillTempBonus(i, 0); + SetSkillPermBonus(i, 0); // temporary bonuses AuraEffectList const& mModSkill = GetAuraEffectsByType(SPELL_AURA_MOD_SKILL); @@ -5962,7 +5942,7 @@ uint16 Player::GetSkillStep(uint32 skill) const if (itr == mSkillStatus.end() || itr->second.uState == SKILL_DELETED) return 0; - return PAIR32_HIPART(GetUInt32Value(PLAYER_SKILL_INDEX(itr->second.pos))); + return GetSkillStepByPos(itr->second.pos); } uint16 Player::GetSkillValue(uint32 skill) const @@ -5974,11 +5954,9 @@ uint16 Player::GetSkillValue(uint32 skill) const if (itr == mSkillStatus.end() || itr->second.uState == SKILL_DELETED) return 0; - uint32 bonus = GetUInt32Value(PLAYER_SKILL_BONUS_INDEX(itr->second.pos)); - - int32 result = int32(SKILL_VALUE(GetUInt32Value(PLAYER_SKILL_VALUE_INDEX(itr->second.pos)))); - result += SKILL_TEMP_BONUS(bonus); - result += SKILL_PERM_BONUS(bonus); + int32 result = int32(GetSkillRankByPos(itr->second.pos)); + result += int32(GetSkillTempBonusByPos(itr->second.pos)); + result += int32(GetSkillPermBonusByPos(itr->second.pos)); return result < 0 ? 0 : result; } @@ -5991,11 +5969,9 @@ uint16 Player::GetMaxSkillValue(uint32 skill) const if (itr == mSkillStatus.end() || itr->second.uState == SKILL_DELETED) return 0; - uint32 bonus = GetUInt32Value(PLAYER_SKILL_BONUS_INDEX(itr->second.pos)); - - int32 result = int32(SKILL_MAX(GetUInt32Value(PLAYER_SKILL_VALUE_INDEX(itr->second.pos)))); - result += SKILL_TEMP_BONUS(bonus); - result += SKILL_PERM_BONUS(bonus); + int32 result = int32(GetSkillMaxRankByPos(itr->second.pos)); + result += int32(GetSkillTempBonusByPos(itr->second.pos)); + result += int32(GetSkillPermBonusByPos(itr->second.pos)); return result < 0 ? 0 : result; } @@ -6008,7 +5984,7 @@ uint16 Player::GetPureMaxSkillValue(uint32 skill) const if (itr == mSkillStatus.end() || itr->second.uState == SKILL_DELETED) return 0; - return SKILL_MAX(GetUInt32Value(PLAYER_SKILL_VALUE_INDEX(itr->second.pos))); + return GetSkillMaxRankByPos(itr->second.pos); } uint16 Player::GetBaseSkillValue(uint32 skill) const @@ -6020,8 +5996,8 @@ uint16 Player::GetBaseSkillValue(uint32 skill) const if (itr == mSkillStatus.end() || itr->second.uState == SKILL_DELETED) return 0; - int32 result = int32(SKILL_VALUE(GetUInt32Value(PLAYER_SKILL_VALUE_INDEX(itr->second.pos)))); - result += SKILL_PERM_BONUS(GetUInt32Value(PLAYER_SKILL_BONUS_INDEX(itr->second.pos))); + int32 result = int32(GetSkillRankByPos(itr->second.pos)); + result += int32(GetSkillPermBonusByPos(itr->second.pos)); return result < 0 ? 0 : result; } @@ -6034,7 +6010,7 @@ uint16 Player::GetPureSkillValue(uint32 skill) const if (itr == mSkillStatus.end() || itr->second.uState == SKILL_DELETED) return 0; - return SKILL_VALUE(GetUInt32Value(PLAYER_SKILL_VALUE_INDEX(itr->second.pos))); + return GetSkillRankByPos(itr->second.pos); } int16 Player::GetSkillPermBonusValue(uint32 skill) const @@ -6046,7 +6022,7 @@ int16 Player::GetSkillPermBonusValue(uint32 skill) const if (itr == mSkillStatus.end() || itr->second.uState == SKILL_DELETED) return 0; - return SKILL_PERM_BONUS(GetUInt32Value(PLAYER_SKILL_BONUS_INDEX(itr->second.pos))); + return GetSkillPermBonusByPos(itr->second.pos); } int16 Player::GetSkillTempBonusValue(uint32 skill) const @@ -6058,7 +6034,7 @@ int16 Player::GetSkillTempBonusValue(uint32 skill) const if (itr == mSkillStatus.end() || itr->second.uState == SKILL_DELETED) return 0; - return SKILL_TEMP_BONUS(GetUInt32Value(PLAYER_SKILL_BONUS_INDEX(itr->second.pos))); + return GetSkillTempBonusByPos(itr->second.pos); } void Player::SendActionButtons(uint32 state) const @@ -11848,7 +11824,7 @@ Item* Player::_StoreItem(uint16 pos, Item* pItem, uint32 count, bool clone, bool m_items[slot] = pItem; SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 2), pItem->GetGUID()); pItem->SetGuidValue(ITEM_FIELD_CONTAINED, GetGUID()); - pItem->SetGuidValue(ITEM_FIELD_OWNER, GetGUID()); + pItem->SetOwnerGUID(GetGUID()); pItem->SetSlot(slot); pItem->SetContainer(nullptr); @@ -12096,7 +12072,7 @@ void Player::VisualizeItem(uint8 slot, Item* pItem) m_items[slot] = pItem; SetGuidValue(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 2), pItem->GetGUID()); pItem->SetGuidValue(ITEM_FIELD_CONTAINED, GetGUID()); - pItem->SetGuidValue(ITEM_FIELD_OWNER, GetGUID()); + pItem->SetOwnerGUID(GetGUID()); pItem->SetSlot(slot); pItem->SetContainer(nullptr); @@ -13152,6 +13128,7 @@ void Player::AddItemToBuyBackSlot(Item* pItem) SetUInt32Value(PLAYER_FIELD_BUYBACK_PRICE_1 + eslot, proto->SellPrice * pItem->GetCount()); else SetUInt32Value(PLAYER_FIELD_BUYBACK_PRICE_1 + eslot, 0); + SetUInt32Value(PLAYER_FIELD_BUYBACK_TIMESTAMP_1 + eslot, (uint32)etime); // move to next (for non filled list is move most optimized choice) @@ -16845,11 +16822,6 @@ bool Player::HasPvPForcingQuest() const /*** LOAD SYSTEM ***/ /*********************************************************/ -void Player::Initialize(ObjectGuid::LowType guid) -{ - Object::_Create(guid, 0, HighGuid::Player); -} - void Player::_LoadDeclinedNames(PreparedQueryResult result) { if (!result) @@ -18134,7 +18106,7 @@ Item* Player::_LoadItem(CharacterDatabaseTransaction trans, uint32 zoneId, uint3 { item->SetRefundRecipient(GetGUID()); item->SetPaidMoney((*result)[0].GetUInt32()); - item->SetPaidExtendedCost((*result)[2].GetUInt16()); + item->SetPaidExtendedCost((*result)[1].GetUInt16()); AddRefundReference(item->GetGUID()); } else @@ -18458,9 +18430,6 @@ void Player::_LoadQuestStatusRewarded(PreparedQueryResult result) void Player::_LoadDailyQuestStatus(PreparedQueryResult result) { - for (uint32 quest_daily_idx = 0; quest_daily_idx < PLAYER_MAX_DAILY_QUESTS; ++quest_daily_idx) - SetUInt32Value(PLAYER_FIELD_DAILY_QUESTS_1+quest_daily_idx, 0); - m_DFQuests.clear(); //QueryResult* result = CharacterDatabase.PQuery("SELECT quest, time FROM character_queststatus_daily WHERE guid = '{}'", GetGUID().GetCounter()); @@ -18472,7 +18441,8 @@ void Player::_LoadDailyQuestStatus(PreparedQueryResult result) do { Field* fields = result->Fetch(); - if (Quest const* qQuest = sObjectMgr->GetQuestTemplate(fields[0].GetUInt32())) + uint32 quest_id = fields[0].GetUInt32(); + if (Quest const* qQuest = sObjectMgr->GetQuestTemplate(quest_id)) { if (qQuest->IsDFQuest()) { @@ -18488,8 +18458,6 @@ void Player::_LoadDailyQuestStatus(PreparedQueryResult result) break; } - uint32 quest_id = fields[0].GetUInt32(); - // save _any_ from daily quest times (it must be after last reset anyway) m_lastDailyQuestTime = time_t(fields[1].GetUInt32()); @@ -19727,7 +19695,7 @@ void Player::_SaveMail(CharacterDatabaseTransaction trans) if (!m->removedItems.empty()) { - for (std::vector<uint32>::iterator itr2 = m->removedItems.begin(); itr2 != m->removedItems.end(); ++itr2) + for (std::vector<ObjectGuid::LowType>::iterator itr2 = m->removedItems.begin(); itr2 != m->removedItems.end(); ++itr2) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM); stmt->setUInt32(0, *itr2); @@ -19991,9 +19959,8 @@ void Player::_SaveSkills(CharacterDatabaseTransaction trans) continue; } - uint32 valueData = GetUInt32Value(PLAYER_SKILL_VALUE_INDEX(itr->second.pos)); - uint16 value = SKILL_VALUE(valueData); - uint16 max = SKILL_MAX(valueData); + uint16 value = GetSkillRankByPos(itr->second.pos); + uint16 max = GetSkillMaxRankByPos(itr->second.pos); switch (itr->second.uState) { @@ -20723,7 +20690,7 @@ void Player::Whisper(uint32 textId, Player* target, bool /*isBossWhisper = false target->SendDirectMessage(&data); } -Item* Player::GetMItem(uint32 id) +Item* Player::GetMItem(ObjectGuid::LowType id) { ItemMap::const_iterator itr = mMitems.find(id); return itr != mMitems.end() ? itr->second : nullptr; @@ -20736,7 +20703,7 @@ void Player::AddMItem(Item* it) mMitems[it->GetGUID().GetCounter()] = it; } -bool Player::RemoveMItem(uint32 id) +bool Player::RemoveMItem(ObjectGuid::LowType id) { return mMitems.erase(id) ? true : false; } @@ -24900,10 +24867,12 @@ void Player::_LoadSkills(PreparedQueryResult result) } } - SetUInt32Value(PLAYER_SKILL_INDEX(count), MAKE_PAIR32(skill, skillStep)); - - SetUInt32Value(PLAYER_SKILL_VALUE_INDEX(count), MAKE_SKILL_VALUE(value, max)); - SetUInt32Value(PLAYER_SKILL_BONUS_INDEX(count), 0); + SetSkillLineId(count, skill); + SetSkillStep(count, skillStep); + SetSkillRank(count, value); + SetSkillMaxRank(count, max); + SetSkillTempBonus(count, 0); + SetSkillPermBonus(count, 0); mSkillStatus.insert(SkillStatusMap::value_type(skill, SkillStatusData(count, SKILL_UNCHANGED))); loadedSkillValues[skill] = value; @@ -24924,13 +24893,6 @@ void Player::_LoadSkills(PreparedQueryResult result) for (auto& skill : loadedSkillValues) LearnSkillRewardedSpells(skill.first, skill.second); - for (; count < PLAYER_MAX_SKILLS; ++count) - { - SetUInt32Value(PLAYER_SKILL_INDEX(count), 0); - SetUInt32Value(PLAYER_SKILL_VALUE_INDEX(count), 0); - SetUInt32Value(PLAYER_SKILL_BONUS_INDEX(count), 0); - } - if (HasSkill(SKILL_FIST_WEAPONS)) SetSkill(SKILL_FIST_WEAPONS, 0, GetSkillValue(SKILL_UNARMED), GetMaxSkillValueForLevel()); } @@ -26580,7 +26542,7 @@ std::string Player::GetCoordsMapAreaAndZoneString() const return str.str(); } -void Player::SetInGuild(uint32 guildId) +void Player::SetInGuild(ObjectGuid::LowType guildId) { SetUInt32Value(PLAYER_GUILDID, guildId); sCharacterCache->UpdateCharacterGuildId(GetGUID(), guildId); @@ -26588,7 +26550,7 @@ void Player::SetInGuild(uint32 guildId) Guild* Player::GetGuild() { - uint32 guildId = GetGuildId(); + ObjectGuid::LowType guildId = GetGuildId(); return guildId ? sGuildMgr->GetGuildById(guildId) : nullptr; } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 9ace0cab7bf..dd7d0cf12d3 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -84,7 +84,23 @@ enum LootType : uint8; typedef std::deque<Mail*> PlayerMails; -#define PLAYER_MAX_SKILLS 128 +#define PLAYER_MAX_SKILLS 128 +enum SkillFieldOffset +{ + SKILL_ID_FIELD_OFFSET = 0, + SKILL_ID_SHORT_OFFSET = 0, + SKILL_STEP_FIELD_OFFSET = 0, + SKILL_STEP_SHORT_OFFSET = 1, + SKILL_RANK_FIELD_OFFSET = 1, + SKILL_RANK_SHORT_OFFSET = 0, + SKILL_MAX_RANK_FIELD_OFFSET = 1, + SKILL_MAX_RANK_SHORT_OFFSET = 1, + SKILL_TEMP_BONUS_FIELD_OFFSET = 2, + SKILL_TEMP_BONUS_SHORT_OFFSET = 0, + SKILL_PERM_BONUS_FIELD_OFFSET = 2, + SKILL_PERM_BONUS_SHORT_OFFSET = 1 +}; + #define PLAYER_MAX_DAILY_QUESTS 25 #define PLAYER_EXPLORED_ZONES_SIZE 128 @@ -1363,7 +1379,6 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> bool LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& holder); bool IsLoading() const override; - void Initialize(ObjectGuid::LowType guid); static uint32 GetZoneIdFromDB(ObjectGuid guid); static bool LoadPositionFromDB(uint32& mapid, float& x, float& y, float& z, float& o, bool& in_flight, ObjectGuid guid); @@ -1437,13 +1452,13 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> uint8 unReadMails; time_t m_nextMailDelivereTime; - typedef std::unordered_map<uint32, Item*> ItemMap; + typedef std::unordered_map<ObjectGuid::LowType, Item*> ItemMap; ItemMap mMitems; //template defined in objectmgr.cpp - Item* GetMItem(uint32 id); + Item* GetMItem(ObjectGuid::LowType id); void AddMItem(Item* it); - bool RemoveMItem(uint32 id); + bool RemoveMItem(ObjectGuid::LowType id); void SendOnCancelExpectedVehicleRideAura() const; void PetSpellInitialize(); @@ -1605,13 +1620,13 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void RemoveFromGroup(RemoveMethod method = GROUP_REMOVEMETHOD_DEFAULT) { RemoveFromGroup(GetGroup(), GetGUID(), method); } void SendUpdateToOutOfRangeGroupMembers(); - void SetInGuild(uint32 guildId); + void SetInGuild(ObjectGuid::LowType guildId); void SetGuildRank(uint8 rankId) { SetUInt32Value(PLAYER_GUILDRANK, rankId); } uint8 GetGuildRank() const { return uint8(GetUInt32Value(PLAYER_GUILDRANK)); } - void SetGuildIdInvited(uint32 GuildId) { m_GuildIdInvited = GuildId; } - uint32 GetGuildId() const { return GetUInt32Value(PLAYER_GUILDID); } + void SetGuildIdInvited(ObjectGuid::LowType GuildId) { m_GuildIdInvited = GuildId; } + ObjectGuid::LowType GetGuildId() const { return GetUInt32Value(PLAYER_GUILDID); } Guild* GetGuild(); - int GetGuildIdInvited() const { return m_GuildIdInvited; } + ObjectGuid::LowType GetGuildIdInvited() const { return m_GuildIdInvited; } static void RemovePetitionsAndSigns(ObjectGuid guid, CharterTypes type); // Arena Team @@ -1794,6 +1809,18 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> uint16 GetSkillStep(uint32 skill) const; // 0...6 bool HasSkill(uint32 skill) const; void LearnSkillRewardedSpells(uint32 skillId, uint32 skillValue); + uint16 GetSkillLineIdByPos(uint32 pos) const { return GetUInt16Value(PLAYER_SKILL_INFO_1_1 + pos * 3 + SKILL_ID_FIELD_OFFSET, SKILL_ID_SHORT_OFFSET); } + void SetSkillLineId(uint32 pos, uint16 skillLineId) { SetUInt16Value(PLAYER_SKILL_INFO_1_1 + pos * 3 + SKILL_ID_FIELD_OFFSET, SKILL_ID_SHORT_OFFSET, skillLineId); } + uint16 GetSkillStepByPos(uint32 pos) const { return GetUInt16Value(PLAYER_SKILL_INFO_1_1 + pos * 3 + SKILL_STEP_FIELD_OFFSET, SKILL_STEP_SHORT_OFFSET); }; + void SetSkillStep(uint32 pos, uint16 step) { SetUInt16Value(PLAYER_SKILL_INFO_1_1 + pos * 3 + SKILL_STEP_FIELD_OFFSET, SKILL_STEP_SHORT_OFFSET, step); }; + uint16 GetSkillRankByPos(uint32 pos) const { return GetUInt16Value(PLAYER_SKILL_INFO_1_1 + pos * 3 + SKILL_RANK_FIELD_OFFSET, SKILL_RANK_SHORT_OFFSET); } + void SetSkillRank(uint32 pos, uint16 rank) { SetUInt16Value(PLAYER_SKILL_INFO_1_1 + pos * 3 + SKILL_RANK_FIELD_OFFSET, SKILL_RANK_SHORT_OFFSET, rank); } + uint16 GetSkillMaxRankByPos(uint32 pos) const { return GetUInt16Value(PLAYER_SKILL_INFO_1_1 + pos * 3 + SKILL_MAX_RANK_FIELD_OFFSET, SKILL_MAX_RANK_SHORT_OFFSET); } + void SetSkillMaxRank(uint32 pos, uint16 max) { SetUInt16Value(PLAYER_SKILL_INFO_1_1 + pos * 3 + SKILL_MAX_RANK_FIELD_OFFSET, SKILL_MAX_RANK_SHORT_OFFSET, max); } + int16 GetSkillTempBonusByPos(uint32 pos) const { return GetUInt16Value(PLAYER_SKILL_INFO_1_1 + pos * 3 + SKILL_TEMP_BONUS_FIELD_OFFSET, SKILL_TEMP_BONUS_SHORT_OFFSET); } + void SetSkillTempBonus(uint32 pos, int16 bonus) { SetInt16Value(PLAYER_SKILL_INFO_1_1 + pos * 3 + SKILL_TEMP_BONUS_FIELD_OFFSET, SKILL_TEMP_BONUS_SHORT_OFFSET, bonus); } + uint16 GetSkillPermBonusByPos(uint32 pos) const { return GetUInt16Value(PLAYER_SKILL_INFO_1_1 + pos * 3 + SKILL_PERM_BONUS_FIELD_OFFSET, SKILL_PERM_BONUS_SHORT_OFFSET); } + void SetSkillPermBonus(uint32 pos, uint16 bonus) { SetUInt16Value(PLAYER_SKILL_INFO_1_1 + pos * 3 + SKILL_PERM_BONUS_FIELD_OFFSET, SKILL_PERM_BONUS_SHORT_OFFSET, bonus); } WorldLocation& GetTeleportDest() { return m_teleport_dest; } uint32 GetTeleportOptions() const { return m_teleport_options; } @@ -2379,7 +2406,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> SkillStatusMap mSkillStatus; - uint32 m_GuildIdInvited; + ObjectGuid::LowType m_GuildIdInvited; uint32 m_ArenaTeamIdInvited; PlayerMails m_mail; diff --git a/src/server/game/Entities/Vehicle/VehicleDefines.h b/src/server/game/Entities/Vehicle/VehicleDefines.h index ba9d4a20076..9b565744b94 100644 --- a/src/server/game/Entities/Vehicle/VehicleDefines.h +++ b/src/server/game/Entities/Vehicle/VehicleDefines.h @@ -120,7 +120,8 @@ struct VehicleTemplate }; typedef std::vector<VehicleAccessory> VehicleAccessoryList; -typedef std::map<uint32, VehicleAccessoryList> VehicleAccessoryContainer; +typedef std::map<ObjectGuid::LowType, VehicleAccessoryList> VehicleAccessoryContainer; +typedef std::map<uint32, VehicleAccessoryList> VehicleAccessoryTemplateContainer; typedef std::map<int8, VehicleSeat> SeatMap; class TransportBase diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp index 53b16101b08..49c0f9f9805 100644 --- a/src/server/game/Events/GameEventMgr.cpp +++ b/src/server/game/Events/GameEventMgr.cpp @@ -516,7 +516,7 @@ void GameEventMgr::LoadFromDB() } } - equiplist.push_back(std::pair<uint32, ModelEquip>(guid, newModelEquipSet)); + equiplist.push_back(std::pair<ObjectGuid::LowType, ModelEquip>(guid, newModelEquipSet)); ++count; } diff --git a/src/server/game/Globals/ObjectAccessor.cpp b/src/server/game/Globals/ObjectAccessor.cpp index 49003603cff..3de4d0e22a5 100644 --- a/src/server/game/Globals/ObjectAccessor.cpp +++ b/src/server/game/Globals/ObjectAccessor.cpp @@ -120,7 +120,7 @@ WorldObject* ObjectAccessor::GetWorldObject(WorldObject const& p, ObjectGuid con case HighGuid::Pet: return GetPet(p, guid); case HighGuid::DynamicObject: return GetDynamicObject(p, guid); case HighGuid::Corpse: return GetCorpse(p, guid); - default: return nullptr; + default: return nullptr; } } diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 9afe36d596b..6fa4f1788d9 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -1479,7 +1479,7 @@ CreatureAddon const* ObjectMgr::GetCreatureAddon(ObjectGuid::LowType lowguid) co CreatureAddon const* ObjectMgr::GetCreatureTemplateAddon(uint32 entry) const { - CreatureAddonContainer::const_iterator itr = _creatureTemplateAddonStore.find(entry); + CreatureTemplateAddonContainer::const_iterator itr = _creatureTemplateAddonStore.find(entry); if (itr != _creatureTemplateAddonStore.end()) return &(itr->second); @@ -3751,7 +3751,7 @@ void ObjectMgr::LoadVehicleAccessories() { Field* fields = result->Fetch(); - uint32 uiGUID = fields[0].GetUInt32(); + ObjectGuid::LowType uiGUID = fields[0].GetUInt32(); uint32 uiAccessory = fields[1].GetUInt32(); int8 uiSeat = int8(fields[2].GetInt16()); bool bMinion = fields[3].GetBool(); @@ -10334,7 +10334,7 @@ VehicleAccessoryList const* ObjectMgr::GetVehicleAccessoryList(Vehicle* veh) con } // Otherwise return entry-based - VehicleAccessoryContainer::const_iterator itr = _vehicleTemplateAccessoryStore.find(veh->GetCreatureEntry()); + VehicleAccessoryTemplateContainer::const_iterator itr = _vehicleTemplateAccessoryStore.find(veh->GetCreatureEntry()); if (itr != _vehicleTemplateAccessoryStore.end()) return &itr->second; return nullptr; diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 3869bca4a18..ca43d66d9c8 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -1623,7 +1623,7 @@ class TC_GAME_API ObjectMgr SpellScriptsContainer _spellScriptsStore; std::unordered_map<uint32, VehicleTemplate> _vehicleTemplateStore; - VehicleAccessoryContainer _vehicleTemplateAccessoryStore; + VehicleAccessoryTemplateContainer _vehicleTemplateAccessoryStore; VehicleAccessoryContainer _vehicleAccessoryStore; LocaleConstant DBCLocaleIndex; diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 6dad196c884..ca11a2fe24e 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -151,9 +151,8 @@ void Group::SelectNewPartyOrRaidLeader() bool Group::Create(Player* leader) { ObjectGuid leaderGuid = leader->GetGUID(); - ObjectGuid::LowType lowguid = sGroupMgr->GenerateGroupId(); - m_guid = ObjectGuid(HighGuid::Group, lowguid); + m_guid = ObjectGuid(HighGuid::Group, sGroupMgr->GenerateGroupId()); m_leaderGuid = leaderGuid; m_leaderName = leader->GetName(); leader->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_GROUP_LEADER); @@ -2480,11 +2479,6 @@ ObjectGuid Group::GetGUID() const return m_guid; } -ObjectGuid::LowType Group::GetLowGUID() const -{ - return m_guid.GetCounter(); -} - char const* Group::GetLeaderName() const { return m_leaderName.c_str(); diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h index 0ec3abe0b42..ac00ffeab2a 100644 --- a/src/server/game/Groups/Group.h +++ b/src/server/game/Groups/Group.h @@ -217,7 +217,6 @@ class TC_GAME_API Group bool IsCreated() const; ObjectGuid GetLeaderGUID() const; ObjectGuid GetGUID() const; - ObjectGuid::LowType GetLowGUID() const; const char * GetLeaderName() const; LootMethod GetLootMethod() const; ObjectGuid GetLooterGuid() const; diff --git a/src/server/game/Groups/GroupMgr.cpp b/src/server/game/Groups/GroupMgr.cpp index ebcaa0b9485..9ed564537b3 100644 --- a/src/server/game/Groups/GroupMgr.cpp +++ b/src/server/game/Groups/GroupMgr.cpp @@ -117,12 +117,12 @@ void GroupMgr::Update(uint32 diff) void GroupMgr::AddGroup(Group* group) { - GroupStore[group->GetLowGUID()] = group; + GroupStore[group->GetGUID().GetCounter()] = group; } void GroupMgr::RemoveGroup(Group* group) { - GroupStore.erase(group->GetLowGUID()); + GroupStore.erase(group->GetGUID().GetCounter()); } void GroupMgr::LoadGroups() diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index f26b4fc75a8..5598ec01707 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -488,7 +488,7 @@ bool Guild::BankTab::SetItem(CharacterDatabaseTransaction trans, uint8 slotId, I trans->Append(stmt); item->SetGuidValue(ITEM_FIELD_CONTAINED, ObjectGuid::Empty); - item->SetGuidValue(ITEM_FIELD_OWNER, ObjectGuid::Empty); + item->SetOwnerGUID(ObjectGuid::Empty); item->FSetState(ITEM_NEW); item->SaveToDB(trans); // Not in inventory and can be saved standalone } @@ -2190,10 +2190,10 @@ bool Guild::AddMember(CharacterDatabaseTransaction trans, ObjectGuid guid, uint8 // Player cannot be in guild if (player) { - if (player->GetGuildId() != 0) + if (player->GetGuildId()) return false; } - else if (sCharacterCache->GetCharacterGuildIdByGuid(guid) != 0) + else if (sCharacterCache->GetCharacterGuildIdByGuid(guid)) return false; // Remove all player signs from another petitions @@ -2268,7 +2268,6 @@ bool Guild::AddMember(CharacterDatabaseTransaction trans, ObjectGuid guid, uint8 bool Guild::DeleteMember(CharacterDatabaseTransaction trans, ObjectGuid guid, bool isDisbanding, bool isKicked) { - ObjectGuid::LowType lowguid = guid.GetCounter(); Player* player = ObjectAccessor::FindConnectedPlayer(guid); // Guild master can be deleted when loading guild and guid doesn't exist in characters table @@ -2318,7 +2317,7 @@ bool Guild::DeleteMember(CharacterDatabaseTransaction trans, ObjectGuid guid, bo else sCharacterCache->UpdateCharacterGuildId(guid, 0); - _DeleteMemberFromDB(trans, lowguid); + _DeleteMemberFromDB(trans, guid.GetCounter()); if (!isDisbanding) _UpdateAccountsNumber(); diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index cca9216a4af..98adad41a51 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -785,7 +785,7 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder const& holder) pCurrChar->SetGuildRank(0); } - if (pCurrChar->GetGuildId() != 0) + if (pCurrChar->GetGuildId()) { if (Guild* guild = sGuildMgr->GetGuildById(pCurrChar->GetGuildId())) guild->SendLoginInfo(this); diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp index b6cb6a510aa..951a5cfe808 100644 --- a/src/server/game/Handlers/MailHandler.cpp +++ b/src/server/game/Handlers/MailHandler.cpp @@ -621,7 +621,7 @@ void WorldSession::HandleQueryNextMailTime(WorldPackets::Mail::MailQueryNextMail result.NextMailTime = 0.0f; time_t now = GameTime::GetGameTime(); - std::set<uint32> sentSenders; + std::set<ObjectGuid::LowType> sentSenders; for (Mail* m : _player->GetMails()) { // must be not checked yet diff --git a/src/server/game/Maps/TransportMgr.cpp b/src/server/game/Maps/TransportMgr.cpp index bd5b12e3e7e..e93a7864fe2 100644 --- a/src/server/game/Maps/TransportMgr.cpp +++ b/src/server/game/Maps/TransportMgr.cpp @@ -76,6 +76,9 @@ void TransportMgr::LoadTransportTemplates() continue; } + if (!goInfo->moTransport.taxiPathId) + continue; + // paths are generated per template, saves us from generating it again in case of instanced transports TransportTemplate& transport = _transportTemplates[entry]; transport.entry = entry; diff --git a/src/server/scripts/Commands/cs_list.cpp b/src/server/scripts/Commands/cs_list.cpp index 56e5dd52642..1f10ced34e1 100644 --- a/src/server/scripts/Commands/cs_list.cpp +++ b/src/server/scripts/Commands/cs_list.cpp @@ -242,9 +242,9 @@ public: do { Field* fields = result->Fetch(); - ObjectGuid::LowType itemGuid = fields[0].GetUInt32(); - ObjectGuid::LowType itemSender = fields[1].GetUInt32(); - uint32 itemReceiver = fields[2].GetUInt32(); + ObjectGuid::LowType itemGuid = fields[0].GetUInt32(); + ObjectGuid::LowType itemSender = fields[1].GetUInt32(); + ObjectGuid::LowType itemReceiver = fields[2].GetUInt32(); uint32 itemSenderAccountId = fields[3].GetUInt32(); std::string itemSenderName = fields[4].GetString(); uint32 itemReceiverAccount = fields[5].GetUInt32(); @@ -559,9 +559,9 @@ public: { Field* queryFields = queryResult->Fetch(); uint32 messageId = queryFields[0].GetUInt32(); - uint32 senderId = queryFields[1].GetUInt32(); + ObjectGuid::LowType senderId = queryFields[1].GetUInt32(); std::string sender = queryFields[2].GetString(); - uint32 receiverId = queryFields[3].GetUInt32(); + ObjectGuid::LowType receiverId = queryFields[3].GetUInt32(); std::string receiver = queryFields[4].GetString(); std::string subject = queryFields[5].GetString(); uint64 deliverTime = queryFields[6].GetUInt32(); diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index e1192f71159..474296a6a2f 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -1675,7 +1675,7 @@ public: char const* zoneName = nullptr; // Guild data print variables defined so that they exist, but are not necessarily used - uint32 guildId = 0; + ObjectGuid::LowType guildId = 0; uint8 guildRankId = 0; std::string guildName; std::string guildRank; @@ -1819,7 +1819,7 @@ public: ObjectGuid::LowType gguid = fields[1].GetUInt32(); // We check if have a guild for the person, so we might not require to query it at all xptotal = sObjectMgr->GetXPForLevel(level); - if (gguid != 0) + if (gguid) { // Guild Data - an own query, because it may not happen. stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER_EXTENDED); diff --git a/src/server/scripts/Commands/cs_wp.cpp b/src/server/scripts/Commands/cs_wp.cpp index 2945c116ab7..047d87b889c 100644 --- a/src/server/scripts/Commands/cs_wp.cpp +++ b/src/server/scripts/Commands/cs_wp.cpp @@ -847,7 +847,7 @@ public: do { Field* fields = result2->Fetch(); - uint32 wpguid = fields[0].GetUInt32(); + ObjectGuid::LowType wpguid = fields[0].GetUInt32(); if (!Creature::DeleteFromDB(wpguid)) { handler->PSendSysMessage(LANG_WAYPOINT_NOTREMOVED, wpguid); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp index 16e85d6804a..530b9d39a1c 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp @@ -656,7 +656,7 @@ struct npc_spinestalker : public ScriptedAI // Increase add count if (!me->isDead()) { - _instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade + _instance->SetData64(DATA_SINDRAGOSA_FROSTWYRMS, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade Reset(); } } @@ -678,7 +678,7 @@ struct npc_spinestalker : public ScriptedAI void JustAppeared() override { ScriptedAI::JustAppeared(); - _instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade + _instance->SetData64(DATA_SINDRAGOSA_FROSTWYRMS, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade } void JustDied(Unit* /*killer*/) override @@ -784,7 +784,7 @@ struct npc_rimefang_icc : public ScriptedAI // Increase add count if (!me->isDead()) { - _instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade + _instance->SetData64(DATA_SINDRAGOSA_FROSTWYRMS, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade Reset(); } } @@ -806,7 +806,7 @@ struct npc_rimefang_icc : public ScriptedAI void JustAppeared() override { ScriptedAI::JustAppeared(); - _instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade + _instance->SetData64(DATA_SINDRAGOSA_FROSTWYRMS, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade } void JustDied(Unit* /*killer*/) override @@ -944,7 +944,7 @@ struct npc_sindragosa_trash : public ScriptedAI if (!me->isDead()) { if (me->GetEntry() == NPC_FROSTWING_WHELP) - _instance->SetData(_frostwyrmId, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade + _instance->SetData64(_frostwyrmId, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade Reset(); } } @@ -967,7 +967,7 @@ struct npc_sindragosa_trash : public ScriptedAI // Increase add count if (me->GetEntry() == NPC_FROSTWING_WHELP) - _instance->SetData(_frostwyrmId, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade + _instance->SetData64(_frostwyrmId, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade } void SetData(uint32 type, uint32 data) override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp index 339406ae897..8cbd1263d76 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp @@ -1060,15 +1060,6 @@ class instance_icecrown_citadel : public InstanceMapScript case DATA_ORB_WHISPERER_ACHIEVEMENT: IsOrbWhispererEligible = data ? true : false; break; - case DATA_SINDRAGOSA_FROSTWYRMS: - FrostwyrmGUIDs.insert(data); - break; - case DATA_SPINESTALKER: - SpinestalkerTrash.insert(data); - break; - case DATA_RIMEFANG: - RimefangTrash.insert(data); - break; case DATA_COLDFLAME_JETS: ColdflameJetsState = data; if (ColdflameJetsState == DONE) @@ -1138,6 +1129,24 @@ class instance_icecrown_citadel : public InstanceMapScript } } + void SetData64(uint32 type, uint64 data) override + { + switch (type) + { + case DATA_SINDRAGOSA_FROSTWYRMS: + FrostwyrmGUIDs.insert(data); + break; + case DATA_SPINESTALKER: + SpinestalkerTrash.insert(data); + break; + case DATA_RIMEFANG: + RimefangTrash.insert(data); + break; + default: + break; + } + } + bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target*/, uint32 /*miscvalue1*/) override { switch (criteria_id) @@ -1540,9 +1549,9 @@ class instance_icecrown_citadel : public InstanceMapScript Team TeamInInstance; uint32 ColdflameJetsState; uint32 UpperSpireTeleporterActiveState; - std::unordered_set<uint32> FrostwyrmGUIDs; - std::unordered_set<uint32> SpinestalkerTrash; - std::unordered_set<uint32> RimefangTrash; + std::unordered_set<ObjectGuid::LowType> FrostwyrmGUIDs; + std::unordered_set<ObjectGuid::LowType> SpinestalkerTrash; + std::unordered_set<ObjectGuid::LowType> RimefangTrash; uint32 BloodQuickeningState; uint32 HeroicAttempts; uint16 BloodQuickeningMinutes; diff --git a/src/server/scripts/World/action_ip_logger.cpp b/src/server/scripts/World/action_ip_logger.cpp index 71550d2a800..c13e1720034 100644 --- a/src/server/scripts/World/action_ip_logger.cpp +++ b/src/server/scripts/World/action_ip_logger.cpp @@ -98,7 +98,6 @@ class AccountActionIpLogger : public AccountScript // We declare all the required variables uint32 playerGuid = accountId; - ObjectGuid::LowType characterGuid = 0; uint32 realmId = realm.Id.Realm; std::string systemNote = "ERROR"; // "ERROR" is a placeholder here. We change it later. @@ -144,7 +143,7 @@ class AccountActionIpLogger : public AccountScript LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_ALDL_IP_LOGGING); stmt->setUInt32(0, playerGuid); - stmt->setUInt64(1, characterGuid); + stmt->setUInt64(1, 0); stmt->setUInt32(2, realmId); stmt->setUInt8(3, aType); stmt->setUInt32(4, playerGuid); @@ -156,7 +155,7 @@ class AccountActionIpLogger : public AccountScript LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_FACL_IP_LOGGING); stmt->setUInt32(0, playerGuid); - stmt->setUInt64(1, characterGuid); + stmt->setUInt64(1, 0); stmt->setUInt32(2, realmId); stmt->setUInt8(3, aType); stmt->setUInt32(4, playerGuid); diff --git a/src/server/shared/SharedDefines.h b/src/server/shared/SharedDefines.h index 8da68af81c1..db3200c0ee1 100644 --- a/src/server/shared/SharedDefines.h +++ b/src/server/shared/SharedDefines.h @@ -110,15 +110,24 @@ enum Races // max+1 for player race #define MAX_RACES 12 -#define RACEMASK_ALL_PLAYABLE \ - ((1<<(RACE_HUMAN-1)) |(1<<(RACE_ORC-1)) |(1<<(RACE_DWARF-1)) | \ - (1<<(RACE_NIGHTELF-1))|(1<<(RACE_UNDEAD_PLAYER-1))|(1<<(RACE_TAUREN-1)) | \ - (1<<(RACE_GNOME-1)) |(1<<(RACE_TROLL-1)) |(1<<(RACE_BLOODELF-1))| \ +#define RACEMASK_ALL_PLAYABLE \ + ((1<<(RACE_HUMAN-1)) | \ + (1<<(RACE_ORC-1)) | \ + (1<<(RACE_DWARF-1)) | \ + (1<<(RACE_NIGHTELF-1)) | \ + (1<<(RACE_UNDEAD_PLAYER-1)) | \ + (1<<(RACE_TAUREN-1)) | \ + (1<<(RACE_GNOME-1)) | \ + (1<<(RACE_TROLL-1)) | \ + (1<<(RACE_BLOODELF-1)) | \ (1<<(RACE_DRAENEI-1))) -#define RACEMASK_ALLIANCE \ - ((1<<(RACE_HUMAN-1)) | (1<<(RACE_DWARF-1)) | (1<<(RACE_NIGHTELF-1)) | \ - (1<<(RACE_GNOME-1)) | (1<<(RACE_DRAENEI-1))) +#define RACEMASK_ALLIANCE \ + ((1<<(RACE_HUMAN-1)) | \ + (1<<(RACE_DWARF-1)) | \ + (1<<(RACE_NIGHTELF-1)) | \ + (1<<(RACE_GNOME-1)) | \ + (1<<(RACE_DRAENEI-1))) #define RACEMASK_HORDE RACEMASK_ALL_PLAYABLE & ~RACEMASK_ALLIANCE @@ -143,11 +152,17 @@ enum Classes // max+1 for player class #define MAX_CLASSES 12 -#define CLASSMASK_ALL_PLAYABLE \ - ((1<<(CLASS_WARRIOR-1))|(1<<(CLASS_PALADIN-1))|(1<<(CLASS_HUNTER-1))| \ - (1<<(CLASS_ROGUE-1)) |(1<<(CLASS_PRIEST-1)) |(1<<(CLASS_SHAMAN-1))| \ - (1<<(CLASS_MAGE-1)) |(1<<(CLASS_WARLOCK-1))|(1<<(CLASS_DRUID-1)) | \ - (1<<(CLASS_DEATH_KNIGHT-1))) +#define CLASSMASK_ALL_PLAYABLE \ + ((1<<(CLASS_WARRIOR-1)) | \ + (1<<(CLASS_PALADIN-1)) | \ + (1<<(CLASS_HUNTER-1)) | \ + (1<<(CLASS_ROGUE-1)) | \ + (1<<(CLASS_PRIEST-1)) | \ + (1<<(CLASS_DEATH_KNIGHT-1)) | \ + (1<<(CLASS_SHAMAN-1)) | \ + (1<<(CLASS_MAGE-1)) | \ + (1<<(CLASS_WARLOCK-1)) | \ + (1<<(CLASS_DRUID-1))) #define MAX_TALENT_TREES 3 @@ -196,7 +211,7 @@ enum UnitClass #define CLASSMASK_ALL_CREATURES ((1<<(UNIT_CLASS_WARRIOR-1)) | (1<<(UNIT_CLASS_PALADIN-1)) | (1<<(UNIT_CLASS_ROGUE-1)) | (1<<(UNIT_CLASS_MAGE-1))) -#define CLASSMASK_WAND_USERS ((1<<(CLASS_PRIEST-1))|(1<<(CLASS_MAGE-1))|(1<<(CLASS_WARLOCK-1))) +#define CLASSMASK_WAND_USERS ((1<<(CLASS_PRIEST-1)) | (1<<(CLASS_MAGE-1)) | (1<<(CLASS_WARLOCK-1))) #define PLAYER_MAX_BATTLEGROUND_QUEUES 2 |