Skip to content
Open
Show file tree
Hide file tree
Changes from 38 commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
fe21afe
Adding respirator functions
JetfireBlack May 22, 2025
ce5ff59
Adding respirator equipment self interactions
JetfireBlack May 22, 2025
2adc0a6
Adding respirator functions to prep
JetfireBlack May 22, 2025
1709738
Adding respirator stringtable entries
JetfireBlack May 22, 2025
453560a
Updated function names
JetfireBlack May 22, 2025
1bcc725
Updated respirator function names
JetfireBlack May 22, 2025
8c503f8
Update and rename fnc_connectRespirator.sqf to fnc_respiratorConnect.sqf
JetfireBlack May 22, 2025
52c9821
Update and rename fnc_checkRespiratorConditions.sqf to fnc_respirator…
JetfireBlack May 22, 2025
4bf002f
Update and rename fnc_respiratorCondition.sqf to fnc_respiratorCondit…
JetfireBlack May 22, 2025
30aeca2
Update and rename fnc_hideHose.sqf to fnc_respiratorDisconnect.sqf
JetfireBlack May 22, 2025
08a5372
Update and rename fnc_toggleMask.sqf to fnc_respiratorFilter.sqf
JetfireBlack May 22, 2025
d5124fe
respiratorCondition -> respiratorConditions
JetfireBlack May 22, 2025
b10e252
respiratorCondition -> respiratorConditions
JetfireBlack May 22, 2025
efb91dd
Added self to contributors
JetfireBlack May 22, 2025
9886d5e
Enclosed argument in array
JetfireBlack May 22, 2025
35c68ab
Added comments
JetfireBlack May 22, 2025
5c85015
Added comments
JetfireBlack May 22, 2025
c11bc6b
Added comments
JetfireBlack May 22, 2025
19fe34c
Added comments
JetfireBlack May 22, 2025
857472b
Update addons/goggles/CfgVehicles.hpp
JetfireBlack May 23, 2025
7c10fad
Update addons/goggles/CfgVehicles.hpp
JetfireBlack May 23, 2025
07e3496
Update addons/goggles/CfgVehicles.hpp
JetfireBlack May 23, 2025
2a7b583
Update addons/goggles/functions/fnc_respiratorConditions.sqf
JetfireBlack May 23, 2025
f30826f
Update addons/goggles/functions/fnc_respiratorConditions.sqf
JetfireBlack May 23, 2025
7dec5ca
Update addons/goggles/functions/fnc_respiratorConditions.sqf
JetfireBlack May 23, 2025
28b02be
Update addons/goggles/functions/fnc_respiratorConnect.sqf
JetfireBlack May 23, 2025
6ca42a6
Update addons/goggles/functions/fnc_respiratorDisconnect.sqf
JetfireBlack May 23, 2025
575537b
Update addons/goggles/functions/fnc_respiratorFilter.sqf
JetfireBlack May 23, 2025
92fe424
Changed argument and changed public to no
JetfireBlack May 23, 2025
ba4beba
Removed duplicate _showAction
JetfireBlack May 23, 2025
b6b5092
Reverting accidental undoing of changes
JetfireBlack May 23, 2025
0732b03
Update fnc_respiratorConnect.sqf
JetfireBlack May 23, 2025
686486f
Update fnc_respiratorDisconnect.sqf
JetfireBlack May 23, 2025
fb62d41
Update fnc_respiratorFilter.sqf
JetfireBlack May 23, 2025
b5f2108
Update fnc_respiratorConditions.sqf
JetfireBlack May 23, 2025
639a644
Update fnc_respiratorConnect.sqf public
JetfireBlack May 23, 2025
5473660
Update fnc_respiratorDisconnect.sqf public
JetfireBlack May 23, 2025
34d0d7c
Update fnc_respiratorFilter.sqf public
JetfireBlack May 23, 2025
a2cea02
Update CfgVehicles.hpp tabs to spaces
JetfireBlack May 23, 2025
adeeffc
Update fnc_respiratorConditions.sqf tabs to spaces
JetfireBlack May 23, 2025
ca7b492
Update fnc_respiratorConnect.sqf tabs to spaces
JetfireBlack May 23, 2025
01e0abd
Update fnc_respiratorDisconnect.sqf tabs to spaces
JetfireBlack May 23, 2025
834ba55
Update fnc_respiratorFilter.sqf tabs to spaces
JetfireBlack May 23, 2025
7c659f5
Update fnc_respiratorConditions.sqf array indentation
JetfireBlack May 23, 2025
67ed5b4
CfgVehicles.hpp adding fallbacks for respirator backpacks
JetfireBlack May 25, 2025
9eaea36
CfgGlasses.hpp adding configs for respirators
JetfireBlack May 25, 2025
0b53a72
XEH_preInit.sqf declaring variables for respirator pair caching
JetfireBlack May 25, 2025
b5723c8
rewrite of fnc_respiratorConditions.sqf
JetfireBlack May 25, 2025
d10c97d
rewrite of fnc_respiratorConnect.sqf
JetfireBlack May 25, 2025
299f749
rewrite of fnc_respiratorDisconnect.sqf
JetfireBlack May 25, 2025
ab1d357
rewrite of fnc_respiratorFilter.sqf
JetfireBlack May 25, 2025
9fc526f
Forgot to make _fnc_checkHose private
JetfireBlack May 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions AUTHORS.txt
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ Hybrid V
Hypoxic <martini_a@outlook.com>
JasperRab <jasper@jasperrab.eu>
JDT
JetfireBlack <jetfire97@hotmail.be>
john681611 <john681611@hotmail.com>
JoramD
Joe DeShon <Refueling Sound - CreativeCommons Attributions 4.0>
Expand Down
18 changes: 18 additions & 0 deletions addons/goggles/CfgVehicles.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,24 @@ class CfgVehicles {
statement = QUOTE(call FUNC(clearGlasses));
exceptions[] = {"isNotInside", "isNotSitting", "isNotSwimming", "isNotEscorting"};
};
class GVAR(respiratorConnect) {
displayName = CSTRING(Respirator_Connect);
condition = QUOTE('combo' call FUNC(respiratorConditions));
statement = QUOTE(call FUNC(respiratorConnect));
exceptions[] = {"isNotInside", "isNotSitting", "isNotSwimming", "isNotEscorting"};
};
class GVAR(respiratorDisconnect) {
displayName = CSTRING(Respirator_Disconnect);
condition = QUOTE('hose' call FUNC(respiratorConditions));
statement = QUOTE(call FUNC(respiratorDisconnect));
exceptions[] = {"isNotInside", "isNotSitting", "isNotSwimming", "isNotEscorting"};
};
class GVAR(respiratorFilter) {
displayName = CSTRING(Respirator_Filters);
condition = QUOTE('mask' call FUNC(respiratorConditions));
statement = QUOTE(call FUNC(respiratorFilter));
exceptions[] = {"isNotInside", "isNotSitting", "isNotSwimming", "isNotEscorting"};
};
};
};
};
Expand Down
6 changes: 6 additions & 0 deletions addons/goggles/XEH_PREP.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@ PREP(canWipeGlasses);
PREP(clearGlasses);
PREP(getExplosionIndex);

