//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;