wartab

Untitled

Aug 30th, 2020
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let experienceYields = {
  2.     "Porygon2": 180,
  3.     "Hypno": 169,
  4.     "Meowth": 58,
  5.     "Rowlet": 64,
  6.     "Dartrix": 147,
  7.     // ...
  8. };
  9.  
  10. function gamefreakSqrt(n) {
  11.     let actualSqrt = Math.sqrt(n);
  12.     let lowerBound = Math.floor(actualSqrt);
  13.     if(lowerBound * lowerBound === n) {
  14.         return lowerBound * 4096;
  15.     }
  16.  
  17.     let bestCoeff = 0;
  18.     let bestDistance = actualSqrt - lowerBound;
  19.     for (let i = 1; i <= 4096; i++) {
  20.         let check = lowerBound + i / 4096;
  21.         let distance = Math.abs(actualSqrt - check);
  22.         if (distance < bestDistance) {
  23.             bestCoeff = i;
  24.             bestDistance = distance;
  25.         }
  26.     }
  27.     return lowerBound * 4096 + bestCoeff;
  28. }
  29.  
  30. function getExperienceForKill(foeName, foeLevel, level, luckyEgg, affection, rotoExp, expShare, tradeExp, evolutionDue, expScaling, gen7, wild) {
  31.     let expYield = experienceYields[foeName];
  32.  
  33.     if (typeof expYield === "undefined") {
  34.         throw new Error("Unknown Pokémon: " + foeName);
  35.     }
  36.  
  37.     let log = false;
  38.  
  39.     if (expScaling) {
  40.         let x = foeLevel + foeLevel + 10;
  41.         let y = foeLevel + level + 10;
  42.  
  43.         let x2 = x * x;
  44.         let y2 = y * y;
  45.  
  46.         let z = Math.floor(expYield * foeLevel / 5);
  47.         if (expShare) {
  48.             z = Math.floor(z / 2);
  49.         }
  50.  
  51.         let exp = Math.floor(((gamefreakSqrt(x) * x2) * z) / ((gamefreakSqrt(y) * y2))) + 1;
  52.  
  53.         if (log) {
  54.             console.log("Exp: " + exp);
  55.         }
  56.  
  57.         // console.log(exp);
  58.  
  59.         if (!gen7 && !wild) {
  60.             exp =  Math.floor(exp * 1.5);
  61.         }
  62.  
  63.         if (tradeExp) {
  64.             exp = Math.floor(exp * 1.5);
  65.         }
  66.  
  67.         // if (luckyEgg) {
  68.         //     exp = Math.floor(exp * 1.5);
  69.         // }
  70.  
  71.         if (affection) {
  72.             exp = exp * 4915;
  73.             exp = Math.round(exp / 4096)
  74.         }
  75.  
  76.         if (evolutionDue) {
  77.             exp = exp * 4915;
  78.             exp = Math.round(exp / 4096)
  79.         }
  80.  
  81.         if (rotoExp) {
  82.             exp = exp * 150;
  83.             exp = Math.floor(exp / 100);
  84.         }
  85.  
  86.         return Math.floor(exp);
  87.     } else {
  88.         let exp = Math.floor(expYield * foeLevel / 7);
  89.  
  90.         if (log) {
  91.             console.log("Exp: " + exp);
  92.         }
  93.  
  94.         if (!gen7 && !wild) {
  95.             exp =  Math.floor(exp * 1.5);
  96.         }
  97.  
  98.         if (tradeExp) {
  99.             exp = Math.floor(exp * 1.5);
  100.         }
  101.  
  102.         if (affection) {
  103.             exp = exp * 4915;
  104.             exp = Math.round(exp / 4096)
  105.         }
  106.  
  107.         if (evolutionDue) {
  108.             exp = exp * 4915;
  109.             exp = Math.round(exp / 4096)
  110.         }
  111.  
  112.         return Math.floor(exp);
  113.     }
  114. }
Add Comment
Please, Sign In to add comment