From 3d6f43a36c664f34abff8ee0b8557661c5787f97 Mon Sep 17 00:00:00 2001 From: vbawol Date: Tue, 15 Dec 2015 16:43:26 -0600 Subject: [PATCH] 0.3.6.019 --- Changelogs/0.3.6.0.txt | 3 +- .../environment/EPOCH_client_bitePlayer.sqf | 33 ++++++-- .../environment/EPOCH_client_earthQuake.sqf | 25 ++++++- .../EPOCH_client_loadAnimalBrain.sqf | 23 ++++++ .../EPOCH_Interface_interact.sqf | 75 ------------------- .../EPOCH_KeyDown.sqf | 29 ++++++- .../interface_event_handlers/EPOCH_KeyUp.sqf | 30 +++++++- .../interface_event_handlers/EPOCH_onChar.sqf | 26 ++++++- .../compile/inventory/EPOCH_factorArmor.sqf | 24 ++++++ .../compile/inventory/EPOCH_gearArmorCalc.sqf | 34 ++++++++- .../compile/inventory/EPOCH_initUI.sqf | 25 +++++++ .../compile/inventory/EPOCH_maxArmorInit.sqf | 32 ++++++-- .../compile/inventory/EPOCH_refeshUI.sqf | 24 +++++- .../inventory/EPOCH_uniformArmorCalc.sqf | 23 ++++++ 14 files changed, 311 insertions(+), 95 deletions(-) delete mode 100644 Sources/epoch_code/compile/interface_event_handlers/EPOCH_Interface_interact.sqf diff --git a/Changelogs/0.3.6.0.txt b/Changelogs/0.3.6.0.txt index 742f3668..6d0bf63c 100644 --- a/Changelogs/0.3.6.0.txt +++ b/Changelogs/0.3.6.0.txt @@ -2,9 +2,10 @@ [Added] Added ability to sell Primary weapon from hands and empty backpacks. Thanks to @He-Man [Changed] Increased max player load 2x to compensate for the new stamina system in 1.54. [Changed] Increased backpack storage limits to allow carrying long weapons. +[Fixed] Updated Epoch armor stats UI system to support new changes since 1.54. [Fixed] Changes to default Arma weapon configs to allow long (Lynx,etc) weapons to be stored in backpacks. [Fixed] Unable to sell after attempting to sell a temporary vehicle. Thanks to @He-Man -[Fixed] Updated Hitpoints to 1.54 for all custom Epoch characters, this fixes the hitpoint .rpt errors since 1.54 as well. +[Fixed] Updated Hitpoints for all custom Epoch characters, fixes the hitpoint .rpt errors since 1.54. [Fixed] Reduce run speed of Sappers since 1.54 update. [Fixed] Wood tower "add/remove wall" options are now only available when build mode is enabled. diff --git a/Sources/epoch_code/compile/environment/EPOCH_client_bitePlayer.sqf b/Sources/epoch_code/compile/environment/EPOCH_client_bitePlayer.sqf index 256b344c..9c7cfd05 100644 --- a/Sources/epoch_code/compile/environment/EPOCH_client_bitePlayer.sqf +++ b/Sources/epoch_code/compile/environment/EPOCH_client_bitePlayer.sqf @@ -1,21 +1,44 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Performs damage related effects + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/environment/EPOCH_client_bitePlayer.sqf + + Example: + [cursorTarget,_index] call EPOCH_upgradeBUILD; + + Parameter(s): + _this: OBJECT - Player + + Returns: + NOTHING +*/ if !(isNull _this && alive _this) then { - + _distance = 5; _toxicChance = 0.1; _bleedChance = 1; _bloodpChance = 0; _fatigueChance = 0.1; - + _bleedAmount = 30; _bloodpAmount = 2; - + _soundEffect = -1; _soundEffectGlobal = false; _canSee = false; _ppEffect = 0; switch (typeOf _this) do { - case "Snake_random_EPOCH": { + case "Snake_random_EPOCH": { _distance = 3; _toxicChance = 0.2; _bloodpChance = 1; @@ -123,4 +146,4 @@ if !(isNull _this && alive _this) then { player setFatigue 1; }; }; -}; \ No newline at end of file +}; diff --git a/Sources/epoch_code/compile/environment/EPOCH_client_earthQuake.sqf b/Sources/epoch_code/compile/environment/EPOCH_client_earthQuake.sqf index 8cf594c8..89414573 100644 --- a/Sources/epoch_code/compile/environment/EPOCH_client_earthQuake.sqf +++ b/Sources/epoch_code/compile/environment/EPOCH_client_earthQuake.sqf @@ -1,3 +1,26 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Triggers earthquake with increasing intensity the closer the player + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/environment/EPOCH_client_earthQuake.sqf + + Example: + _location call EPOCH_client_earthQuake + + Parameter(s): + _this: ARRAY - Locaton of epicenter + + Returns: + Script handle +*/ _epicenter = _this; _distance = player distance _epicenter; _intensity = 1; @@ -12,4 +35,4 @@ if (_distance < 250) then { }; }; }; -_intensity spawn BIS_fnc_earthQuake; \ No newline at end of file +_intensity spawn BIS_fnc_earthQuake; diff --git a/Sources/epoch_code/compile/environment/EPOCH_client_loadAnimalBrain.sqf b/Sources/epoch_code/compile/environment/EPOCH_client_loadAnimalBrain.sqf index 6cde01fe..17afd304 100644 --- a/Sources/epoch_code/compile/environment/EPOCH_client_loadAnimalBrain.sqf +++ b/Sources/epoch_code/compile/environment/EPOCH_client_loadAnimalBrain.sqf @@ -1,3 +1,26 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Creates animals with custom Epoch fsm AI "brain" + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/environment/EPOCH_client_loadAnimalBrain.sqf + + Example: + call EPOCH_client_loadAnimalBrain; + + Parameter(s): + None + + Returns: + NOTHING +*/ private["_fightOrFlight", "_id", "_animal", "_tryAnimalPos", "_animalPos", "_randomIndex", "_randomAIClass", "_aiTables", "_plyrPos"]; if (count(player nearEntities["Animal_Base_F", 200]) >= 1) exitWith{}; diff --git a/Sources/epoch_code/compile/interface_event_handlers/EPOCH_Interface_interact.sqf b/Sources/epoch_code/compile/interface_event_handlers/EPOCH_Interface_interact.sqf deleted file mode 100644 index 9811089a..00000000 --- a/Sources/epoch_code/compile/interface_event_handlers/EPOCH_Interface_interact.sqf +++ /dev/null @@ -1,75 +0,0 @@ -disableSerialization; -// diag_log format["DEBUG INTERACT: %1", _this]; - -_control = _this select 0; -_prevIndex = _this select 1; - -_selected = (_control lbValue _prevIndex); -_data = (_control lbData _prevIndex); - -// diag_log format["DEBUG INTERACT SELECTED: %1 DATA: %2", _selected, _data]; - -lbClear 1700; - - -_selectedInteractID = format["%1_%2",_data,_selected]; - -if (_data == "Shop") exitWith { - _shopArray = getArray (configFile >> "CfgInteract" >> _selectedInteractID >> "shop"); - _dt = [format["START SHOP DIALOG: %1", _shopArray], 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; - closeDialog 0; -}; - - -if (_data == "Mission") exitWith { - _missionArray = getArray (configFile >> "CfgInteract" >> _selectedInteractID >> "mission"); - _dt = [format["START MISSION DIALOG: %1", _missionArray], 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; - closeDialog 0; -}; - -_responseArray = getArray (configFile >> "CfgInteract" >> _selectedInteractID >> "responseNPC"); - -if !(_responseArray isEqualTo []) then { - _response = (_responseArray select floor(random(count _responseArray))); - if (_response != "") then { - _dt = [format["%1", _response], 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; - }; -}; - -// diag_log format["DEBUG INTERACT _interactID: %1", _selectedInteractID]; - - -_dataArray = getArray (configFile >> "CfgInteract" >> _selectedInteractID >> "interactMenu"); -{ - _interactSecondID = format["Interact_%1", _x]; - _interactName = getText (configFile >> "CfgInteract" >> _interactSecondID >> "interactName"); - _index = lbAdd[1700,_interactName]; - - - lbSetValue [1700, _index, _x]; - lbSetData [1700, _index,"Interact"]; -}forEach _dataArray; - - - -_dataArray = getArray (configFile >> "CfgInteract" >> _selectedInteractID >> "missionMenu"); -{ - _interactSecondID = format["Mission_%1", _x]; - _interactName = getText (configFile >> "CfgInteract" >> _interactSecondID >> "interactName"); - _index = lbAdd[1700,_interactName]; - - lbSetValue [1700, _index, _x]; - lbSetData [1700, _index,"Mission"]; -}forEach _dataArray; - - - -_dataArray = getArray (configFile >> "CfgInteract" >> _selectedInteractID >> "shopMenu"); -{ - _interactSecondID = format["Shop_%1", _x]; - _interactName = getText (configFile >> "CfgInteract" >> _interactSecondID >> "interactName"); - _index = lbAdd[1700,_interactName]; - - lbSetValue [1700, _index, _x]; - lbSetData [1700, _index,"Shop"]; -}forEach _dataArray; \ No newline at end of file diff --git a/Sources/epoch_code/compile/interface_event_handlers/EPOCH_KeyDown.sqf b/Sources/epoch_code/compile/interface_event_handlers/EPOCH_KeyDown.sqf index c0341471..98ccf344 100644 --- a/Sources/epoch_code/compile/interface_event_handlers/EPOCH_KeyDown.sqf +++ b/Sources/epoch_code/compile/interface_event_handlers/EPOCH_KeyDown.sqf @@ -1,4 +1,31 @@ -private["_dikCode", "_handled"]; +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Key Down EH functions + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/interface_event_handlers/EPOCH_KeyDown.sqf + + Example: + _this call EPOCH_KeyDown; + + Parameter(s): + _this select 0: CONTROL - _display + _this select 1: NUMBER - _dikcode + _this select 2: BOOL - Shift State + _this select 3: BOOL - Ctrl State + _this select 4: BOOL - Alt State + + Returns: + BOOL +*/ +private["_handled"]; params ["_display","_dikCode","_shift","_ctrl","_alt"]; _handled = false; diff --git a/Sources/epoch_code/compile/interface_event_handlers/EPOCH_KeyUp.sqf b/Sources/epoch_code/compile/interface_event_handlers/EPOCH_KeyUp.sqf index ed0c7304..5843327c 100644 --- a/Sources/epoch_code/compile/interface_event_handlers/EPOCH_KeyUp.sqf +++ b/Sources/epoch_code/compile/interface_event_handlers/EPOCH_KeyUp.sqf @@ -1,4 +1,31 @@ -private["_dikCode", "_handled"]; +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Key Up EH functions + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/interface_event_handlers/EPOCH_KeyUp.sqf + + Example: + _this call EPOCH_KeyUp; + + Parameter(s): + _this select 0: CONTROL - _display + _this select 1: NUMBER - _dikcode + _this select 2: BOOL - Shift State + _this select 3: BOOL - Ctrl State + _this select 4: BOOL - Alt State + + Returns: + BOOL +*/ +private["_handled"]; params ["_display","_dikCode","_shift","_ctrl","_alt"]; _handled = false; @@ -11,4 +38,3 @@ if (_dikCode == EPOCH_keysAction) then { _handled - diff --git a/Sources/epoch_code/compile/interface_event_handlers/EPOCH_onChar.sqf b/Sources/epoch_code/compile/interface_event_handlers/EPOCH_onChar.sqf index e8ca86f4..807ac895 100644 --- a/Sources/epoch_code/compile/interface_event_handlers/EPOCH_onChar.sqf +++ b/Sources/epoch_code/compile/interface_event_handlers/EPOCH_onChar.sqf @@ -1,3 +1,27 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + removes any non numeric chars and inforce number to max limit to a control. + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/interface_event_handlers/EPOCH_onChar.sqf + + Example: + [_control,_maxLimit] call EPOCH_onChar; + + Parameter(s): + _this select 0: CONTROL - _display + _this select 0: NUMBER - max limit + + Returns: + NOTHING +*/ _control = _this select 0; _textArr = toArray(ctrlText(_control select 0)); { @@ -9,4 +33,4 @@ if (count _textArr > 10) then { _textArr resize 10; }; _num = parseNumber(toString _textArr) min (_this select 1); -(_control select 0) ctrlSetText str(_num); \ No newline at end of file +(_control select 0) ctrlSetText str(_num); diff --git a/Sources/epoch_code/compile/inventory/EPOCH_factorArmor.sqf b/Sources/epoch_code/compile/inventory/EPOCH_factorArmor.sqf index 5e71f4e1..c0b4bb0d 100644 --- a/Sources/epoch_code/compile/inventory/EPOCH_factorArmor.sqf +++ b/Sources/epoch_code/compile/inventory/EPOCH_factorArmor.sqf @@ -1,3 +1,27 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Gear Armor factor for passThrough calculation with support for A3 1.54+. + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/inventory/EPOCH_factorArmor.sqf + + Example: + _gearArmor = ([_passThrough,_armor] call EPOCH_factorArmor); + + Parameter(s): + _this select 0: NUMBER - passThrough + _this select 1: NUMBER - armor + + Returns: + NUMBER +*/ private ["_passThrough","_armor","_factor"]; _passThrough = _this select 0; _armor = _this select 1; diff --git a/Sources/epoch_code/compile/inventory/EPOCH_gearArmorCalc.sqf b/Sources/epoch_code/compile/inventory/EPOCH_gearArmorCalc.sqf index ce074dd5..3320b9be 100644 --- a/Sources/epoch_code/compile/inventory/EPOCH_gearArmorCalc.sqf +++ b/Sources/epoch_code/compile/inventory/EPOCH_gearArmorCalc.sqf @@ -1,4 +1,32 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Gear armor calculation with support for A3 1.54+. + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/inventory/EPOCH_gearArmorCalc.sqf + + Example: + _vestArmor = (vest player) call EPOCH_gearArmorCalc; + + Parameter(s): + _this select 0: STRING - Vest or Headhear classname + + Returns: + NUMBER +*/ private ["_passThrough","_armor"]; -_passThrough = getNumber(configFile >> "CfgWeapons" >> _this >> "ItemInfo" >> "passThrough"); -_armor = getNumber(configFile >> "CfgWeapons" >> _this >> "ItemInfo" >> "armor"); -([_passThrough,_armor] call EPOCH_factorArmor) +_gearConfig = (configfile >> "CfgWeapons" >> _this); +_passThrough = getNumber(_gearConfig >> "ItemInfo" >> "passThrough"); +_armor = getNumber(_gearConfig >> "ItemInfo" >> "armor"); +_gearArmor = ([_passThrough,_armor] call EPOCH_factorArmor); +{ + _gearArmor = _gearArmor + ([getNumber(_x >> 'passThrough'),getNumber(_x >> 'armor')] call EPOCH_factorArmor) +} forEach ("isClass _x" configclasses (_gearConfig >> "ItemInfo" >> "HitpointsProtectionInfo")); +_gearArmor diff --git a/Sources/epoch_code/compile/inventory/EPOCH_initUI.sqf b/Sources/epoch_code/compile/inventory/EPOCH_initUI.sqf index 4e444fc3..5f96bcdd 100644 --- a/Sources/epoch_code/compile/inventory/EPOCH_initUI.sqf +++ b/Sources/epoch_code/compile/inventory/EPOCH_initUI.sqf @@ -1,3 +1,28 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Init epoch gear armor stats. + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/inventory/EPOCH_initUI.sqf + + Example: + player addEventHandler ["InventoryOpened", { + _this spawn EPOCH_initUI; + }]; + + Parameter(s): + None + + Returns: + NOHTING +*/ private ["_bar","_uniformArmor","_totalArmor","_finalArmor","_vestArmor","_headgearArmor","_bar_pos","_bar_compare","_color","_colorCompare","_display","_totalArmorMax"]; disableSerialization; diff --git a/Sources/epoch_code/compile/inventory/EPOCH_maxArmorInit.sqf b/Sources/epoch_code/compile/inventory/EPOCH_maxArmorInit.sqf index 7eebe3eb..5d78e337 100644 --- a/Sources/epoch_code/compile/inventory/EPOCH_maxArmorInit.sqf +++ b/Sources/epoch_code/compile/inventory/EPOCH_maxArmorInit.sqf @@ -1,11 +1,31 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Gear armor max armor calculation with support for A3 1.54+. + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/inventory/EPOCH_maxArmorInit.sqf + + Example: + call EPOCH_maxArmorInit; + + Parameter(s): + None + + Returns: + NOTHING +*/ private ["_tempArmor","_maxArmorUniform","_curArmor","_maxArmorVest","_maxArmorHeadgear"]; _maxArmorUniform = 0; { - - _tempArmor = 0; - {_tempArmor = _tempArmor + ([getNumber(_x >> 'passThrough'),getNumber(_x >> 'armor')] call EPOCH_factorArmor)} forEach ("isClass _x" configclasses (_x >> "HitPoints")); - _curArmor = ([getNumber(_x >> 'passThrough'),getNumber(_x >> 'armor')] call EPOCH_factorArmor) + getNumber(_x >> 'armorStructural') + _tempArmor; - + _curArmor = ([getNumber(_x >> 'passThrough'),getNumber(_x >> 'armor')] call EPOCH_factorArmor) + getNumber(_x >> 'armorStructural'); + {_curArmor = _curArmor + ([getNumber(_x >> 'passThrough'),getNumber(_x >> 'armor')] call EPOCH_factorArmor)} forEach ("isClass _x" configclasses (_x >> "HitPoints")); if (_curArmor > _maxArmorUniform) then { _maxArmorUniform = _curArmor; }; @@ -14,6 +34,7 @@ _maxArmorUniform = 0; _maxArmorVest = 0; { _curArmor = ([getNumber(_x >> 'itemInfo' >> 'passThrough'),getNumber(_x >> 'itemInfo' >> 'armor')] call EPOCH_factorArmor); + {_curArmor = _curArmor + ([getNumber(_x >> 'passThrough'),getNumber(_x >> 'armor')] call EPOCH_factorArmor)} forEach ("isClass _x" configclasses (_x >> "ItemInfo" >> "HitpointsProtectionInfo")); if (_curArmor > _maxArmorVest) then { _maxArmorVest = _curArmor; }; @@ -22,6 +43,7 @@ _maxArmorVest = 0; _maxArmorHeadgear = 0; { _curArmor = ([getNumber(_x >> 'itemInfo' >> 'passThrough'),getNumber(_x >> 'itemInfo' >> 'armor')] call EPOCH_factorArmor); + {_curArmor = _curArmor + ([getNumber(_x >> 'passThrough'),getNumber(_x >> 'armor')] call EPOCH_factorArmor)} forEach ("isClass _x" configclasses (_x >> "ItemInfo" >> "HitpointsProtectionInfo")); if (_curArmor > _maxArmorHeadgear) then { _maxArmorHeadgear = _curArmor; }; diff --git a/Sources/epoch_code/compile/inventory/EPOCH_refeshUI.sqf b/Sources/epoch_code/compile/inventory/EPOCH_refeshUI.sqf index 693a9250..5f86e837 100644 --- a/Sources/epoch_code/compile/inventory/EPOCH_refeshUI.sqf +++ b/Sources/epoch_code/compile/inventory/EPOCH_refeshUI.sqf @@ -1,3 +1,26 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Gear armor stats UI refresh code + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/inventory/EPOCH_refeshUI.sqf + + Example: + 0 call EPOCH_refeshUI; + + Parameter(s): + None + + Returns: + NOTHING +*/ private ["_newArmor","_totalArmor","_totalArmorMax","_selectedClass","_selectedItem","_bar","_uniformArmor","_finalArmor","_vestArmor","_headgearArmor","_totalArmorUI","_bar_compare"]; disableSerialization; if (!isNull findDisplay 602) then { @@ -62,5 +85,4 @@ if (!isNull findDisplay 602) then { _bar_compare = _totalArmorUI select 1; _finalArmor = linearConversion [0,_totalArmorMax,_newArmor,0.01,1,true]; _bar_compare progressSetPosition _finalArmor; - }; diff --git a/Sources/epoch_code/compile/inventory/EPOCH_uniformArmorCalc.sqf b/Sources/epoch_code/compile/inventory/EPOCH_uniformArmorCalc.sqf index c73ba0a1..37fb02fd 100644 --- a/Sources/epoch_code/compile/inventory/EPOCH_uniformArmorCalc.sqf +++ b/Sources/epoch_code/compile/inventory/EPOCH_uniformArmorCalc.sqf @@ -1,3 +1,26 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Uniform Gear armor calculation + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/inventory/EPOCH_uniformArmorCalc.sqf + + Example: + _newArmor = _selectedClass call EPOCH_uniformArmorCalc; + + Parameter(s): + _this: STRING - CfgWeapons class name of uniform + + Returns: + NUMBER +*/ private ["_uniformClass","_uniformArmor","_uniformConfig","_uniformArmorStructural"]; _uniformClass = _this;