rendered paste body //Store Total Honor points...
SetTotalHonor(total_honor);
//RIGHEST RANK
//If the new rank is highest then the old one, then m_highest_rank is updated
if( CalculateHonorRank(total_honor) > GetHonorHighestRank() )
{
SetHonorHighestRank( CalculateHonorRank(total_honor) );
}
//RATING
SetHonorRating( MaNGOS::Honor::CalculeRating(this) );
//STANDING
SetHonorLastWeekStanding( MaNGOS::Honor::CalculeStanding(this) );
//TODO Fix next rank bar... it is not working fine! For while it be set with the total honor points...
//NEXT RANK BAR
//PLAYER_FIELD_HONOR_BAR
SetUInt32Value(PLAYER_FIELD_BYTES2, (uint32)( (total_honor < 0) ? 0: total_honor) );
//RANK (Patent)
if( CalculateHonorRank(total_honor) )
SetUInt32Value(PLAYER_BYTES_3, (( CalculateHonorRank(total_honor) << 24) + 0x04000000) + (m_drunk & 0xFFFE) + getGender());
else
SetUInt32Value(PLAYER_BYTES_3, (m_drunk & 0xFFFE) + getGender());
//TODAY
SetUInt32Value(PLAYER_FIELD_SESSION_KILLS, (today_dishonorableKills << 16) + today_honorableKills );
//YESTERDAY
SetUInt32Value(PLAYER_FIELD_YESTERDAY_KILLS, yesterdayKills);
SetUInt32Value(PLAYER_FIELD_YESTERDAY_CONTRIBUTION, (uint32)yesterdayHonor);
//THIS WEEK
SetUInt32Value(PLAYER_FIELD_THIS_WEEK_KILLS, thisWeekKills);
SetUInt32Value(PLAYER_FIELD_THIS_WEEK_CONTRIBUTION, (uint32)thisWeekHonor);
//LAST WEEK
SetUInt32Value(PLAYER_FIELD_LAST_WEEK_KILLS, lastWeekKills);
SetUInt32Value(PLAYER_FIELD_LAST_WEEK_CONTRIBUTION, (uint32)lastWeekHonor);
SetUInt32Value(PLAYER_FIELD_LAST_WEEK_RANK, GetHonorLastWeekStanding());
//LIFE TIME
SetUInt32Value(PLAYER_FIELD_SESSION_KILLS, (lifetime_dishonorableKills << 16) + lifetime_honorableKills );
SetUInt32Value(PLAYER_FIELD_LIFETIME_DISHONORABLE_KILLS, lifetime_dishonorableKills);
SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, lifetime_honorableKills);
//TODO: Into what field we need to set it? Fix it!
SetUInt32Value(PLAYER_FIELD_PVP_MEDALS/*???*/, (GetHonorHighestRank() != 0 ? ((GetHonorHighestRank() << 24) + 0x040F0001) : 0) );
}
uint32 Player::GetHonorRank() const
{
return CalculateHonorRank(m_total_honor_points);
}
//What is Player's rank... private, scout...
uint32 Player::CalculateHonorRank(float honor_points) const
{
int rank = 0;
if(honor_points <= 0.00) rank = 0; else
if(honor_points < 2000.00) rank = 1;
else
rank = ( (int)(honor_points / 5000) + 1);
return rank;