Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- scriptName "Functions\misc\fn_damageActions.sqf";
- /***********************************************************
- ADD ACTIONS FOR A CASUALTY
- - Function
- - [] call fnc_usec_damageActions;
- ************************************************************/
- private ["_found","_weaponName","_action","_turret","_weapons","_assignedRole","_action1","_action2","_x","_vehicle","_unit","_vehType","_displayName","_ammoQty","_ammoSerial","_weapon","_magTypes","_type","_typeVeh","_index","_inventory","_unitTo","_isEngineer","_vehClose","_hasVehicle","_unconscious","_lowBlood","_injured","_inPain","_legsBroke","_armsBroke","_charID","_friendlies","_playerMagazines","_hasBandage","_hasEpi","_hasMorphine","_hasBlood","_hasToolbox","_hasJerry","_hasJerryE","_hasWire","_hasPainkillers","_unconscious_crew","_patients","_crew","_menClose","_hasPatient","_inVehicle","_isClose","_bag","_classbag","_isDisallowRefuel","_hasBarrel","_hasBarrelE"];
- disableSerialization;
- if (DZE_ActionInProgress) exitWith {}; // Do not allow if any script is running.
- _menClose = cursorTarget;
- _hasPatient = alive _menClose;
- _vehicle = vehicle player;
- _inVehicle = (_vehicle != player);
- _isClose = ((player distance _menClose) < ((sizeOf typeOf _menClose) / 2));
- _bag = unitBackpack player;
- _classbag = typeOf _bag;
- if (_inVehicle) then {
- r_player_lastVehicle = _vehicle;
- _assignedRole = assignedVehicleRole player;
- if (str (_assignedRole) != str (r_player_lastSeat)) then {
- call r_player_removeActions2;
- };
- if (!r_player_unconscious && !r_action2) then {
- r_player_lastSeat = _assignedRole;
- if (count _assignedRole > 1) then {
- _turret = _assignedRole select 1;
- _weapons = _vehicle weaponsTurret _turret;
- {
- _weaponName = getText (configFile >> "cfgWeapons" >> _x >> "displayName");
- _action = _vehicle addAction [format["Add AMMO to %1",_weaponName], "\z\addons\dayz_code\actions\ammo.sqf",[_vehicle,_x,_turret], 0, false, true];
- r_player_actions2 set [count r_player_actions2,_action];
- r_action2 = true;
- } forEach _weapons;
- };
- };
- } else {
- call r_player_removeActions2;
- r_player_lastVehicle = objNull;
- r_player_lastSeat = [];
- };
- if (!isNull _menClose and _hasPatient and !r_drag_sqf and !r_action and !_inVehicle and !r_player_unconscious and _isClose) then {
- _unit = cursorTarget;
- _isDisallowRefuel = typeOf _unit in ["M240Nest_DZ"];
- // player reveal _unit;
- _vehClose = (getPosATL player) nearEntities [["Car","Tank","Helicopter","Plane","StaticWeapon","Ship"],5]; //nearestObjects [player, ["Car","Tank","Helicopter","Plane","StaticWeapon","Ship"], 5];
- _hasVehicle = ({alive _x} count _vehClose > 0);
- _unconscious = _unit getVariable ["NORRN_unconscious", false];
- _lowBlood = _unit getVariable ["USEC_lowBlood", false];
- _injured = _unit getVariable ["USEC_injured", false];
- _inPain = _unit getVariable ["USEC_inPain", false];
- _legsBroke = _unit getVariable ["hit_legs", 0] >= 1;
- _armsBroke = _unit getVariable ["hit_hands", 0] >= 1;
- _charID = getPlayerUID _unit;
- _found=[_charID,"AX"] call KRON_StrInStr;
- if (_found) then {
- _charID=[_charID] call KRON_convertPlayerUID;
- };
- _friendlies = player getVariable ["friendlies", []];
- _playerMagazines = magazines player;
- _hasBandage = "ItemBandage" in _playerMagazines;
- _hasEpi = "ItemEpinephrine" in _playerMagazines;
- _hasMorphine = "ItemMorphine" in _playerMagazines;
- _hasBlood = "ItemBloodbag" in _playerMagazines;
- _hasToolbox = "ItemToolbox" in items player;
- _hasJerry = "ItemJerrycan" in _playerMagazines;
- _hasBarrel = "ItemFuelBarrel" in _playerMagazines;
- _hasJerryE = "ItemJerrycanEmpty" in _playerMagazines;
- _hasBarrelE = "ItemFuelBarrelEmpty" in _playerMagazines;
- //_hasEtool = "ItemEtool" in weapons player;
- _hasWire = "ItemWire" in _playerMagazines;
- _hasPainkillers = "ItemPainkiller" in _playerMagazines;
- //Allow player to drag
- if(_unconscious) then {
- r_action = true;
- _action1 = _unit addAction [localize "str_actions_medical_01", "\z\addons\dayz_code\medical\drag.sqf",_unit, 0, true, true];
- _action2 = _unit addAction [localize "str_actions_medical_02", "\z\addons\dayz_code\medical\pulse.sqf",_unit, 0, true, true];
- r_player_actions = r_player_actions + [_action1,_action2];
- };
- //Load Vehicle
- if (_hasVehicle and _unconscious) then {
- _x = 0;
- r_action = true;
- _unit = _unit;
- _vehicle = (_vehClose select _x);
- while{((!alive _vehicle) and (_x < (count _vehClose)))} do {
- _x = _x + 1;
- _vehicle = (_vehClose select _x);
- };
- _vehType = typeOf _vehicle;
- _action = _unit addAction [format[localize "str_actions_medical_03",_vehType], "\z\addons\dayz_code\medical\load\load_act.sqf",[player,_vehicle,_unit], 0, true, true];
- r_player_actions set [count r_player_actions,_action];
- };
- //Allow player to bandage
- if(_injured and _hasBandage) then {
- r_action = true;
- _action = _unit addAction [localize "str_actions_medical_04", "\z\addons\dayz_code\medical\bandage.sqf",[_unit], 0, true, true, "", ""];
- r_player_actions set [count r_player_actions,_action];
- };
- //Allow player to give Epinephrine
- if(_unconscious and _hasEpi) then {
- r_action = true;
- _action = _unit addAction [localize "str_actions_medical_05", "\z\addons\dayz_code\medical\epinephrine.sqf",[_unit], 0, true, true];
- r_player_actions set [count r_player_actions,_action];
- };
- //Allow player to give Morphine
- if((_legsBroke or _armsBroke) and _hasMorphine) then {
- r_action = true;
- _action = _unit addAction [localize "str_actions_medical_06", "\z\addons\dayz_code\medical\morphine.sqf",[_unit], 0, true, true, "", ""];
- r_player_actions set [count r_player_actions,_action];
- };
- //Allow player to give Painkillers
- if(_inPain and _hasPainkillers) then {
- r_action = true;
- _action = _unit addAction [localize "str_actions_medical_07", "\z\addons\dayz_code\medical\painkiller.sqf",[_unit], 0, true, true, "", ""];
- r_player_actions set [count r_player_actions,_action];
- };
- //Allow player to transfuse blood
- if(_lowBlood and _hasBlood) then {
- r_action = true;
- _action = _unit addAction [localize "str_actions_medical_08", "\z\addons\dayz_code\medical\transfusion.sqf",[_unit], 0, true, true, "", ""];
- r_player_actions set [count r_player_actions,_action];
- };
- //Repairs
- if ((_unit isKindOf "AllVehicles") and !(_unit isKindOf "Man") and !_isDisallowRefuel) then {
- _type = TypeOf(_unit);
- _typeVeh = getText(configFile >> "cfgVehicles" >> _type >> "displayName");
- //CAN WE REFUEL THE OBJECT?
- if ((fuel _unit < 1) and (_hasJerry or _hasBarrel)) then {
- r_action = true;
- _action = _unit addAction [format[localize "str_actions_medical_10",_typeVeh], "\z\addons\dayz_code\actions\refuel.sqf",[], 0, true, true, "", ""];
- r_player_actions set [count r_player_actions,_action];
- };
- //CAN WE siphon fuel from THE OBJECT?
- if ((fuel _unit > 0) and (_hasJerryE or _hasBarrelE)) then {
- r_action = true;
- _action = _unit addAction [format["Siphon fuel from %1",_typeVeh], "\z\addons\dayz_code\actions\siphonFuel.sqf",[], 0, true, true, "", ""];
- r_player_actions set [count r_player_actions,_action];
- };
- } else {
- // should only fire if cursor target is man and not vehicle
- if ((isPlayer _unit) and !(_charID in _friendlies)) then {
- r_action = true;
- _action = _unit addAction ["Tag as friendly", "custom\player_tagFriendly.sqf", [], 0, false, true, "", ""];
- r_player_actions set [count r_player_actions,_action];
- };
- };
- if (r_action) then {
- r_action_targets = r_action_targets + [_unit];
- };
- };
- /*
- if ((r_player_vehicle != _vehicle) and r_action) then {
- //Player is in a new vehicle
- r_action = false;
- call fnc_usec_medic_removeActions;
- };
- */
- if (_inVehicle) then {
- //Check if patients
- _crew = crew _vehicle;
- if (count _crew > 0) then {
- _unconscious_crew = [];
- {
- if (_x getVariable "NORRN_unconscious") then {
- _unconscious_crew = _unconscious_crew + [_x]
- };
- } forEach _crew;
- _patients = (count _unconscious_crew);
- if (_patients > 0) then {
- if (!r_action_unload) then {
- r_action_unload = true;
- _vehType = typeOf _vehicle;
- _action = _vehicle addAction [format[localize "str_actions_medical_14",_vehType], "\z\addons\dayz_code\medical\load\unLoad_act.sqf",[player,_vehicle], 0, false, true];
- r_player_actions set [count r_player_actions,_action];
- };
- } else {
- if (r_action_unload) then {
- call fnc_usec_medic_removeActions;
- r_action_unload = false;
- };
- };
- };
- //hintSilent format["Crew: %1\nPatients: %2\nAction: %3",(count _crew),_patients,r_action_unload];
- } else {
- if (r_action_unload) then {
- r_action_unload = false;
- call fnc_usec_medic_removeActions;
- };
- };
- //Remove Actions
- if ((!_isClose or !_hasPatient) and r_action) then {
- call fnc_usec_medic_removeActions;
- r_action = false;
- };
- //Pain Effects
- //if (r_player_inpain and !r_player_unconscious) then {
- // playSound "breath_1";
- // addCamShake [2, 1, 25];
- //};
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement