mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-14 04:02:37 +03:00
This updates the medical functions for the new player_humanityChange call and updates the code where it was needed.
318 lines
11 KiB
Plaintext
318 lines
11 KiB
Plaintext
/* ********************************************************
|
|
Used to check and display blood type + Rh
|
|
By icomrade for DayZ Mod
|
|
********************************************************* */
|
|
private ["_unit","_abc","_opened","_water_displayed","_A_Watered","_B_Watered","_allDisplayed","_water_closed","_D_Watered","_control_Watered","_needleOpened","_needleRed","_antiABlooded","_allClicked","_antiBBlooded","_antiDBlooded","_control_displayed","_antiA_displayed","_antiB_displayed","_antiD_displayed","_results_shown","_isDone","_watered","_watered_complete","_isClose","_unit","_hasTester","_display","_resultsCard_hidden","_antiA","_AntiB","_AntiD","_Control","_waterBottle","_needle","_name","_resultsCard_front","_antiAUntested","_antiBUntested","_antiDUntested","_controlUntested","_waterBottleImage","_waterBottleClickedImage","_needleClosedImage","_needleOpenImage","_watered_image","_needleRedImage","_bloodTypeCard","_bloodTypeCardHidden","_controlImage","_RBWhole1","_RBWhole2","_RBWhole3","_RBWhole4","_RBWhole5","_Aglut1","_Aglut2","_Aglut3","_Aglut4","_Aglut5","_wholeArray","_aglutArray","_rnd1","_rnd2","_rnd3","_type","_rh"];
|
|
disableSerialization;
|
|
|
|
//remove option
|
|
call fnc_usec_medic_removeActions;
|
|
r_action = false;
|
|
|
|
_unit = (_this select 3) select 0;
|
|
if (dialog) then {
|
|
_abc = findDisplay 106;
|
|
_abc closeDisplay 0;
|
|
};
|
|
|
|
_hasTester = "bloodTester" in magazines player;
|
|
_antiA_displayed = false;
|
|
_antiB_displayed = false;
|
|
_antiD_displayed = false;
|
|
_control_displayed = false;
|
|
_water_displayed = false;
|
|
_opened = false;
|
|
_isDone = false;
|
|
_A_Watered = false;
|
|
_B_Watered = false;
|
|
_D_Watered = false;
|
|
_control_Watered = false;
|
|
_results_shown = false;
|
|
_needleOpened = false;
|
|
_needleRed = false;
|
|
_antiABlooded = false;
|
|
_antiBBlooded = false;
|
|
_antiDBlooded = false;
|
|
_allClicked = 0;
|
|
if (!_hasTester) exitWith {};
|
|
|
|
createDialog "bloodTest";
|
|
|
|
uiSleep 0.02;
|
|
|
|
_display = uiNamespace getVariable 'DayZ_Blood_Test';
|
|
_resultsCard_hidden = _display displayCtrl 1288;
|
|
_antiA = _display displayCtrl 1293;
|
|
_AntiB = _display displayCtrl 1294;
|
|
_AntiD = _display displayCtrl 1295;
|
|
_Control = _display displayCtrl 1296;
|
|
_waterBottle = _display displayCtrl 1297;
|
|
_needle = _display displayCtrl 1298;
|
|
_name = _display displayCtrl 1289;
|
|
_resultsCard_front = _display displayCtrl 1299;
|
|
_resultsCard_front ctrlShow false;
|
|
_antiAUntested = "\z\addons\dayz_code\gui\blood\bloodtest_t_antiA.paa";
|
|
_antiBUntested = "\z\addons\dayz_code\gui\blood\bloodtest_t_antiB.paa";
|
|
_antiDUntested = "\z\addons\dayz_code\gui\blood\bloodtest_t_antiD.paa";
|
|
_controlUntested = "\z\addons\dayz_code\gui\blood\bloodtest_t_control.paa";
|
|
_waterBottleImage ="\z\addons\dayz_code\gui\blood\bloodtest_button_water.paa";
|
|
_waterBottleClickedImage = "\z\addons\dayz_code\gui\blood\bloodtest_button_water_enabled.paa";
|
|
_needleClosedImage = "\z\addons\dayz_code\gui\blood\bloodtest_button_drawblood_closed.paa";
|
|
_needleOpenImage = "\z\addons\dayz_code\gui\blood\bloodtest_button_drawblood_open.paa";
|
|
_watered_image = "\z\addons\dayz_code\gui\blood\bloodtest_waterdrop.paa";
|
|
_needleRedImage = "\z\addons\dayz_code\gui\blood\bloodtest_button_drawblood_enabled.paa";
|
|
_bloodTypeCard = "\z\addons\dayz_code\gui\blood\bloodtest_results.paa";
|
|
_bloodTypeCardHidden = "\z\addons\dayz_code\gui\blood\bloodtest_button_results.paa";
|
|
_controlImage = "\z\addons\dayz_code\gui\blood\bloodtest_blood_waiting.paa";
|
|
_RBWhole1 = "\z\addons\dayz_code\gui\blood\bloodtest_blood1.paa";
|
|
_RBWhole2 = "\z\addons\dayz_code\gui\blood\bloodtest_blood2.paa";
|
|
_RBWhole3 = "\z\addons\dayz_code\gui\blood\bloodtest_blood3.paa";
|
|
_RBWhole4 = "\z\addons\dayz_code\gui\blood\bloodtest_blood4.paa";
|
|
_RBWhole5 = "\z\addons\dayz_code\gui\blood\bloodtest_blood5.paa";
|
|
_Aglut1 = "\z\addons\dayz_code\gui\blood\bloodtest_blood_true1.paa";
|
|
_Aglut2 = "\z\addons\dayz_code\gui\blood\bloodtest_blood_true2.paa";
|
|
_Aglut3 = "\z\addons\dayz_code\gui\blood\bloodtest_blood_true3.paa";
|
|
_Aglut4 = "\z\addons\dayz_code\gui\blood\bloodtest_blood_true4.paa";
|
|
_Aglut5 = "\z\addons\dayz_code\gui\blood\bloodtest_blood_true5.paa";
|
|
_wholeArray = [_RBWhole1,_RBWhole2,_RBWhole3,_RBWhole4,_RBWhole5];
|
|
_aglutArray = [_Aglut1,_Aglut2,_Aglut3, _Aglut4,_Aglut5];
|
|
_allDisplayed = false;
|
|
_water_closed = false;
|
|
|
|
r_interrupt = false;
|
|
r_doLoop = true;
|
|
r_A_watered = false;
|
|
r_B_watered = false;
|
|
r_D_watered = false;
|
|
r_control_watered = false;
|
|
r_canClick_resultsCard = false;
|
|
r_resultsCard_Clicked = false;
|
|
r_water_clicked = false;
|
|
r_needleclicked = 0;
|
|
r_control_done = false;
|
|
r_antiA_done = false;
|
|
r_antiB_done = false;
|
|
r_antiD_done = false;
|
|
_watered_complete = 0;
|
|
_rnd1 = round(random 4);
|
|
_rnd2 = floor(random 4);
|
|
_rnd3 = ceil(random 4);
|
|
|
|
_type = _unit getVariable ["blood_type", false];
|
|
_rh = _unit getVariable ["rh_factor", false];
|
|
|
|
while {!_isDone && r_doLoop} do {
|
|
_watered = r_A_watered or r_B_watered or r_D_watered or r_control_watered;
|
|
|
|
//display untested images
|
|
if (!_opened) then {
|
|
if (alive _unit) then {
|
|
_name ctrlSetText (name _unit);
|
|
};
|
|
_antiA ctrlSetText _antiAUntested;
|
|
_antiB ctrlSetText _antiBUntested;
|
|
_antiD ctrlSetText _antiDUntested;
|
|
_Control ctrlSetText _controlUntested;
|
|
_waterBottle ctrlSetText _waterBottleImage;
|
|
_needle ctrlSetText _needleClosedImage;
|
|
_resultsCard_hidden ctrlSetText _bloodTypeCardHidden;
|
|
_opened = true;
|
|
};
|
|
|
|
//display clicked water bottle image
|
|
if (r_water_clicked && {!_water_displayed}) then {
|
|
_waterBottle ctrlSetText _waterBottleClickedImage;
|
|
_water_displayed = true;
|
|
player removeMagazine "bloodTester";
|
|
};
|
|
|
|
//display water marks
|
|
if (r_water_clicked && {_watered} && {_watered_complete <= 4}) then {
|
|
if (r_A_watered && {!_A_Watered}) then {
|
|
_antiA ctrlSetText _watered_image;
|
|
_A_Watered = true;
|
|
_watered_complete = _watered_complete + 1;
|
|
};
|
|
if (r_B_watered && {!_B_Watered}) then {
|
|
_antiB ctrlSetText _watered_image;
|
|
_B_Watered = true;
|
|
_watered_complete = _watered_complete + 1;
|
|
};
|
|
if (r_D_watered && {!_D_Watered}) then {
|
|
_antiD ctrlSetText _watered_image;
|
|
_D_Watered = true;
|
|
_watered_complete = _watered_complete + 1;
|
|
};
|
|
if (r_control_watered && {!_control_Watered}) then {
|
|
_Control ctrlSetText _watered_image;
|
|
_control_Watered = true;
|
|
_watered_complete = _watered_complete + 1;
|
|
};
|
|
};
|
|
|
|
//open needle
|
|
if ((r_needleclicked == 1) && {!_needleOpened}) then {
|
|
_needle ctrlSetText _needleOpenImage;
|
|
_needleOpened = true;
|
|
};
|
|
|
|
|
|
//close water
|
|
if ((_watered_complete >= 4) && {!_water_closed}) then {
|
|
_water_closed = true;
|
|
_waterBottle ctrlSetText _waterBottleImage;
|
|
};
|
|
//needle clicked
|
|
if ((r_needleclicked >= 2) && {!_needleRed && {_needleOpened} && {_watered_complete >= 4} && {!r_needleReset}}) then {
|
|
_needle ctrlSetText _needleRedImage;
|
|
_needleRed = true;
|
|
};
|
|
|
|
//reset needle
|
|
if (_needleRed && {r_needleReset}) then {
|
|
_needle ctrlSetText _needleOpenImage;
|
|
_needleRed = false;
|
|
};
|
|
|
|
//fill with blood
|
|
if (r_antiA_done && {!_antiABlooded} && {_needleRed}) then {
|
|
r_needleReset = true;
|
|
_antiA ctrlSetText _controlImage;
|
|
_antiABlooded = true;
|
|
_allClicked = _allClicked + 1;
|
|
};
|
|
if (r_antiB_done && {!_antiBBlooded} && {_needleRed}) then {
|
|
r_needleReset = true;
|
|
_antiB ctrlSetText _controlImage;
|
|
_antiBBlooded = true;
|
|
_allClicked = _allClicked + 1;
|
|
};
|
|
if (r_antiD_done && {!_antiDBlooded} && {_needleRed}) then {
|
|
r_needleReset = true;
|
|
_antiD ctrlSetText _controlImage;
|
|
_antiDBlooded = true;
|
|
_allClicked = _allClicked + 1;
|
|
};
|
|
if (r_control_done && {!_control_displayed} && {_needleRed}) then {
|
|
r_needleReset = true;
|
|
_Control ctrlSetText _controlImage;
|
|
_control_displayed = true;
|
|
_allClicked = _allClicked + 1;
|
|
};
|
|
|
|
_isClose = ((player distance _unit) < ((sizeOf typeOf _unit) / 2));
|
|
if (r_interrupt or !_isClose) then {
|
|
r_doLoop = false;
|
|
};
|
|
//The magic happens
|
|
if (_allClicked == 4) then {
|
|
call {
|
|
if (_type == "A") exitwith {
|
|
if (!_allDisplayed) then {
|
|
uiSleep 2;
|
|
if (r_antiA_done && {!_antiA_displayed}) then {
|
|
_antiA ctrlSetText (_aglutArray select _rnd1);
|
|
_antiA_displayed = true;
|
|
};
|
|
if (r_antiB_done && {!_antiB_displayed}) then {
|
|
_AntiB ctrlSetText (_wholeArray select _rnd2);
|
|
_antiB_displayed = true;
|
|
};
|
|
if (r_antiD_done && {!_antiD_displayed}) then {
|
|
if (_rh) then {
|
|
_AntiD ctrlSetText (_aglutArray select _rnd3);
|
|
} else {
|
|
_AntiD ctrlSetText (_wholeArray select _rnd3);
|
|
};
|
|
_antiD_displayed = true;
|
|
};
|
|
_allDisplayed = true;
|
|
};
|
|
};
|
|
if (_type == "B") exitwith {
|
|
if (!_allDisplayed) then {
|
|
uiSleep 2;
|
|
if (r_antiA_done && {!_antiA_displayed}) then {
|
|
_antiA ctrlSetText (_wholeArray select _rnd1);
|
|
_antiA_displayed = true;
|
|
};
|
|
if (r_antiB_done && {!_antiB_displayed}) then {
|
|
_AntiB ctrlSetText (_aglutArray select _rnd2);
|
|
_antiB_displayed = true;
|
|
};
|
|
if (r_antiD_done && {!_antiD_displayed}) then {
|
|
if (_rh) then {
|
|
_AntiD ctrlSetText (_aglutArray select _rnd3);
|
|
} else {
|
|
_AntiD ctrlSetText (_wholeArray select _rnd3);
|
|
};
|
|
_antiD_displayed = true;
|
|
};
|
|
_allDisplayed = true;
|
|
};
|
|
};
|
|
if (_type == "AB") exitwith {
|
|
if (!_allDisplayed) then {
|
|
uiSleep 2;
|
|
if (r_antiA_done && {!_antiA_displayed}) then {
|
|
_antiA ctrlSetText (_aglutArray select _rnd1);
|
|
_antiA_displayed = true;
|
|
};
|
|
if (r_antiB_done && {!_antiB_displayed}) then {
|
|
_AntiB ctrlSetText (_aglutArray select _rnd2);
|
|
_antiB_displayed = true;
|
|
};
|
|
if (r_antiD_done && {!_antiD_displayed}) then {
|
|
if (_rh) then {
|
|
_AntiD ctrlSetText (_aglutArray select _rnd3);
|
|
} else {
|
|
_AntiD ctrlSetText (_wholeArray select _rnd3);
|
|
};
|
|
_antiD_displayed = true;
|
|
};
|
|
_allDisplayed = true;
|
|
};
|
|
};
|
|
if (_type == "O") exitwith {
|
|
if (!_allDisplayed) then {
|
|
uiSleep 2;
|
|
if (r_antiA_done && {!_antiA_displayed}) then {
|
|
_antiA ctrlSetText (_wholeArray select _rnd1);
|
|
_antiA_displayed = true;
|
|
};
|
|
if (r_antiB_done && {!_antiB_displayed}) then {
|
|
_AntiB ctrlSetText (_wholeArray select _rnd2);
|
|
_antiB_displayed = true;
|
|
};
|
|
if (r_antiD_done && {!_antiD_displayed}) then {
|
|
if (_rh) then {
|
|
_AntiD ctrlSetText (_aglutArray select _rnd3);
|
|
} else {
|
|
_AntiD ctrlSetText (_wholeArray select _rnd3);
|
|
};
|
|
_antiD_displayed = true;
|
|
};
|
|
_allDisplayed = true;
|
|
};
|
|
};
|
|
};
|
|
|
|
r_canClick_resultsCard = true;
|
|
if (r_resultsCard_Clicked && {_antiD_displayed && {_antiB_displayed} && {_antiA_displayed} && {_control_displayed} && {!_results_shown}}) then {
|
|
_resultsCard_hidden ctrlShow false;
|
|
_resultsCard_front ctrlShow true;
|
|
_resultsCard_front ctrlSetText _bloodTypeCard;
|
|
_results_shown = true;
|
|
};
|
|
};
|
|
if (_antiD_displayed && {_antiB_displayed && {_antiA_displayed} && {_control_displayed} && {_results_shown}}) then {
|
|
r_doLoop = false;
|
|
_isDone = true;
|
|
[] spawn {
|
|
uiSleep 7;
|
|
player setVariable["blood_testDone",true,true];
|
|
};
|
|
};
|
|
uiSleep 0.01;
|
|
};
|