Guest User

Untitled

a guest
Jan 21st, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. /**
  2. * Inflicts damage on npc/player
  3. * replaces fragmented hp subtracting and standardizes hit update data for hitmarks
  4. */
  5. public static void inflictDamage(Client c, int i, int damage, int mask, int hitType) {
  6. Client o = (Client) PlayerHandler.players[i];
  7. int critical;
  8. if(!c.castingMagic && c.projectileStage > 0) //range
  9. critical = 1;
  10. else if (c.projectileStage > 0)
  11. critical = 2;
  12. else if (hitType == 0)
  13. critical = 0;
  14. else
  15. critical = 0;
  16. if(damage > 20 && Misc.random(2) == 0) {
  17. damage -= DamageSoak.soakReduce(damage, i, critical);
  18. } else {
  19. PlayerHandler.players[i].soak = 0;
  20. }
  21. int finaldamage = (PlayerHandler.players[i].playerLevel[3] - damage < 0) ? PlayerHandler.players[i].playerLevel[3] : damage;
  22. boolean crit = false;
  23. int M = c.getCombat().calculateMeleeMaxHit();
  24. int R = c.getCombat().rangeMaxHit();
  25. int m = c.getCombat().magicMaxHit();
  26. switch(critical) {
  27. case 0:
  28. if(finaldamage >= M)
  29. crit = true;
  30. break;
  31. case 1:
  32. if(finaldamage >= R)
  33. crit = true;
  34. break;
  35. case 2:
  36. if(finaldamage >= m)
  37. crit = true;
  38. break;
  39. }
  40.  
  41. switch(mask) {
  42. case 1:
  43. PlayerHandler.players[i].dealDamage(finaldamage);
  44. PlayerHandler.players[i].damageTaken[c.playerId] += finaldamage;
  45. c.totalPlayerDamageDealt += finaldamage;
  46. PlayerHandler.players[i].updateRequired = true;
  47. o.getPA().refreshSkill(3);
  48. break;
  49.  
  50. case 2:
  51. PlayerHandler.players[i].dealDamage(finaldamage);
  52. PlayerHandler.players[i].damageTaken[c.playerId] += finaldamage;
  53. c.totalPlayerDamageDealt += finaldamage;
  54. c.doubleHit = false;
  55. PlayerHandler.players[i].updateRequired = true;
  56. o.getPA().refreshSkill(3);
  57. break;
  58. }
  59. PlayerHandler.players[i].crit = crit;
  60. PlayerHandler.players[i].handleHitMask(finaldamage, hitType, 0);
  61. /** future extensions (soak, absorb) here */
  62. }
  63.  
  64. public static void inflictDamageNPC(Client c, int i, int damage, int mask, int hitType) {
  65. int finaldamage = (NPCHandler.npcs[i].HP - damage < 0) ? damage = NPCHandler.npcs[i].HP : damage;
  66. int critical;
  67. if(!c.castingMagic && c.projectileStage > 0) //range
  68. critical = 1;
  69. else if (c.projectileStage > 0)
  70. critical = 2;
  71. else if (hitType == 0)
  72. critical = 0;
  73. else
  74. critical = 0;
  75. boolean crit = false;
  76. int M = c.getCombat().calculateMeleeMaxHit();
  77. int R = c.getCombat().rangeMaxHit();
  78. int m = c.getCombat().magicMaxHit();
  79. switch(critical) {
  80. case 0:
  81. if(finaldamage >= M)
  82. crit = true;
  83. break;
  84. case 1:
  85. if(finaldamage >= R)
  86. crit = true;
  87. break;
  88. case 2:
  89. if(finaldamage >= m)
  90. crit = true;
  91. break;
  92. }
  93. switch(mask) {
  94. case 1:
  95. NPCHandler.npcs[i].hitDiff = finaldamage;
  96. NPCHandler.npcs[i].HP -= finaldamage;
  97. c.totalDamageDealt += finaldamage;
  98. NPCHandler.npcs[i].updateRequired = true;
  99. break;
  100.  
  101. case 2:
  102. NPCHandler.npcs[i].hitDiff2 = finaldamage;
  103. NPCHandler.npcs[i].HP -= finaldamage;
  104. c.totalDamageDealt += finaldamage;
  105. NPCHandler.npcs[i].updateRequired = true;
  106. c.doubleHit = false;
  107. break;
  108. }
  109.  
  110. NPCHandler.npcs[i].handleHitMask(finaldamage, hitType, 0);
  111. NPCHandler.npcs[i].crit = crit;
  112.  
  113. /** future extensions (soak, absorb) here */
  114. }
Add Comment
Please, Sign In to add comment