Advertisement
Guest User

Untitled

a guest
Feb 25th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.88 KB | None | 0 0
  1.  
  2. int32 Player::ApplyRatingDiminishingReturn(uint8 cr, int32 value)
  3. {
  4.     int32 returnVal = value;
  5.     float ratio = GetRatioForCombatRating(cr);
  6.     float ratioCap[] = { 25.f, 2.f, 40.f, 4.f, 60.f, 8.f, 80.f, 16.f };
  7.     for(int8 i = 0; i < (sizeof(ratioCap)/sizeof(int)); i+=2)
  8.     {
  9.         float pctVal = ratio * ((float)returnVal);
  10.         if(pctVal > ratioCap[i])
  11.         {
  12.             // Find the distance between our pct and the ratio cap
  13.             float pctDiff = pctVal-ratioCap[i];
  14.             // Diff val is the distance between us and the value representing our ratio cap
  15.             int32 diffVal = returnVal-(ratioCap[i-1]/ratio);
  16.             // The amount to remove is the scale against our removal value
  17.             int32 removalVal = float2int32(ceil(((float)diffVal)/ratioCap[i+1]));
  18.             returnVal -= removalVal;
  19.         }
  20.     }
  21.  
  22.     return returnVal;
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement