Advertisement
Guest User

Untitled

a guest
Sep 26th, 2013
1,000
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.33 KB | None | 0 0
  1. f64 CGame::get_AimValue(SScore* score)
  2. {
  3.     // Aimrating!
  4.     f64 aimvalue = score->pDiff->get_JumpDifficulty(score->ModValue);
  5.  
  6.     // Combo bonus
  7.     f64 combofactor = 1 + 0.1 * min(1, (double)score->hitobjects / 1500);
  8.     aimvalue *= combofactor;
  9.  
  10.     // Miss penalty
  11.     //value *= pow(max(0, 0.96 - 0.02 * misses), misses);
  12.     aimvalue *= pow(0.97, score->misses);
  13.  
  14.     // Combo scaling
  15.     aimvalue *= min(pow((double)score->maxcombo, 0.8) / pow((double)score->maxcombomap, 0.8), 1);
  16.  
  17.    
  18.     f64 arfactor = 1.0;
  19.     if(score->ar > 10.0)
  20.     {
  21.         arfactor += 0.30 * (score->ar - 10.0);
  22.     }
  23.     else if(score->ar < 8.0)
  24.     {
  25.         // HD is worth more with lower ar!
  26.         if(score->mods[0] == '1')
  27.         {
  28.             arfactor += 0.02 * (8.0 - score->ar);
  29.         }
  30.         else
  31.         {
  32.             arfactor += 0.01 * (8.0 - score->ar);
  33.         }
  34.     }
  35.  
  36.     aimvalue *= arfactor;
  37.  
  38.     // HD
  39.     if(score->mods[0] == '1')
  40.     {
  41.         aimvalue *= 1.18;
  42.     }
  43.  
  44.     // FL
  45.     if(score->mods[1] == '1')
  46.     {
  47.         aimvalue *= 1.36;
  48.     }
  49.  
  50.  
  51.     aimvalue *= (0.5 + score->acc / 2.0);
  52.     aimvalue *= 0.98 + (pow(score->od, 2) / 2500);
  53.  
  54.     return aimvalue;
  55. }
  56.  
  57. f64 CGame::get_SpeedValue(SScore* score)
  58. {
  59.     // Speedrating
  60.     f64 speedvalue = score->pDiff->get_SpeedDifficulty(score->ModValue);
  61.  
  62.     // Combo bonus
  63.     f64 combofactor = 1 + 0.1 * min(1, (double)score->hitobjects / 1500);
  64.     speedvalue *= combofactor;
  65.  
  66.     // Miss penalty
  67.     //value *= pow(max(0, 0.96 - 0.02 * misses), misses);
  68.     speedvalue *= pow(0.97, score->misses);
  69.  
  70.     // Combo scaling
  71.     speedvalue *= min(pow((double)score->maxcombo, 0.8) / pow((double)score->maxcombomap, 0.8), 1);
  72.  
  73.     speedvalue *= (0.5 + score->acc / 2.0);
  74.     speedvalue *= 0.98 + (pow(score->od, 2) / 2500);
  75.  
  76.     return speedvalue;
  77. }
  78.  
  79. f64 CGame::get_AccValue(SScore* score)
  80. {
  81.     // Acc
  82.     f64 acc;
  83.     s32 hitcircles = score->pDiff->get_HitCircles();
  84.     if(hitcircles > 0)
  85.     {
  86.         acc = (f64)((score->amount300 - (score->hitobjects - hitcircles)) * 6 + score->amount100 * 2 + score->amount50) / (hitcircles * 6 + 1);
  87.     }
  88.     else
  89.     {
  90.         acc = 0;
  91.     }
  92.  
  93.     if(acc < 0)
  94.     {
  95.         acc = 0;
  96.     }
  97.  
  98.     f64 accvalue = pow(pow(1.3, score->od) * pow(acc, 15) / 2, 1.6) * 8.5;
  99.  
  100.     // Bonus for many hitcircles
  101.     f64 combofactor = min(1.3, pow((double)hitcircles / 1000, 0.4));
  102.     accvalue *= combofactor;
  103.  
  104.     // HD
  105.     if(score->mods[0] == '1')
  106.     {
  107.         accvalue *= 1.02;
  108.     }
  109.  
  110.     // FL
  111.     if(score->mods[1] == '1')
  112.     {
  113.         accvalue *= 1.02;
  114.     }
  115.  
  116.     return accvalue;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement