Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "..\..\script_macros.hpp"
- /*
- File: fn_handleDamage.sqf
- Author: Yozza
- Description:
- Handles damage, specifically for handling the 'tazer' pistol and nothing else.
- */
- params [
- ["_unit",objNull,[objNull]],
- ["_part","",[""]],
- ["_damage",0,[0]],
- ["_source",objNull,[objNull]],
- ["_projectile","",[""]],
- ["_index",0,[0]]
- ];
- //Handle the tazer first (Top-Priority).
- if ((!isNull _source) AND !(player getVariable ['bleedingOut',false])) then {
- if (_source != _unit) then {
- if (currentWeapon _source in ["hgun_P07_snds_F","arifle_SDAR_F"] && _projectile in ["B_9x21_Ball","B_556x45_dual"]) then {
- if (side _source isEqualTo west && playerSide isEqualTo civilian) then {
- _damage = 0;
- if (alive player && !life_istazed && !life_isknocked && !(_unit getVariable ["restrained",false])) then {
- private ["_distance"];
- _distance = 35;
- if (_projectile == "B_556x45_dual") then {_distance = 100;};
- if (_unit distance _source < _distance) then {
- if !(isNull objectParent player) then {
- if (typeOf (vehicle player) == "B_Quadbike_01_F") then {
- player action ["Eject",vehicle player];
- [_unit,_source] spawn life_fnc_tazed;
- };
- } else {
- [_unit,_source] spawn life_fnc_tazed;
- };
- };
- };
- };
- //Temp fix for super tasers on cops.
- if (side _source isEqualTo west && (playerSide isEqualTo west || playerSide isEqualTo independent)) then {
- _damage = 0;
- };
- };
- };
- };
- // Handle bleedout system
- switch (true) do {
- case (player getVariable ['bleedingTimeout',0] >= time): {_damage = _damage min 0.90};
- case !(player getVariable ['bleedingOut',false]): {
- if (!(_projectile isEqualTo "") AND !(_source isEqualTo player)) then {
- player setVariable ['bleedOutReason',format["Shot by %1<br/><t size='0.8'>%2</t>",_source getVariable ['realname',name _source],getPlayerUID player]];
- } else {
- player setVariable ['bleedOutReason','Accident'];
- };
- private _fallToBleedout = switch (true) do {
- case ((_index isEqualTo -1) AND (_damage >= 0.90)): {true};
- case ((_index isEqualTo 0) AND (_damage >= 0.90)): {true};
- case ((_index isEqualTo 2) AND (_damage >= 0.90)): {true};
- case ((_index isEqualTo 5) AND (_damage >= 0.90)): {true};
- case ((_index isEqualTo 11) AND (_damage >= 0.90)): {true};
- case (count(((getAllHitPointsDamage _unit) select 2) select {_x < 0.9}) < 11): {true};
- default {false};
- };
- if (_fallToBleedout) then {0 call life_fnc_bleedout};
- _damage = _damage min 0.90;
- };
- };
- [] spawn life_fnc_hudUpdate;
- _damage;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement