diff --git a/SQF/dayz_code/actions/player_useMeds.sqf b/SQF/dayz_code/actions/player_useMeds.sqf index f7f204127..4aa724333 100644 --- a/SQF/dayz_code/actions/player_useMeds.sqf +++ b/SQF/dayz_code/actions/player_useMeds.sqf @@ -19,7 +19,7 @@ call { if (_item == "ItemPainkiller") exitWith {[0,0,0,[player]] execVM "\z\addons\dayz_code\medical\painkiller.sqf";}; if (_item == "ItemAntibiotic") exitWith {[player,"ItemAntibiotic"] execVM "\z\addons\dayz_code\medical\antibiotics.sqf";}; if (_item == "ItemBloodbag") exitWith {[player,"ItemBloodbag"] execVM "\z\addons\dayz_code\medical\selfbloodbag.sqf";}; - if (_item == "ItemAntibacterialWipe") exitWith {execVM "\z\addons\dayz_code\medical\wipes.sqf";}; + if (_item == "ItemAntibacterialWipe") exitWith {[0,0,0,[player]] execVM "\z\addons\dayz_code\medical\wipes.sqf";}; if (_item == "ItemHeatPack") exitWith {player removeMagazine "ItemHeatPack"; r_player_warming_heatpack = [true, diag_tickTime]; localize "str_player_27" call dayz_rollingMessages;}; //dayz_temperatur = (dayz_temperatur + 5) min dayz_temperaturmax; if (_item == "equip_woodensplint") exitWith {[0,0,0,[player,"equip_woodensplint"]] execVM "\z\addons\dayz_code\medical\brokeBones.sqf";}; if (_item == "ItemSepsisBandage") exitWith {[0,0,0,[player,"ItemSepsisBandage"]] execVM "\z\addons\dayz_code\medical\bandage.sqf";}; diff --git a/SQF/dayz_code/compile/fn_damageActions.sqf b/SQF/dayz_code/compile/fn_damageActions.sqf index 804fc787f..95bbd0439 100644 --- a/SQF/dayz_code/compile/fn_damageActions.sqf +++ b/SQF/dayz_code/compile/fn_damageActions.sqf @@ -8,7 +8,7 @@ scriptName "Functions\misc\fn_damageActions.sqf"; - [] call fnc_usec_damageActions; ************************************************************/ -private ["_dragged","_menClose","_hasPatient","_vehicle","_inVehicle","_isClose","_assignedRole","_driver","_action","_turret","_weapons","_weaponName","_crew","_unconscious_crew","_patients","_vehType","_unit","_antibiotics","_bloodBags","_unconscious","_lowBlood","_injured","_hasSepsis","_inPain","_legsBroke","_armsBroke","_infected","_hasBandage","_hasSepsisBandage","_hasEpi","_hasMorphine","_hasSplint","_hasPainkillers","_hasAntibiotics","_hasBloodBag","_vehClose","_action1","_action2","_action3","_playerMagazines","_isFriendly"]; +private ["_hasABWipes","_dragged","_menClose","_hasPatient","_vehicle","_inVehicle","_isClose","_assignedRole","_driver","_action","_turret","_weapons","_weaponName","_crew","_unconscious_crew","_patients","_vehType","_unit","_antibiotics","_bloodBags","_unconscious","_lowBlood","_injured","_hasSepsis","_inPain","_legsBroke","_armsBroke","_infected","_hasBandage","_hasSepsisBandage","_hasEpi","_hasMorphine","_hasSplint","_hasPainkillers","_hasAntibiotics","_hasBloodBag","_vehClose","_action1","_action2","_action3","_playerMagazines","_isFriendly"]; _menClose = cursorTarget; _hasPatient = alive _menClose; @@ -141,6 +141,7 @@ if (isPlayer cursorTarget) then { _hasSplint = "equip_woodensplint" in _playerMagazines; _hasPainkillers = "ItemPainkiller" in _playerMagazines; _hasAntibiotics = Array_Any(_playerMagazines, {_this in _antibiotics}); + _hasABWipes = "ItemAntibacterialWipe" in _playerMagazines; if (dayz_classicBloodBagSystem) then { _hasBloodBag = "ItemBloodbag" in _playerMagazines; } else { @@ -177,12 +178,18 @@ if (isPlayer cursorTarget) then { _action = _unit addAction [localize "str_actions_medical_04", "\z\addons\dayz_code\medical\bandage.sqf",[_unit,"ItemBandage"], 0, true, true]; r_player_actions set [count r_player_actions,_action]; }; - //Sepsis + //Allow player to give sepsis bandage if((_injured || {_hasSepsis}) && {_hasSepsisBandage}) then { r_action = true; _action = _unit addAction [localize "str_actions_medical_04_sepsis", "\z\addons\dayz_code\medical\bandage.sqf",[_unit,"ItemSepsisBandage"], 0, true, true]; r_player_actions set [count r_player_actions,_action]; }; + //Allow player to give antibacterial wipe + if(_hasSepsis && {_hasABWipes}) then { + r_action = true; + _action = _unit addAction [format[localize "str_actions_medical_08a",localize "STR_ITEM_DESC_WIPES"], "\z\addons\dayz_code\medical\wipes.sqf",[_unit], 0, true, true]; + r_player_actions set [count r_player_actions,_action]; + }; //Allow player to give Epinephrine if(_unconscious && {_hasEpi}) then { r_action = true; @@ -217,7 +224,7 @@ if (isPlayer cursorTarget) then { } else { _tempArray = []; { // This was a TODO by the Vanilla Mod devs. - if (_x in magazines player && {!(_x in _tempArray)}) then { + if (_x in _playerMagazines && {!(_x in _tempArray)}) then { _displayName = getText(configFile >> "cfgMagazines" >> _x >> "displayName"); _action = _unit addAction [format[localize "str_actions_medical_08a",_displayName], "\z\addons\dayz_code\medical\transfusion.sqf",[_unit,_x], 0, true, true]; r_player_actions set [count r_player_actions,_action]; diff --git a/SQF/dayz_code/init/compiles.sqf b/SQF/dayz_code/init/compiles.sqf index c46937397..0da28dad8 100644 --- a/SQF/dayz_code/init/compiles.sqf +++ b/SQF/dayz_code/init/compiles.sqf @@ -79,6 +79,7 @@ if (!isDedicated) then { player_medMorphine = compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\publicEH\medMorphine.sqf"; player_medPainkiller = compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\publicEH\medPainkiller.sqf"; player_medAntiBiotics = compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\publicEH\medAntibiotics.sqf"; + player_medABWipe = compile preprocessFileLineNumbers "\z\addons\dayz_code\medical\publicEH\medABwipe.sqf"; //actions userActionConditions = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\userActionConditions.sqf"; diff --git a/SQF/dayz_code/init/publicEH.sqf b/SQF/dayz_code/init/publicEH.sqf index 97cee05f7..eb44b0acd 100644 --- a/SQF/dayz_code/init/publicEH.sqf +++ b/SQF/dayz_code/init/publicEH.sqf @@ -255,6 +255,7 @@ if (!isDedicated) then { "PVCDZ_hlt_Transfuse" addPublicVariableEventHandler {(_this select 1) spawn player_medTransfuse; }; "PVCDZ_hlt_PainK" addPublicVariableEventHandler {(_this select 1) call player_medPainkiller}; "PVCDZ_hlt_AntiB" addPublicVariableEventHandler {(_this select 1) call player_medAntiBiotics}; + "PVCDZ_hlt_Wipe" addPublicVariableEventHandler {(_this select 1) call player_medABWipe}; "PVCDZ_OpenTarget_Reset" addPublicVariableEventHandler { OpenTarget_Time = diag_tickTime; }; //reset OpenTarget timer "PVCDZ_plr_Legs" addPublicVariableEventHandler { diff --git a/SQF/dayz_code/medical/publicEH/medABwipe.sqf b/SQF/dayz_code/medical/publicEH/medABwipe.sqf new file mode 100644 index 000000000..b0a3da016 --- /dev/null +++ b/SQF/dayz_code/medical/publicEH/medABwipe.sqf @@ -0,0 +1,12 @@ +private ["_unit","_medic"]; + +_unit = _this select 0; +_medic = _this select 1; + +r_player_Sepsis = [false, 0]; +_unit setVariable ["USEC_Sepsis", false, true]; +_unit setVariable ["sepsisStarted", nil]; + +if (_medic != player) then { + format [localize "str_actions_medical_general_received",(name _medic),localize "STR_ITEM_DESC_WIPES"] call dayz_rollingMessages; +}; diff --git a/SQF/dayz_code/medical/wipes.sqf b/SQF/dayz_code/medical/wipes.sqf index cad2bd5cd..fcb5dc9e8 100644 --- a/SQF/dayz_code/medical/wipes.sqf +++ b/SQF/dayz_code/medical/wipes.sqf @@ -1,4 +1,6 @@ -private "_finished"; +private ["_finished","_unit"]; + +_unit = (_this select 3) select 0; if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;}; dayz_actionInProgress = true; @@ -18,10 +20,23 @@ if (vehicle player == player) then { }; if (_finished) then { - r_player_Sepsis = [false, 0]; - player setVariable ["USEC_Sepsis", false, true]; - player setVariable ["sepsisStarted", nil]; - localize "str_actions_medical_wipe_self" call dayz_rollingMessages; + if (_unit == player) then { + // Self healing + r_player_Sepsis = [false, 0]; + _unit setVariable ["USEC_Sepsis", false, true]; + _unit setVariable ["sepsisStarted", nil]; + + localize "str_actions_medical_wipe_self" call dayz_rollingMessages; + } else { + // Heal another player + PVDZ_send = [_unit,"AntiBacterialWipe",[_unit,player]]; + publicVariableServer "PVDZ_send"; + + // Give humanity + [20,0] call player_humanityChange; + + format[localize "str_actions_medical_general_give",localize "STR_ITEM_DESC_WIPES",(name _unit)] call dayz_rollingMessages; + }; } else { player addMagazine "ItemAntibacterialWipe"; }; diff --git a/SQF/dayz_code/stringtable.xml b/SQF/dayz_code/stringtable.xml index 37a1fb4f2..8a04d3d92 100644 --- a/SQF/dayz_code/stringtable.xml +++ b/SQF/dayz_code/stringtable.xml @@ -6124,12 +6124,12 @@ Desinfektionstücher - Antibacterial Wipe. - Антибактериальные салфетки. - Gasa estéril con plata antibacteriana. + Antibacterial Wipe + Антибактериальные салфетки + Gasa estéril con plata antibacteriana Lingette antibactérienne Antibakteriální ubrousky - Antibakterielle Desinfektionstücher, mit welchen Wunden gereinigt und desinfiziert werden können. + Antibakterielle Desinfektionstücher, mit welchen Wunden gereinigt und desinfiziert werden können Fishing Pole diff --git a/SQF/dayz_server/eventHandlers/server_sendToClient.sqf b/SQF/dayz_server/eventHandlers/server_sendToClient.sqf index 9da17fdeb..888099615 100644 --- a/SQF/dayz_server/eventHandlers/server_sendToClient.sqf +++ b/SQF/dayz_server/eventHandlers/server_sendToClient.sqf @@ -108,6 +108,11 @@ call { _owner publicVariableClient "PVCDZ_hlt_AntiB"; }; + if (_variable == "AntiBacterialWipe") exitWith { + PVCDZ_hlt_Wipe = _arraytosend; + _owner publicVariableClient "PVCDZ_hlt_Wipe"; + }; + if (_variable == "Legs") exitWith { PVCDZ_plr_Legs = _arraytosend; _owner publicVariableClient "PVCDZ_plr_Legs";