int k_level = pPlayer->GetUInt32Value(UNIT_FIELD_LEVEL); int v_level = pVictim->GetUInt32Value(UNIT_FIELD_LEVEL); int k_honor = pPlayer->getHonor(); // or whatever function is :P int v_honor = pVictim->getHonor(); int k_grey = 0; if (k_level > 5 && k_level < 40) { k_grey = k_level - (5 + floor(k_level / 10)); } else { k_grey = k_level - (1 + floor(k_level / 5)); } float diff_level = ((float)(v_level-k_grey)) / ((float)(k_level - k_grey)); if(diff_level > 2) diff_level = 2.0; if(diff_level < 0) diff_level = 0.0; float diff_honor = ((float)v_honor) / ((float)k_honor); if(diff_honor > 3) diff_honor = 3.0; if(diff_honor < 1) diff_honor = 1.0; float honor_points = diff_level * (190 + diff_honor*60); honor_points *= ((float)k_level) / 70.0; honor_points *= World::getSingleton().getRate(RATE_HONOR); return honor_points;