Advertisement
Kaphotics

catch exp bonus

Nov 28th, 2018
1,463
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.54 KB | None | 0 0
  1. long double __fastcall sub_710082D6F0(__int64 *a1, char a2)
  2. {
  3.   long double v2; // q8
  4.   __int64 pkm; // x19
  5.   unsigned __int64 v4; // x8
  6.   unsigned int v5; // w9
  7.   unsigned __int64 v6; // x22
  8.   __int64 v7; // x21
  9.   __int64 v8; // x20
  10.   signed int species; // w0
  11.   __int64 v10; // x20
  12.   int v11; // w0
  13.   unsigned __int64 combo; // x0
  14.   signed __int64 v13; // x8
  15.   unsigned int heightRating; // w0
  16.   double v15; // d1
  17.  
  18.   pkm = *a1;
  19.   if ( *(a1 + 8) )                              // synchronized
  20.   {
  21.     LODWORD(v4) = 0x2000;
  22.   }
  23.   else if ( *(a1 + 16) )                        // technique
  24.   {
  25.     LODWORD(v4) = 0x119A;
  26.   }
  27.   else
  28.   {
  29.     LODWORD(v4) = 0x1000;
  30.   }
  31.   v5 = *(a1 + 3) - 1;
  32.   if ( v5 <= 2 )
  33.     v4 = (qword_7100F86670[v5] * v4 + 2048LL) >> 12;// throw type bonus (0x1400, 0x1800, 0x2000, 0)
  34.   if ( *(a1 + 9) )
  35.     LODWORD(v6) = (0x1800LL * v4 + 2048) >> 12; // first throw
  36.   else
  37.     LODWORD(v6) = v4;
  38.   if ( !(a2 & 1) )
  39.   {
  40.     v7 = *(qword_710160D310 + 152);
  41.     if ( v7 )
  42.       (*(*(v7 + 72) + 16LL))(v7 + 72);
  43.     v8 = *(*(v7 + 88) + 136LL);
  44.     if ( v8 )
  45.       (*(*(v8 + 72) + 16LL))(v8 + 72);
  46.     (*(*(v7 + 72) + 24LL))(v7 + 72);
  47.     species = getSpecies(pkm);
  48.     if ( !GetDexSpeciesFlagSet(v8, species) )
  49.       v6 = (0x119ALL * v6 + 0x800) >> 12;       // new species
  50.     if ( v8 )
  51.       (*(*(v8 + 72) + 24LL))(v8 + 72);
  52.   }
  53.   v10 = *(qword_710160D310 + 152);
  54.   if ( v10 )
  55.     (*(*(v10 + 72) + 16LL))(v10 + 72);
  56.   v11 = sub_7100134AE0(v10);
  57.   combo = sub_71001349C0(v10, v11);             // combo check
  58.   if ( combo > 40 )
  59.   {
  60.     v13 = 0x3000LL;                             // 3
  61. LABEL_32:
  62.     v6 = (v13 * v6 + 0x800) >> 12;
  63.     goto LABEL_33;
  64.   }
  65.   if ( combo > 30 )
  66.   {
  67.     v13 = 0x2800LL;                             // 2.5
  68.     goto LABEL_32;
  69.   }
  70.   if ( combo > 20 )
  71.   {
  72.     v13 = 0x2000LL;                             // 2
  73.     goto LABEL_32;
  74.   }
  75.   if ( combo > 10 )
  76.   {
  77.     v13 = 0x1800LL;                             // 1.5
  78.     goto LABEL_32;
  79.   }
  80.   if ( combo >= 2 )
  81.   {
  82.     v13 = 0x119ALL;                             // 1.1
  83.     goto LABEL_32;
  84.   }
  85. LABEL_33:
  86.   heightRating = getHeightClass(pkm);// height class (0x4000, 0x1800, 0x4000, 0x1800, 0x4000, middle unused)
  87.   if ( heightRating <= 4 && (27u >> heightRating) & 1 )
  88.     v6 = (qword_7100F86690[heightRating] * v6 + 0x800LL) >> 12;
  89.   v15 = (v6 & 0xFFF) * 0.000244140625;
  90.   if ( !(v6 & 0xFFF) )
  91.     v15 = 0.0;
  92.   *&v2 = ((v15 + (v6 >> 12)) * 10.0) / 10.0;
  93.   if ( v10 )
  94.     (*(*(v10 + 72) + 24LL))(v10 + 72);
  95.   return v2;
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement