aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <none@none>2010-08-10 13:26:07 +0200
committerShauren <none@none>2010-08-10 13:26:07 +0200
commit88965d94195dd8e593aed73797cd2bfd4f0b208d (patch)
tree0c46262f39d9a78c6b80bd4df47b4f5e4545fe18
parent719f770a563b07cbf56984d644b9d40ea540da89 (diff)
Fixed honor points and arena points displaying in currency tab
Currencies lost (spent all in vendor) are not removed from known currencies tab, they now display 0 count --HG-- branch : trunk
-rw-r--r--src/server/game/Chat/Commands/Level3.cpp2
-rw-r--r--src/server/game/Entities/Player/Player.cpp39
-rw-r--r--src/server/game/Entities/Player/Player.h22
-rw-r--r--src/server/game/Server/Protocol/Handlers/MiscHandler.cpp2
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));