// respirator
PREP(respiratorConditions);
PREP(respiratorConnect);
PREP(respiratorDisconnect);
PREP(respiratorFilter);

// eventhandlers
PREP(handleExplosion);
PREP(handleFired);
Expand Down
72 changes: 72 additions & 0 deletions addons/goggles/functions/fnc_respiratorConditions.sqf
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
#include "..\script_component.hpp"
/*
* Author: JetfireBlack
* Checks if respirator interactions should be shown based on equipment combinations
*
* Arguments:
* 0: Mode <STRING>
*
* Return Value:
* Should interaction be shown? <BOOL>
*
* Example:
* "combo" call ace_goggles_fnc_respiratorConditions
*
* Public: No
*/

private _unit = ACE_player;

if (!local _unit) exitWith {false};

private _mode = _this;

private _goggles = goggles _unit;
private _backpack = backpackContainer _unit;
private _backpackType = backpack _unit;
private _objectTextures = getObjectTextures _backpack;
private _showAction = false;

// Contact DLC respirators
private _allowedGoggles = [
"G_AirPurifyingRespirator_01_F",
"G_AirPurifyingRespirator_01_nofilter_F",
"G_AirPurifyingRespirator_02_black_F",
"G_AirPurifyingRespirator_02_black_nofilter_F",
"G_AirPurifyingRespirator_02_olive_F",
"G_AirPurifyingRespirator_02_olive_nofilter_F",
"G_AirPurifyingRespirator_02_sand_F",
"G_AirPurifyingRespirator_02_sand_nofilter_F",
"G_RegulatorMask_F"
];
// Contact DLC respirator backpacks
private _allowedBackpacks = [
"B_CombinationUnitRespirator_01_F",
"B_SCBA_01_F"
];

