Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int32 Player::ApplyRatingDiminishingReturn(uint8 cr, int32 value)
- {
- int32 returnVal = value;
- float ratio = GetRatioForCombatRating(cr);
- float ratioCap[] = { 25.f, 2.f, 40.f, 4.f, 60.f, 8.f, 80.f, 16.f };
- for(int8 i = 0; i < (sizeof(ratioCap)/sizeof(int)); i+=2)
- {
- float pctVal = ratio * ((float)returnVal);
- if(pctVal > ratioCap[i])
- {
- // Find the distance between our pct and the ratio cap
- float pctDiff = pctVal-ratioCap[i];
- // Diff val is the distance between us and the value representing our ratio cap
- int32 diffVal = returnVal-(ratioCap[i-1]/ratio);
- // The amount to remove is the scale against our removal value
- int32 removalVal = float2int32(ceil(((float)diffVal)/ratioCap[i+1]));
- returnVal -= removalVal;
- }
- }
- return returnVal;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement