Advertisement
Guest User

Untitled

a guest
Mar 29th, 2019
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. #include "..\..\script_macros.hpp"
  2. /*
  3. File: fn_handleDamage.sqf
  4. Author: Yozza
  5. Description:
  6. Handles damage, specifically for handling the 'tazer' pistol and nothing else.
  7. */
  8. params [
  9. ["_unit",objNull,[objNull]],
  10. ["_part","",[""]],
  11. ["_damage",0,[0]],
  12. ["_source",objNull,[objNull]],
  13. ["_projectile","",[""]],
  14. ["_index",0,[0]]
  15. ];
  16.  
  17. //Handle the tazer first (Top-Priority).
  18. if ((!isNull _source) AND !(player getVariable ['bleedingOut',false])) then {
  19. if (_source != _unit) then {
  20. if (currentWeapon _source in ["hgun_P07_snds_F","arifle_SDAR_F"] && _projectile in ["B_9x21_Ball","B_556x45_dual"]) then {
  21. if (side _source isEqualTo west && playerSide isEqualTo civilian) then {
  22. _damage = 0;
  23. if (alive player && !life_istazed && !life_isknocked && !(_unit getVariable ["restrained",false])) then {
  24. private ["_distance"];
  25. _distance = 35;
  26. if (_projectile == "B_556x45_dual") then {_distance = 100;};
  27. if (_unit distance _source < _distance) then {
  28. if !(isNull objectParent player) then {
  29. if (typeOf (vehicle player) == "B_Quadbike_01_F") then {
  30. player action ["Eject",vehicle player];
  31. [_unit,_source] spawn life_fnc_tazed;
  32. };
  33. } else {
  34. [_unit,_source] spawn life_fnc_tazed;
  35. };
  36. };
  37. };
  38. };
  39.  
  40. //Temp fix for super tasers on cops.
  41. if (side _source isEqualTo west && (playerSide isEqualTo west || playerSide isEqualTo independent)) then {
  42. _damage = 0;
  43. };
  44. };
  45. };
  46. };
  47.  
  48. // Handle bleedout system
  49. switch (true) do {
  50. case (player getVariable ['bleedingTimeout',0] >= time): {_damage = _damage min 0.90};
  51. case !(player getVariable ['bleedingOut',false]): {
  52. if (!(_projectile isEqualTo "") AND !(_source isEqualTo player)) then {
  53. player setVariable ['bleedOutReason',format["Shot by %1<br/><t size='0.8'>%2</t>",_source getVariable ['realname',name _source],getPlayerUID player]];
  54. } else {
  55. player setVariable ['bleedOutReason','Accident'];
  56. };
  57. private _fallToBleedout = switch (true) do {
  58. case ((_index isEqualTo -1) AND (_damage >= 0.90)): {true};
  59. case ((_index isEqualTo 0) AND (_damage >= 0.90)): {true};
  60. case ((_index isEqualTo 2) AND (_damage >= 0.90)): {true};
  61. case ((_index isEqualTo 5) AND (_damage >= 0.90)): {true};
  62. case ((_index isEqualTo 11) AND (_damage >= 0.90)): {true};
  63. case (count(((getAllHitPointsDamage _unit) select 2) select {_x < 0.9}) < 11): {true};
  64. default {false};
  65. };
  66. if (_fallToBleedout) then {0 call life_fnc_bleedout};
  67. _damage = _damage min 0.90;
  68. };
  69. };
  70.  
  71. [] spawn life_fnc_hudUpdate;
  72. _damage;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement