diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Item/Container/Bag.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Entities/Item/Item.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 157 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 30 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectAccessor.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Guilds/Guild.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Maps/TransportMgr.cpp | 3 | ||||
-rw-r--r-- | src/server/shared/SharedDefines.h | 41 |
8 files changed, 128 insertions, 115 deletions
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/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index b1602d30929..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, @@ -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) @@ -18453,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()); @@ -18467,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()) { @@ -18483,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()); @@ -19986,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) { @@ -24895,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; @@ -24919,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()); } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 9b4d0e89dbb..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 @@ -1793,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; } 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/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 9f65db7d038..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 } 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/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 |