if (isNull _backpack || {!(_backpackType in _allowedBackpacks)}) then {_objectTextures = ["","","","",""]};

switch _mode do {
// only show when appropriate respirator and backpack are worn
case "combo": {
if !(_goggles in _allowedGoggles) exitWith {};
if !(_backpackType in _allowedBackpacks) exitWith {};
if (_objectTextures#1 isNotEqualTo "" || _objectTextures#2 isNotEqualTo "") exitWith {};
_showAction = true;
};
// always show when wearing mask with filters
case "mask": {
if !(_goggles in (_allowedGoggles - ["G_RegulatorMask_F"])) exitWith {};
if (_objectTextures#1 isNotEqualTo "" || _objectTextures#2 isNotEqualTo "") exitWith {};
_showAction = true;
};
// shown only when hose is present regardless of respirator (Arma does not dynamically remove the hose)
case "hose": {
if !(_backpackType in _allowedBackpacks) exitWith {};
if !(_objectTextures#1 isNotEqualTo "" || _objectTextures#2 isNotEqualTo "") exitWith {};
_showAction = true;
};
default {};
};
_showAction;
114 changes: 114 additions & 0 deletions addons/goggles/functions/fnc_respiratorConnect.sqf
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
#include "..\script_component.hpp"
/*
* Author: Bohemia Interactive, adapted to ACE by JetfireBlack
* Removes respirator filter if it has one and connects appropriate backpack hose
*
* Arguments:
* 0: Optional unit <OBJECT> (default: ACE_player)
*
* Return Value:
* None
*
* Examples:
* [player] call ace_goggles_fnc_respiratorConnect
* call ace_goggles_fnc_respiratorConnect
*
* Public: Yes
*/

params [["_unit", ACE_player, [objNull]]];

if (!local _unit) exitWith {};

private _goggles = goggles _unit;
private _backpack = backpackContainer _unit;
private _backpackType = backpack _unit;
private _objectTextures = getObjectTextures _backpack;

// shows correct hoses and removes filters for each respirator+backpack combination
if (_objectTextures#1 isEqualTo "" && _objectTextures#2 isEqualTo "") then {
switch true do {
case (_goggles in ["G_AirPurifyingRespirator_01_F", "G_AirPurifyingRespirator_01_nofilter_F"]): {
switch true do {
case (_backpackType isEqualTo "B_CombinationUnitRespirator_01_F"): {
_unit linkItem "G_AirPurifyingRespirator_01_nofilter_F";

_backpack setObjectTextureGlobal [1, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];
_backpack setObjectTextureGlobal [2, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];
_backpack setObjectTextureGlobal [3, ""];
};
case (_backpackType isEqualTo "B_SCBA_01_F"): {
_unit linkItem "G_AirPurifyingRespirator_01_nofilter_F";

_backpack setObjectTextureGlobal [1, "a3\supplies_f_enoch\bags\data\b_scba_01_co.paa"];
_backpack setObjectTextureGlobal [2, ""];
};
};
};
case (_goggles in ["G_AirPurifyingRespirator_02_black_F", "G_AirPurifyingRespirator_02_black_nofilter_F"]): {
switch true do {
case (_backpackType isEqualTo "B_CombinationUnitRespirator_01_F"): {
_unit linkItem "G_AirPurifyingRespirator_02_black_nofilter_F";

_backpack setObjectTextureGlobal [1, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];
_backpack setObjectTextureGlobal [2, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];
_backpack setObjectTextureGlobal [3, ""];
};
case (_backpackType isEqualTo "B_SCBA_01_F"): {
_unit linkItem "G_AirPurifyingRespirator_02_black_nofilter_F";

_backpack setObjectTextureGlobal [1, "a3\supplies_f_enoch\bags\data\b_scba_01_co.paa"];
_backpack setObjectTextureGlobal [2, ""];
};
};
};
case (_goggles in ["G_AirPurifyingRespirator_02_olive_F", "G_AirPurifyingRespirator_02_olive_nofilter_F"]): {
switch true do {
case (_backpackType isEqualTo "B_CombinationUnitRespirator_01_F"): {
_unit linkItem "G_AirPurifyingRespirator_02_olive_nofilter_F";

_backpack setObjectTextureGlobal [1, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];
_backpack setObjectTextureGlobal [2, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];
_backpack setObjectTextureGlobal [3, ""];
};
case (_backpackType isEqualTo "B_SCBA_01_F"): {
_unit linkItem "G_AirPurifyingRespirator_02_olive_nofilter_F";

_backpack setObjectTextureGlobal [1, "a3\supplies_f_enoch\bags\data\b_scba_01_co.paa"];
_backpack setObjectTextureGlobal [2, ""];
};
};
};
case (_goggles in ["G_AirPurifyingRespirator_02_sand_F", "G_AirPurifyingRespirator_02_sand_nofilter_F"]): {
switch true do {
case (_backpackType isEqualTo "B_CombinationUnitRespirator_01_F"): {
_unit linkItem "G_AirPurifyingRespirator_02_sand_nofilter_F";

_backpack setObjectTextureGlobal [1, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];
_backpack setObjectTextureGlobal [2, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];
_backpack setObjectTextureGlobal [3, ""];
};
case (_backpackType isEqualTo "B_SCBA_01_F"): {
_unit linkItem "G_AirPurifyingRespirator_02_sand_nofilter_F";

_backpack setObjectTextureGlobal [1, "a3\supplies_f_enoch\bags\data\b_scba_01_co.paa"];
_backpack setObjectTextureGlobal [2, ""];
};
};
};
case (_goggles isEqualTo "G_RegulatorMask_F"): {
switch true do {
case (_backpackType isEqualTo "B_CombinationUnitRespirator_01_F"): {
_backpack setObjectTextureGlobal [1, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];
_backpack setObjectTextureGlobal [2, ""];
_backpack setObjectTextureGlobal [3, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];
};
case (_backpackType isEqualTo "B_SCBA_01_F"): {
_backpack setObjectTextureGlobal [1, ""];
_backpack setObjectTextureGlobal [2, "a3\supplies_f_enoch\bags\data\b_scba_01_co.paa"];
};
};
};
};
default {};
};
55 changes: 55 additions & 0 deletions addons/goggles/functions/fnc_respiratorDisconnect.sqf
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#include "..\script_component.hpp"
/*
* Author: JetfireBlack
* Hides backpack hose and reattaches respirator filter if there is one
*
* Arguments:
* 0: Optional unit <OBJECT> (default: ACE_player)
*
* Return Value:
* None
*
* Examples:
* [player] call ace_goggles_fnc_respiratorDisconnect
* call ace_goggles_fnc_respiratorDisconnect
*
* Public: Yes
*/

params [["_unit", ACE_player, [objNull]]];

if (!local _unit) exitWith {};

private _goggles = goggles _unit;
private _backpack = backpackContainer _unit;
private _backpackType = backpack _unit;

// remove hoses
switch _backpackType do {
case "B_CombinationUnitRespirator_01_F": {
_backpack setObjectTextureGlobal [1, ""];
_backpack setObjectTextureGlobal [2, ""];
_backpack setObjectTextureGlobal [3, ""];
};
case "B_SCBA_01_F": {
_backpack setObjectTextureGlobal [1, ""];
_backpack setObjectTextureGlobal [2, ""];
};
};

// add filters back
switch true do {
case (_goggles in ["G_AirPurifyingRespirator_01_F", "G_AirPurifyingRespirator_01_nofilter_F"]): {
_unit linkItem "G_AirPurifyingRespirator_01_F";
};
case (_goggles in ["G_AirPurifyingRespirator_02_black_F", "G_AirPurifyingRespirator_02_black_nofilter_F"]): {
_unit linkItem "G_AirPurifyingRespirator_02_black_F";
};
case (_goggles in ["G_AirPurifyingRespirator_02_olive_F", "G_AirPurifyingRespirator_02_olive_nofilter_F"]): {
_unit linkItem "G_AirPurifyingRespirator_02_olive_F";
};
case (_goggles in ["G_AirPurifyingRespirator_02_sand_F", "G_AirPurifyingRespirator_02_sand_nofilter_F"]): {
_unit linkItem "G_AirPurifyingRespirator_02_sand_F";
};
default {};
};
52 changes: 52 additions & 0 deletions addons/goggles/functions/fnc_respiratorFilter.sqf
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#include "..\script_component.hpp"
/*
* Author: JetfireBlack
* Toggles respirator filter
*
* Arguments:
* 0: Optional unit <OBJECT> (default: ACE_player)
*
* Return Value:
* None
*
* Examples:
* [player] call ace_goggles_fnc_respiratorFilter
* call ace_goggles_fnc_respiratorFilter
*
* Public: Yes
*/

params [["_unit", ACE_player, [objNull]]];

if (!local _unit) exitWith {};

private _goggles = goggles _unit;

// toggle filters
switch _goggles do {
case "G_AirPurifyingRespirator_01_F": {
_unit linkItem "G_AirPurifyingRespirator_01_nofilter_F";
};
case "G_AirPurifyingRespirator_02_black_F": {
_unit linkItem "G_AirPurifyingRespirator_02_black_nofilter_F";
};
case "G_AirPurifyingRespirator_02_olive_F": {
_unit linkItem "G_AirPurifyingRespirator_02_olive_nofilter_F";
};
case "G_AirPurifyingRespirator_02_sand_F": {
_unit linkItem "G_AirPurifyingRespirator_02_sand_nofilter_F";
};
case "G_AirPurifyingRespirator_01_nofilter_F": {
_unit linkItem "G_AirPurifyingRespirator_01_F";
};
case "G_AirPurifyingRespirator_02_black_nofilter_F": {
_unit linkItem "G_AirPurifyingRespirator_02_black_F";
};
case "G_AirPurifyingRespirator_02_olive_nofilter_F": {
_unit linkItem "G_AirPurifyingRespirator_02_olive_F";
};
case "G_AirPurifyingRespirator_02_sand_nofilter_F": {
_unit linkItem "G_AirPurifyingRespirator_02_sand_F";
};
default {};
};
12 changes: 12 additions & 0 deletions addons/goggles/stringtable.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,18 @@
<Chinesesimp>护目镜</Chinesesimp>
<Turkish>Gözlük</Turkish>
</Key>
<Key ID="STR_ACE_Goggles_Respirator_Connect">
<English>Connect Respirator</English>
<German>Atemschutzgerät Verbinden</German>
</Key>
<Key ID="STR_ACE_Goggles_Respirator_Disconnect">
<English>Disconnect Respirator</English>
<German>Atemschutzgerät Trennen</German>
</Key>
<Key ID="STR_ACE_Goggles_Respirator_Filters">
<English>Toggle Filters</English>
<German>Atemschutzfilter Montieren/Demontieren</German>
</Key>
<Key ID="STR_ACE_Goggles_SettingDrawOverlay">
<English>Show Goggles Overlay</English>
<French>Afficher la superposition des lunettes</French>
Expand Down