Arma 3 Scripting

Arma 3: CBRN

  • Also known as Arma 3 CBRN

Topic · Markdown · JSON · original wiki page

Arma 3 v1.94

There are no engine nor scripted features to simulate Chemical Biological Radiological Nuclear (CBRN) threats, contamination, or decontamination in Arma 3. However, the Arma 3 Contact expansion has added a range of gear and props to utilize in custom content as desired. This page documents a few scripted methods to set them up.

Hoses and Filters

There are several pieces of CBRN gear (especially Facewear and Backpacks) that require scripting to visually combine correctly. These samples only set the initial state; they will not deal with inventory changes during gameplay. At the moment there is no vanilla module to handle this automatically. However, there's quick function to set the hoses and filters to an unit.

[unit] call BIN_fnc_CBRNHoseInit;

Combination Unit Respirator

// visibility of the common hose segment
(backpackContainer this) setObjectTexture [1, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];        // show hose segment
(backpackContainer this) setObjectTexture [1, ""];                                                    // hide hose segment

// visibility of a hose segment intended for the NATO APR (recommended combination)
(backpackContainer this) setObjectTexture [2, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];        // show
(backpackContainer this) setObjectTexture [2, ""];                                                    // hide
this linkItem "G_AirPurifyingRespirator_01_nofilter_F"; // replacing a NATO APR with filter for a version without filter

// visibility of a hose segment intended for the Regulator Facepiece
(backpackContainer this) setObjectTexture [3, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];        // show
(backpackContainer this) setObjectTexture [3, ""];                                                    // hide

// showing an insignia on the CUR
(backpackContainer this) setObjectTexture [4, "\A3\ui_f\data\logos\bi_white_ca.paa"];     // replace the texture by any insignia texture path

Self-Contained Breathing Apparatus

// visibility of a hose segment intended for the Regulator Facepiece (recommended combination)
(backpackContainer this) setObjectTexture [2, "a3\supplies_f_enoch\bags\data\b_scba_01_co.paa"];    // show hose segment
(backpackContainer this) setObjectTexture [2, ""];                                                    // hide hose segment

// visibility of a hose segment intended for the NATO APR
(backpackContainer this) setObjectTexture [1, "a3\supplies_f_enoch\bags\data\b_scba_01_co.paa"];    // show
(backpackContainer this) setObjectTexture [1, ""];                                                    // hide

Common Combinations

Item(s) Preview Classes Sample Code
- Combination Unit Respirator
- APR [NATO]
B_CombinationUnitRespirator_01_F
G_AirPurifyingRespirator_01_F
(backpackContainer this) setObjectTexture [1, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];
(backpackContainer this) setObjectTexture [2, "a3\supplies_f_enoch\bags\data\b_cur_01_co.paa"];
this linkItem "G_AirPurifyingRespirator_01_nofilter_F";
- Self-Contained Breathing Apparatus
- Regulator Facepiece
B_SCBA_01_F
G_RegulatorMask_F
(backpackContainer this) setObjectTexture [2, "a3\supplies_f_enoch\bags\data\b_scba_01_co.paa"];

Other combinations are possible, but not all of them would be ideal in the real world:

Facewear Overlays

There are simply 2D IGUI overlays available for the various relevant Facewear items. You can show these by script:

"YourLayerName" cutRsc ["RscCBRN_APR", "PLAIN", -1, false];        // overlay on
"YourLayerName" cutText ["", "PLAIN"];                            // overlay off
Item(s) Preview Class(es) Overlay Class
- APR [NATO]
G_AirPurifyingRespirator_01_F
G_AirPurifyingRespirator_01_nofilter_F (protected scope)
"RscCBRN_APR"
- APR (Black) [CSAT]
- APR (Olive) [CSAT]
- APR (Sand) [CSAT]
G_AirPurifyingRespirator_02_black_F
G_AirPurifyingRespirator_02_olive_F
G_AirPurifyingRespirator_02_sand_F
"RscCBRN_APR_02"
- Regulator Facepiece G_RegulatorMask_F "RscCBRN_Regulator"
Blindfold (Black)
Blindfold (White)
G_Blindfold_01_black_F
G_Blindfold_01_white_F
"RscBlindfold"

Chemical Detector

While ultimately not used in the Contact campaign, there is a Chemical Detector variant (uncovered - ChemicalDetector_01_watch_F) that can occupy the watch inventory slot, and use scripted hooks to display a threat value and time. When in the player's watch slot, the "Show watch" key (O by default) can be used to show or toggle it on-screen.

"YourLayerName" cutRsc ["RscWeaponChemicalDetector", "PLAIN", 1, false];    // IGUI display on
"YourLayerName" cutText ["", "PLAIN"];                                        // IGUI display off

// fetching useful UI controls
private _ui = uiNamespace getVariable "RscWeaponChemicalDetector";
private _obj = _ui displayCtrl 101;

_obj ctrlAnimateModel ["Threat_Level_Source", 0.5, true];                    // display a threat level (value between 0.00 and 9.99)
_obj ctrlShow false;                                                        // hide the detector when desired

Decon Showers

The regular and large Decon Showers have 3DEN attributes to control their initial state:

Alternatively there are the following scripts:

[this, 1.5, 9] spawn BIN_fnc_deconShowerAnim;                                // start the regular Decon Shower (use these values)
[this, 5.4, 4, 2, true] spawn BIN_fnc_deconShowerAnimLarge;                    // start the large Decon Shower (use these values)
[this] call BIN_fnc_deconShowerAnimStop;                                    // stop either type of Decon Shower

this setVariable ["BIN_deconshower_disableAction", true];                    // disables the user actions on either type of Decon Shower
private _state = _deconShower animationSourcePhase "valve_source";            // detecting whether either type of Decon Shower is on / off (1 / 0)