diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Chat/Commands/Level3.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 39 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 22 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Handlers/MiscHandler.cpp | 2 |
4 files changed, 37 insertions, 28 deletions
diff --git a/src/server/game/Chat/Commands/Level3.cpp b/src/server/game/Chat/Commands/Level3.cpp index c2ff7d19ec4..c4fe670f0f2 100644 --- a/src/server/game/Chat/Commands/Level3.cpp +++ b/src/server/game/Chat/Commands/Level3.cpp @@ -4853,7 +4853,7 @@ bool ChatHandler::HandleResetHonorCommand (const char * args) target->SetUInt32Value(PLAYER_FIELD_KILLS, 0); target->SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, 0); - target->SetUInt32Value(PLAYER_FIELD_HONOR_CURRENCY, 0); + target->SetHonorPoints(0); target->SetUInt32Value(PLAYER_FIELD_TODAY_CONTRIBUTION, 0); target->SetUInt32Value(PLAYER_FIELD_YESTERDAY_CONTRIBUTION, 0); target->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 93caebab6f6..6ba33bb1517 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -748,9 +748,9 @@ bool Player::Create(uint32 guidlow, const std::string& name, uint8 race, uint8 c InitRunes(); - SetUInt32Value (PLAYER_FIELD_COINAGE, sWorld.getConfig(CONFIG_START_PLAYER_MONEY)); - SetUInt32Value (PLAYER_FIELD_HONOR_CURRENCY, sWorld.getConfig(CONFIG_START_HONOR_POINTS)); - SetUInt32Value (PLAYER_FIELD_ARENA_CURRENCY, sWorld.getConfig(CONFIG_START_ARENA_POINTS)); + SetUInt32Value(PLAYER_FIELD_COINAGE, sWorld.getConfig(CONFIG_START_PLAYER_MONEY)); + SetHonorPoints(sWorld.getConfig(CONFIG_START_HONOR_POINTS)); + SetArenaPoints(sWorld.getConfig(CONFIG_START_ARENA_POINTS)); // start with every map explored if (sWorld.getConfig(CONFIG_START_ALL_EXPLORED)) @@ -6837,12 +6837,12 @@ void Player::ModifyHonorPoints(int32 value) if (value < 0) { if (GetHonorPoints() > sWorld.getConfig(CONFIG_MAX_HONOR_POINTS)) - SetUInt32Value(PLAYER_FIELD_HONOR_CURRENCY, sWorld.getConfig(CONFIG_MAX_HONOR_POINTS) + value); + SetHonorPoints(sWorld.getConfig(CONFIG_MAX_HONOR_POINTS) + value); else - SetUInt32Value(PLAYER_FIELD_HONOR_CURRENCY, GetHonorPoints() > uint32(-value) ? GetHonorPoints() + value : 0); + SetHonorPoints(GetHonorPoints() > uint32(-value) ? GetHonorPoints() + value : 0); } else - SetUInt32Value(PLAYER_FIELD_HONOR_CURRENCY, GetHonorPoints() < sWorld.getConfig(CONFIG_MAX_HONOR_POINTS) - value ? GetHonorPoints() + value : sWorld.getConfig(CONFIG_MAX_HONOR_POINTS)); + SetHonorPoints(GetHonorPoints() < sWorld.getConfig(CONFIG_MAX_HONOR_POINTS) - value ? GetHonorPoints() + value : sWorld.getConfig(CONFIG_MAX_HONOR_POINTS)); } void Player::ModifyArenaPoints(int32 value) @@ -6850,12 +6850,12 @@ void Player::ModifyArenaPoints(int32 value) if (value < 0) { if (GetArenaPoints() > sWorld.getConfig(CONFIG_MAX_ARENA_POINTS)) - SetUInt32Value(PLAYER_FIELD_ARENA_CURRENCY, sWorld.getConfig(CONFIG_MAX_ARENA_POINTS) + value); + SetArenaPoints(sWorld.getConfig(CONFIG_MAX_ARENA_POINTS) + value); else - SetUInt32Value(PLAYER_FIELD_ARENA_CURRENCY, GetArenaPoints() > uint32(-value) ? GetArenaPoints() + value : 0); + SetArenaPoints(GetArenaPoints() > uint32(-value) ? GetArenaPoints() + value : 0); } else - SetUInt32Value(PLAYER_FIELD_ARENA_CURRENCY, GetArenaPoints() < sWorld.getConfig(CONFIG_MAX_ARENA_POINTS) - value ? GetArenaPoints() + value : sWorld.getConfig(CONFIG_MAX_ARENA_POINTS)); + SetArenaPoints(GetArenaPoints() < sWorld.getConfig(CONFIG_MAX_ARENA_POINTS) - value ? GetArenaPoints() + value : sWorld.getConfig(CONFIG_MAX_ARENA_POINTS)); } uint32 Player::GetGuildIdFromDB(uint64 guid) @@ -11458,7 +11458,7 @@ Item* Player::_StoreItem(uint16 pos, Item *pItem, uint32 count, bool clone, bool // need update known currency if (slot >= CURRENCYTOKEN_SLOT_START && slot < CURRENCYTOKEN_SLOT_END) - UpdateKnownCurrencies(pItem->GetEntry(), true); + AddKnownCurrency(pItem->GetEntry()); if (IsInWorld() && update) { @@ -11765,9 +11765,6 @@ void Player::RemoveItem(uint8 bag, uint8 slot, bool update) } } } - // need update known currency - else if (slot >= CURRENCYTOKEN_SLOT_START && slot < CURRENCYTOKEN_SLOT_END) - UpdateKnownCurrencies(pItem->GetEntry(), false); m_items[slot] = NULL; SetUInt64Value(PLAYER_FIELD_INV_SLOT_HEAD + (slot * 2), 0); @@ -11892,9 +11889,6 @@ void Player::DestroyItem(uint8 bag, uint8 slot, bool update) // equipment visual show SetVisibleItemSlot(slot, NULL); } - // need update known currency - else if (slot >= CURRENCYTOKEN_SLOT_START && slot < CURRENCYTOKEN_SLOT_END) - UpdateKnownCurrencies(pItem->GetEntry(), false); m_items[slot] = NULL; } @@ -15937,7 +15931,7 @@ bool Player::LoadFromDB(uint32 guid, SqlQueryHolder *holder) if (arena_currency > sWorld.getConfig(CONFIG_MAX_ARENA_POINTS)) arena_currency = sWorld.getConfig(CONFIG_MAX_ARENA_POINTS); - SetUInt32Value(PLAYER_FIELD_ARENA_CURRENCY, arena_currency); + SetArenaPoints(arena_currency); // check arena teams integrity for (uint32 arena_slot = 0; arena_slot < MAX_ARENA_SLOT; ++arena_slot) @@ -15955,7 +15949,7 @@ bool Player::LoadFromDB(uint32 guid, SqlQueryHolder *holder) SetArenaTeamInfoField(arena_slot, ArenaTeamInfoType(j), 0); } - SetUInt32Value(PLAYER_FIELD_HONOR_CURRENCY, fields[40].GetUInt32()); + SetHonorPoints(fields[40].GetUInt32()); SetUInt32Value(PLAYER_FIELD_TODAY_CONTRIBUTION, fields[41].GetUInt32()); SetUInt32Value(PLAYER_FIELD_YESTERDAY_CONTRIBUTION, fields[42].GetUInt32()); SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, fields[43].GetUInt32()); @@ -23115,15 +23109,10 @@ void Player::LearnPetTalent(uint64 petGuid, uint32 talentId, uint32 talentRank) pet->SetFreeTalentPoints(CurTalentPoints - (talentRank - curtalent_maxrank + 1)); } -void Player::UpdateKnownCurrencies(uint32 itemId, bool apply) +void Player::AddKnownCurrency(uint32 itemId) { if (CurrencyTypesEntry const* ctEntry = sCurrencyTypesStore.LookupEntry(itemId)) - { - if (apply) - SetFlag64(PLAYER_FIELD_KNOWN_CURRENCIES,(1LL << (ctEntry->BitIndex-1))); - else - RemoveFlag64(PLAYER_FIELD_KNOWN_CURRENCIES,(1LL << (ctEntry->BitIndex-1))); - } + SetFlag64(PLAYER_FIELD_KNOWN_CURRENCIES, (1LL << (ctEntry->BitIndex-1))); } void Player::UpdateFallInformationIfNeed(MovementInfo const& minfo,uint16 opcode) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 43aaad82a78..418d4c82cc4 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -844,6 +844,12 @@ enum CharDeleteMethod // the name gets freed up and appears as deleted ingame }; +enum CurrencyItems +{ + ITEM_HONOR_POINTS_ID = 43308, + ITEM_ARENA_POINTS_ID = 43307 +}; + class PlayerTaxi { public: @@ -1938,6 +1944,18 @@ class Player : public Unit, public GridObject<Player> void ModifyHonorPoints(int32 value); void ModifyArenaPoints(int32 value); uint32 GetMaxPersonalArenaRatingRequirement(uint32 minarenaslot); + void SetHonorPoints(uint32 value) + { + SetUInt32Value(PLAYER_FIELD_HONOR_CURRENCY, value); + if (value) + AddKnownCurrency(ITEM_HONOR_POINTS_ID); // Arena Points + } + void SetArenaPoints(uint32 value) + { + SetUInt32Value(PLAYER_FIELD_ARENA_CURRENCY, value); + if (value) + AddKnownCurrency(ITEM_ARENA_POINTS_ID); // Arena Points + } //End of PvP System @@ -2596,7 +2614,9 @@ class Player : public Unit, public GridObject<Player> void SendRefundInfo(Item* item); void RefundItem(Item* item); - void UpdateKnownCurrencies(uint32 itemId, bool apply); + // know currencies are not removed at any point (0 displayed) + void AddKnownCurrency(uint32 itemId); + int32 CalculateReputationGain(uint32 creatureOrQuestLevel, int32 rep, int32 faction, bool for_quest, bool noQuestBonus = false); void AdjustQuestReqItemCount(Quest const* pQuest, QuestStatusData& questStatusData); diff --git a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp index f076a14febb..8acea80be7a 100644 --- a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp @@ -1250,7 +1250,7 @@ void WorldSession::HandleInspectHonorStatsOpcode(WorldPacket& recv_data) WorldPacket data(MSG_INSPECT_HONOR_STATS, 8+1+4*4); data << uint64(player->GetGUID()); - data << uint8(player->GetUInt32Value(PLAYER_FIELD_HONOR_CURRENCY)); + data << uint8(player->GetHonorPoints()); data << uint32(player->GetUInt32Value(PLAYER_FIELD_KILLS)); data << uint32(player->GetUInt32Value(PLAYER_FIELD_TODAY_CONTRIBUTION)); data << uint32(player->GetUInt32Value(PLAYER_FIELD_YESTERDAY_CONTRIBUTION)); |