HurtDataTools.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. using System;
  2. using ExtensionMethods;
  3. using UnityEngine;
  4. public class HurtDataTools
  5. {
  6. public static bool Counterattack(int damage, bool groundOnly, ref bool actionInterrupt, ref EnemyAttribute eAttr, ref EnemyBaseAction action)
  7. {
  8. if (!eAttr.canCounterAttack)
  9. {
  10. return false;
  11. }
  12. if (damage == 0)
  13. {
  14. return false;
  15. }
  16. eAttr.currentCounterAttackValue += damage;
  17. bool flag = (float)UnityEngine.Random.Range(0, 100) < eAttr.currentCounterAttackProbPercentage;
  18. bool flag2 = eAttr.currentCounterAttackValue >= eAttr.counterAttack && flag && groundOnly && !action.IsInWeakSta();
  19. if (flag2)
  20. {
  21. eAttr.currentCounterAttackValue = 0;
  22. eAttr.currentCounterAttackProbPercentage = (float)eAttr.counterAttackProbPercentage;
  23. eAttr.currentActionInterruptPoint = 0;
  24. actionInterrupt = false;
  25. }
  26. else
  27. {
  28. eAttr.currentCounterAttackProbPercentage += (float)eAttr.counterAttackProbPercentage;
  29. }
  30. return flag2;
  31. }
  32. public static void AddActionInterruptPoint(int damage, string atkName, ref EnemyAttribute eAttr, ref bool actionInterrupt)
  33. {
  34. if (!eAttr.hasActionInterrupt)
  35. {
  36. return;
  37. }
  38. if (atkName.IsInArray(PlayerAtkType.LightAttack))
  39. {
  40. return;
  41. }
  42. int currentActionInterruptPoint = eAttr.currentActionInterruptPoint;
  43. eAttr.currentActionInterruptPoint += damage;
  44. actionInterrupt = (currentActionInterruptPoint < eAttr.actionInterruptPoint && eAttr.currentActionInterruptPoint >= eAttr.actionInterruptPoint);
  45. }
  46. public static bool CalculateMonsterDefence(int damage, ref float defenceTrigger, ref EnemyBaseAction action, ref EnemyAttribute eAttr)
  47. {
  48. if (action.IsInWeakSta())
  49. {
  50. return false;
  51. }
  52. if (action.IsInDefenceState())
  53. {
  54. return false;
  55. }
  56. if (eAttr.monsterDefence <= 0)
  57. {
  58. return false;
  59. }
  60. if (damage == 0)
  61. {
  62. return false;
  63. }
  64. eAttr.currentDefence += damage;
  65. eAttr.startDefence = (eAttr.currentDefence >= eAttr.monsterDefence);
  66. bool flag = eAttr.startDefence && eAttr.isOnGround;
  67. bool flag2 = false;
  68. if (flag)
  69. {
  70. flag2 = ((float)UnityEngine.Random.Range(0, 100) < defenceTrigger);
  71. if (!flag2)
  72. {
  73. defenceTrigger += 20f;
  74. }
  75. }
  76. return flag && flag2;
  77. }
  78. public static bool CalculateMonsterSideStep(int damage, ref float sideStepTrigger, ref EnemyBaseAction action, ref EnemyAttribute eAttr)
  79. {
  80. if (action.IsInWeakSta())
  81. {
  82. return false;
  83. }
  84. if (eAttr.monsterSideStep <= 0)
  85. {
  86. return false;
  87. }
  88. if (damage == 0)
  89. {
  90. return false;
  91. }
  92. eAttr.currentSideStep += damage;
  93. bool flag = true;
  94. if (!eAttr.sideStepInAir)
  95. {
  96. flag = eAttr.isOnGround;
  97. }
  98. bool flag2 = eAttr.currentSideStep >= eAttr.monsterSideStep && flag;
  99. bool flag3 = false;
  100. if (flag2)
  101. {
  102. flag3 = ((float)UnityEngine.Random.Range(0, 100) < sideStepTrigger);
  103. if (!flag3)
  104. {
  105. sideStepTrigger += 20f;
  106. }
  107. }
  108. return flag2 && flag3;
  109. }
  110. public static int GetAtkLevel(string atkName)
  111. {
  112. if (atkName.IsInArray(PlayerAtkType.AirAttack))
  113. {
  114. return R.Player.Enhancement.AirAttack;
  115. }
  116. if (atkName.IsInArray(PlayerAtkType.AirAvatarAttack))
  117. {
  118. return R.Player.Enhancement.AirAvatarAttack;
  119. }
  120. if (atkName == PlayerAtkType.AirCombo1)
  121. {
  122. return R.Player.Enhancement.AirCombo1;
  123. }
  124. if (atkName == PlayerAtkType.AirCombo2)
  125. {
  126. return R.Player.Enhancement.AirCombo2;
  127. }
  128. if (atkName.IsInArray(PlayerAtkType.Attack))
  129. {
  130. return R.Player.Enhancement.Attack;
  131. }
  132. if (atkName.IsInArray(PlayerAtkType.AvatarAttack))
  133. {
  134. return R.Player.Enhancement.AvatarAttack;
  135. }
  136. if (atkName == PlayerAtkType.BladeStorm)
  137. {
  138. return R.Player.Enhancement.BladeStorm;
  139. }
  140. if (atkName == PlayerAtkType.Charging)
  141. {
  142. return R.Player.Enhancement.Charging;
  143. }
  144. if (PlayerAtkType.Chase == atkName)
  145. {
  146. return R.Player.Enhancement.Chase;
  147. }
  148. if (atkName == PlayerAtkType.Combo1)
  149. {
  150. return R.Player.Enhancement.Combo1;
  151. }
  152. if (atkName.IsInArray(PlayerAtkType.Combo2))
  153. {
  154. return R.Player.Enhancement.Combo2;
  155. }
  156. if (PlayerAtkType.HitGround == atkName)
  157. {
  158. return R.Player.Enhancement.HitGround;
  159. }
  160. if (PlayerAtkType.Knockout == atkName)
  161. {
  162. return R.Player.Enhancement.Knockout;
  163. }
  164. if (PlayerAtkType.ShadeAttack == atkName)
  165. {
  166. return R.Player.Enhancement.ShadeAttack;
  167. }
  168. if (atkName.IsInArray(PlayerAtkType.TripleAttack))
  169. {
  170. return R.Player.Enhancement.TripleAttack;
  171. }
  172. if (PlayerAtkType.UpperChop == atkName)
  173. {
  174. return R.Player.Enhancement.UpperChop;
  175. }
  176. return 0;
  177. }
  178. public static bool ChaseAttack()
  179. {
  180. int num = UnityEngine.Random.Range(0, 100);
  181. return num <= 4 && R.Player.Enhancement.Chase > 0;
  182. }
  183. public static void FlashHPRecover()
  184. {
  185. float num = 0f;
  186. int flashAttack = R.Player.Enhancement.FlashAttack;
  187. if (flashAttack != 1)
  188. {
  189. if (flashAttack != 2)
  190. {
  191. if (flashAttack == 3)
  192. {
  193. num = 0.07f;
  194. }
  195. }
  196. else
  197. {
  198. num = 0.05f;
  199. }
  200. }
  201. else
  202. {
  203. num = 0.03f;
  204. }
  205. R.Player.Attribute.currentHP += (int)((float)R.Player.Attribute.maxHP * num);
  206. }
  207. }