Advertisement
Kaphotics

Field::Encount::PokeSet::EncountProbCalc

Mar 28th, 2017
774
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. unsigned int __fastcall Field::Encount::PokeSet::EncountProbCalc(int a1, unsigned int EncounterProbability, Field::EventPokemonRideTool *a3)
  2. {
  3. int v3; // r12@1
  4. int v4; // r12@5
  5. bool v5; // zf@5
  6. signed int v6; // r4@10
  7. unsigned int v7; // r5@12
  8. unsigned int result; // r0@18
  9.  
  10. v3 = *(a1 + 528);
  11. if ( v3 & 1 ) // 100% increase (double down) from arena trap etc
  12. {
  13. EncounterProbability *= 2;
  14. }
  15. else if ( v3 & 2 ) // 50% decrease
  16. {
  17. EncounterProbability >>= 1;
  18. }
  19. else
  20. {
  21. v4 = *(a1 + 502);
  22. v5 = v4 == 224; // cleanse tag
  23. if ( v4 != 224 )
  24. v5 = v4 == 320; // pure incense
  25. if ( v5 )
  26. EncounterProbability = 2 * EncounterProbability / 3;
  27. }
  28. v6 = 100;
  29. if ( *(a1 + 524) & 0x20 ) // 1/4
  30. EncounterProbability >>= 2;
  31. v7 = EncounterProbability;
  32. switch ( Field::EventPokemonRideTool::GetPokemonRideOnID(a3, 0, a3) )
  33. {
  34. case 0:
  35. v6 = 50;
  36. break;
  37. case 1:
  38. v6 = 15;
  39. break;
  40. case 2:
  41. v6 = 55;
  42. break;
  43. case 3:
  44. v6 = 20;
  45. break;
  46. default:
  47. break;
  48. case 6:
  49. v6 = 65;
  50. break;
  51. }
  52. result = v7 * v6 / 100;
  53. if ( result > 100 )
  54. result = 100;
  55. return result;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement