diff --git a/.github/workflows/pboproject.yml b/.github/workflows/pboproject.yml index 4aea0e7c18..dea1394521 100644 --- a/.github/workflows/pboproject.yml +++ b/.github/workflows/pboproject.yml @@ -15,7 +15,7 @@ jobs: with: toolsUrl: ${{ secrets.ARMA3_TOOLS_URL }} - name: Install Mikero Tools - uses: arma-actions/mikero-tools@2021-04-10 + uses: arma-actions/mikero-tools@2021-11-06 - name: Download game data run: | Invoke-WebRequest "$env:ARMA3_DATA_URL" -OutFile arma3.zip diff --git a/AUTHORS.txt b/AUTHORS.txt index 3b3c7a669c..e9391fb8cb 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -151,7 +151,9 @@ Riccardo Petricca Robert Boklahánics ruPaladin Rutger "RedBery" Meijering +sancron Schwaggot +Seb shukari simon84 Skengman2 diff --git a/README.md b/README.md index 6d8d5aebae..48b83610f1 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@

- ACE3 Version + ACE3 Version ACE3 Issues diff --git a/addons/advanced_ballistics/ACE_Settings.hpp b/addons/advanced_ballistics/ACE_Settings.hpp index d90a4e748f..a34547249c 100644 --- a/addons/advanced_ballistics/ACE_Settings.hpp +++ b/addons/advanced_ballistics/ACE_Settings.hpp @@ -4,7 +4,7 @@ class ACE_Settings { }; class GVAR(muzzleVelocityVariationEnabled) { movedToSQF = 1; - }; + }; class GVAR(ammoTemperatureEnabled) { movedToSQF = 1; }; diff --git a/addons/advanced_ballistics/RscTitles.hpp b/addons/advanced_ballistics/RscTitles.hpp index 1e29db268b..8cf3b3b034 100644 --- a/addons/advanced_ballistics/RscTitles.hpp +++ b/addons/advanced_ballistics/RscTitles.hpp @@ -52,4 +52,4 @@ class RscTitles { }; }; }; -}; \ No newline at end of file +}; diff --git a/addons/advanced_ballistics/functions/fnc_diagnoseWeapons.sqf b/addons/advanced_ballistics/functions/fnc_diagnoseWeapons.sqf index d2f5cba98f..0bae282cc2 100644 --- a/addons/advanced_ballistics/functions/fnc_diagnoseWeapons.sqf +++ b/addons/advanced_ballistics/functions/fnc_diagnoseWeapons.sqf @@ -68,7 +68,7 @@ for "_i" from 0 to (count _cfgWeapons)-1 do { private _barrelVelocityShift = [_barrelLength, _muzzleVelocityTable, _barrelLengthTable, _vanillaInitialSpeed] call FUNC(calculateBarrelLengthVelocityShift); private _abInitialSpeed = _vanillaInitialSpeed + _barrelVelocityShift; // -------------------------------------------------- - + if (_weapon find "_base" == -1 && _weapon find "_Base" == -1) then { #ifdef DEBUG_INIT_SPEEDS _data pushBack [-_forEachIndex, _abInitialSpeed, _magazine, _weapon]; diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index ec1d37c42a..90dc370ff2 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -31,12 +31,14 @@ if (_abort) then { private _maxRange = uiNamespace getVariable format[QGVAR(maxRange_%1), _ammo]; if (isNil "_maxRange") then { private _airFriction = getNumber(configFile >> "CfgAmmo" >> _ammo >> "airFriction"); - private _maxRange = if (_airFriction < 0) then { + private _vanillaInitialSpeed = getNumber (configFile >> "CfgMagazines" >> _magazine >> "initSpeed"); + _maxRange = if (_airFriction < 0) then { private _maxTime = ((_vanillaInitialSpeed - BULLET_TRACE_MIN_VELOCITY) / (BULLET_TRACE_MIN_VELOCITY * -_airFriction * _vanillaInitialSpeed)) max getNumber(configFile >> "CfgAmmo" >> _ammo >> "tracerEndTime"); -ln(1 - _airFriction * _vanillaInitialSpeed * _maxTime) / _airFriction } else { _vanillaInitialSpeed * getNumber(configFile >> "CfgAmmo" >> _ammo >> "tracerEndTime") }; + _maxRange = _maxRange * 1.3; // Adding 30% more to range just to be safe uiNamespace setVariable [format[QGVAR(maxRange_%1), _ammo], _maxRange]; }; if (ACE_player distance _unit > _maxRange && {ACE_player distance ((getPosASL _unit) vectorAdd ((vectorNormalized _bulletVelocity) vectorMultiply _maxRange)) > _maxRange}) exitWith {}; diff --git a/addons/advanced_ballistics/functions/script_component.hpp b/addons/advanced_ballistics/functions/script_component.hpp index 2c718bf9db..4790cc80be 100644 --- a/addons/advanced_ballistics/functions/script_component.hpp +++ b/addons/advanced_ballistics/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\advanced_ballistics\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\advanced_ballistics\script_component.hpp" diff --git a/addons/advanced_fatigue/functions/fnc_handleStaminaBar.sqf b/addons/advanced_fatigue/functions/fnc_handleStaminaBar.sqf index d73a6deb0d..0f4c5d0fa6 100644 --- a/addons/advanced_fatigue/functions/fnc_handleStaminaBar.sqf +++ b/addons/advanced_fatigue/functions/fnc_handleStaminaBar.sqf @@ -25,7 +25,7 @@ _posAndSize set [2, _stamina * GVAR(staminaBarWidth)]; _staminaBarContainer ctrlSetPosition _posAndSize; // - Opacity ------------------------------------------------------------------ -if (GVAR(fadeStaminaBar)) then { +if (GVAR(fadeStaminaBar)) then { if (_stamina >= 0.8) then { _staminaBarContainer ctrlSetFade (0.9 + 0.1 * (_stamina - 0.8) / 0.2); } else { diff --git a/addons/ai/functions/fnc_garrisonMove.sqf b/addons/ai/functions/fnc_garrisonMove.sqf index 6bba35fbc3..25296293a4 100644 --- a/addons/ai/functions/fnc_garrisonMove.sqf +++ b/addons/ai/functions/fnc_garrisonMove.sqf @@ -33,7 +33,7 @@ private _unitMoveListUnits = (_unitMoveList apply {_x select 0}); _x setVariable [QGVAR(garrisonMove_unitPosMemory), nil, true]; } foreach _unitMoveListUnits; -// Avoid duplicate PFHs +// Avoid duplicate PFHs if (isNil QGVAR(garrison_moveUnitPFH)) then { missionNameSpace setVariable [QGVAR(garrison_moveUnitPFH), true, true]; @@ -114,7 +114,7 @@ if (isNil QGVAR(garrison_moveUnitPFH)) then { (_unit getVariable [QGVAR(garrisonMove_unitPosMemory), [CBA_missionTime, [0,0,0]]]) params ["_unitPosTimer", "_unitOldPos"]; // AI may sometimes not be able to report unitReady, this is to avoid the PFH running forever - switch true do { + switch true do { case ((_unitPos distance _pos) < 1.5) : { call _fnc_attemptSuccessful; }; @@ -127,7 +127,7 @@ if (isNil QGVAR(garrison_moveUnitPFH)) then { default { _unit setVariable [QGVAR(garrisonMove_unitPosMemory), [CBA_missionTime, _unitPos]]; - }; + }; }; }; }; diff --git a/addons/aim120/stringtable.xml b/addons/aim120/stringtable.xml index b24a1b1210..646a167631 100644 --- a/addons/aim120/stringtable.xml +++ b/addons/aim120/stringtable.xml @@ -37,5 +37,8 @@ Direct + + Loft + diff --git a/addons/aircraft/CfgMagazines.hpp b/addons/aircraft/CfgMagazines.hpp index d08a460bb8..e8ae200cd9 100644 --- a/addons/aircraft/CfgMagazines.hpp +++ b/addons/aircraft/CfgMagazines.hpp @@ -19,13 +19,13 @@ class CfgMagazines { displayName = CSTRING(GatlingDescriptionAP); displayNameShort = CSTRING(GatlingDescriptionShortAP); }; - + class ACE_1000Rnd_Gatling_30mm_Plane_CAS_CM41: 1000Rnd_Gatling_30mm_Plane_CAS_01_F { ammo = "ACE_Gatling_30mm_Sub_CM41"; displayName = CSTRING(GatlingDescriptionCM41); displayNameShort = CSTRING(GatlingDescriptionShortCM41); }; - + class ACE_1000Rnd_Gatling_30mm_Plane_CAS_CM51: 1000Rnd_Gatling_30mm_Plane_CAS_01_F { ammo = "ACE_Gatling_30mm_Sub_CM51"; displayName = CSTRING(GatlingDescriptionCM51); diff --git a/addons/aircraft/RscInGameUI.hpp b/addons/aircraft/RscInGameUI.hpp index 67116a7b62..10d41d7009 100644 --- a/addons/aircraft/RscInGameUI.hpp +++ b/addons/aircraft/RscInGameUI.hpp @@ -1,6 +1,6 @@ class RscControlsGroup; class RscText; -class RangeText: RscText{}; +class RangeText: RscText {}; class RscPicture; class RscOpticsText; class RscIGProgress; diff --git a/addons/arsenal/functions/fnc_addRightPanelButton.sqf b/addons/arsenal/functions/fnc_addRightPanelButton.sqf index b906c13c4f..e09aef4c9e 100644 --- a/addons/arsenal/functions/fnc_addRightPanelButton.sqf +++ b/addons/arsenal/functions/fnc_addRightPanelButton.sqf @@ -42,12 +42,12 @@ if (_position >= 0 && _position <= 9) then { private _cfgWeapons = configFile >> "CfgWeapons"; _items = _items select { private _configItemInfo = _cfgWeapons >> _x >> "ItemInfo"; - + _x isKindOf ["CBA_MiscItem", _cfgWeapons] && {getNumber (_configItemInfo >> "type") in [TYPE_MUZZLE, TYPE_OPTICS, TYPE_FLASHLIGHT, TYPE_BIPOD]} || {getNumber (_configItemInfo >> "type") in [TYPE_FIRST_AID_KIT, TYPE_MEDIKIT, TYPE_TOOLKIT]} || {getText (_cfgWeapons >> _x >> "simulation") == "ItemMineDetector"} }; - + _return = _position; GVAR(customRightPanelButtons) set [_position, [_items apply {toLower _x}, _picture, _tooltip]]; }; diff --git a/addons/arsenal/functions/fnc_buttonImport.sqf b/addons/arsenal/functions/fnc_buttonImport.sqf index 3eefba41a4..4a06f3edeb 100644 --- a/addons/arsenal/functions/fnc_buttonImport.sqf +++ b/addons/arsenal/functions/fnc_buttonImport.sqf @@ -25,10 +25,10 @@ if (GVAR(shiftState) && {is3DEN}) then { { if ( - count _x == 2 && - {_x select 0 isEqualType ""} && + count _x == 2 && + {_x select 0 isEqualType ""} && {_x select 0 != ""} && - {_x select 1 isEqualType []} && + {_x select 1 isEqualType []} && {count (_x select 1) == 10} ) then { _x call FUNC(addDefaultLoadout); diff --git a/addons/arsenal/functions/fnc_fillLoadoutsList.sqf b/addons/arsenal/functions/fnc_fillLoadoutsList.sqf index 433f0304df..7cdec585e7 100644 --- a/addons/arsenal/functions/fnc_fillLoadoutsList.sqf +++ b/addons/arsenal/functions/fnc_fillLoadoutsList.sqf @@ -38,7 +38,7 @@ if (GVAR(currentLoadoutsTab) != IDC_buttonSharedLoadouts) then { { _x params ["_loadoutName", "_loadoutData"]; - private _loadoutCachedInfo = _contentPanelCtrl getVariable (_loadoutName + str GVAR(currentLoadoutsTab)); + private _loadoutCachedInfo = _contentPanelCtrl getVariable (_loadoutName + str GVAR(currentLoadoutsTab)); if (isNil "_loadoutCachedInfo") then { [_loadoutData] call FUNC(verifyLoadout) diff --git a/addons/arsenal/functions/fnc_handleStats.sqf b/addons/arsenal/functions/fnc_handleStats.sqf index 16cdc1c7e1..56d503423a 100644 --- a/addons/arsenal/functions/fnc_handleStats.sqf +++ b/addons/arsenal/functions/fnc_handleStats.sqf @@ -191,7 +191,6 @@ if (!isNil "_itemCfg") then { ] find GVAR(currentLeftPanel), true] call _handleStatsFnc; }; } else { - switch (GVAR(currentRightPanel)) do { case IDC_buttonOptic: { [0, false] call _handleStatsFnc; @@ -220,6 +219,11 @@ if (!isNil "_itemCfg") then { case IDC_buttonMisc: { [7, false] call _handleStatsFnc; }; + default { + if (GVAR(currentRightPanel) in [RIGHT_PANEL_CUSTOM_BUTTONS]) then { + [7, false] call _handleStatsFnc; + }; + }; }; }; } else { diff --git a/addons/arsenal/functions/fnc_onSelChangedRightListnBox.sqf b/addons/arsenal/functions/fnc_onSelChangedRightListnBox.sqf index c2b14c6462..0c535c8d37 100644 --- a/addons/arsenal/functions/fnc_onSelChangedRightListnBox.sqf +++ b/addons/arsenal/functions/fnc_onSelChangedRightListnBox.sqf @@ -45,7 +45,7 @@ private _fnc_selectRight = { if (GVAR(currentLeftPanel) in [IDC_buttonUniform, IDC_buttonVest, IDC_buttonBackpack]) then { [ - _item, + _item, ["CfgWeapons", "CfgMagazines"] select (GVAR(currentRightPanel) in [IDC_buttonMag, IDC_buttonMagALL, IDC_buttonThrow, IDC_buttonPut]) ] call _fnc_selectRight; }; diff --git a/addons/arsenal/functions/fnc_statTextStatement_mass.sqf b/addons/arsenal/functions/fnc_statTextStatement_mass.sqf index 9c2a0501a6..187c5b74c2 100644 --- a/addons/arsenal/functions/fnc_statTextStatement_mass.sqf +++ b/addons/arsenal/functions/fnc_statTextStatement_mass.sqf @@ -8,7 +8,7 @@ * 1: item config path (CONFIG) * * Return Value: - * String to display + * String to display * * Public: No */ diff --git a/addons/arsenal/functions/fnc_statTextStatement_scopeVisionMode.sqf b/addons/arsenal/functions/fnc_statTextStatement_scopeVisionMode.sqf index f5a29f1996..9d6350e2b6 100644 --- a/addons/arsenal/functions/fnc_statTextStatement_scopeVisionMode.sqf +++ b/addons/arsenal/functions/fnc_statTextStatement_scopeVisionMode.sqf @@ -20,7 +20,7 @@ private _opticsModes = ("true" configClasses (_config >> "ItemInfo" >> "OpticsMo private _visionMode = getArray (_x >> "visionMode"); [ getNumber (_x >> "useModelOptics") == 1, //is in optics - _visionMode isEqualTo [], //optional NVG + _visionMode isEqualTo [], //optional NVG "NVG" in _visionMode, //Integrated NVG "Ti" in _visionMode //Integrated Thermal ] diff --git a/addons/arsenal/functions/script_component.hpp b/addons/arsenal/functions/script_component.hpp index 523addf768..45c75ef68b 100644 --- a/addons/arsenal/functions/script_component.hpp +++ b/addons/arsenal/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\arsenal\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\arsenal\script_component.hpp" diff --git a/addons/arsenal/stringtable.xml b/addons/arsenal/stringtable.xml index 7b980ff310..edcf637ce2 100644 --- a/addons/arsenal/stringtable.xml +++ b/addons/arsenal/stringtable.xml @@ -422,6 +422,7 @@ Ordenar por protección balística Сортировка по баллистической защите Sortuj po ochronie balistycznej + Nach ballistischem Schutz sortieren Sort by explosive protection @@ -430,6 +431,7 @@ Ordenar por protección de explosivos Сортировка по защите от взрывов Sortuj po ochronie przeciw wybuchom + Nach Explosionsschutz sortieren Share or stop sharing the selected loadout @@ -1386,6 +1388,7 @@ Opoźnienie zapalnika 信管設定時間 Tiempo de espoleta + Detonationsverzögerung Detonates on impact diff --git a/addons/arsenal/ui/script_component.hpp b/addons/arsenal/ui/script_component.hpp index 523addf768..45c75ef68b 100644 --- a/addons/arsenal/ui/script_component.hpp +++ b/addons/arsenal/ui/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\arsenal\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\arsenal\script_component.hpp" diff --git a/addons/artillerytables/RscRangeTable.hpp b/addons/artillerytables/RscRangeTable.hpp index 8c673537d6..3245b77af6 100644 --- a/addons/artillerytables/RscRangeTable.hpp +++ b/addons/artillerytables/RscRangeTable.hpp @@ -42,7 +42,7 @@ class GVAR(rangeTableDialog) { colorSelectBackground[] = {0, 0, 0, 0.025}; colorSelectBackground2[] = {0, 0, 0, 0.025}; colorScrollbar[] = {0.95,0,0.95,1}; - class ListScrollBar: ScrollBar{ + class ListScrollBar: ScrollBar { color[] = {0,0,0,0.6}; }; }; diff --git a/addons/artillerytables/initSettings.sqf b/addons/artillerytables/initSettings.sqf index 0a909ae41b..762010b2ca 100644 --- a/addons/artillerytables/initSettings.sqf +++ b/addons/artillerytables/initSettings.sqf @@ -1,5 +1,3 @@ -// CBA Settings [ADDON: ace_artillerytables]: - private _categoryName = [format ["ACE %1", localize "str_a3_cfgmarkers_nato_art"], LLSTRING(rangetable_displayName)]; [ diff --git a/addons/atragmx/functions/script_component.hpp b/addons/atragmx/functions/script_component.hpp index 6e49f39695..7178dcf6f2 100644 --- a/addons/atragmx/functions/script_component.hpp +++ b/addons/atragmx/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\atragmx\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\atragmx\script_component.hpp" diff --git a/addons/attach/functions/fnc_handleKilled.sqf b/addons/attach/functions/fnc_handleKilled.sqf index 0aaf0b03cb..fb62cc90d6 100644 --- a/addons/attach/functions/fnc_handleKilled.sqf +++ b/addons/attach/functions/fnc_handleKilled.sqf @@ -1,7 +1,7 @@ #include "script_component.hpp" /* * Author: PabstMirror - * Handles when vehicle or man is killed. + * Handles when vehicle or man is killed. * Note: Runs where unit is local. * * Arguments: diff --git a/addons/attach/functions/script_component.hpp b/addons/attach/functions/script_component.hpp index b28de85182..cbc2a0f3b9 100644 --- a/addons/attach/functions/script_component.hpp +++ b/addons/attach/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\attach\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\attach\script_component.hpp" diff --git a/addons/backpacks/functions/script_component.hpp b/addons/backpacks/functions/script_component.hpp index b6bb78fff5..747400a571 100644 --- a/addons/backpacks/functions/script_component.hpp +++ b/addons/backpacks/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\backpacks\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\backpacks\script_component.hpp" diff --git a/addons/ballistics/CfgAmmo.hpp b/addons/ballistics/CfgAmmo.hpp index 51e5c4ddd4..55354f088e 100644 --- a/addons/ballistics/CfgAmmo.hpp +++ b/addons/ballistics/CfgAmmo.hpp @@ -280,7 +280,7 @@ class CfgAmmo { class B_762x51_Ball: BulletBase { airFriction=-0.00103711; tracerScale = 1.2; //0.6; - tracerStartTime=0.073; // Based on the British L5A1 which burns out to 1000m + tracerStartTime=0.073; // Based on the British L5A1 which burns out to 1000m tracerEndTime=2.15957; // Time in seconds calculated with ballistics calculator ACE_caliber=7.823; ACE_bulletLength=28.956; @@ -365,20 +365,30 @@ class CfgAmmo { ACE_barrelLengths[]={330.2, 406.4, 508.0}; }; class ACE_762x51_Ball_Subsonic: B_762x51_Ball { - airFriction=-0.00060194; - caliber=1; - hit=6; - typicalSpeed=320; - ACE_caliber=7.823; - ACE_bulletLength=34.036; - ACE_bulletMass=12.96; - ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; - ACE_ballisticCoefficients[]={0.235}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ICAO"; - ACE_dragModel=7; - ACE_muzzleVelocities[]={305, 325, 335, 340}; - ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; + airFriction = -0.00060194; + caliber = 1; + hit = 6; + typicalSpeed = 320; + visibleFire = 1; // B_762x51_Ball: 3 + audibleFire = 5; // B_762x51_Ball: 45 + dangerRadiusBulletClose = 4; // B_762x51_Ball: 8 + suppressionRadiusBulletClose = 2; // B_762x51_Ball: 6 + ACE_caliber = 7.823; + ACE_bulletLength = 34.036; + ACE_bulletMass = 12.96; + ACE_ammoTempMuzzleVelocityShifts[] = {-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; + ACE_ballisticCoefficients[] = {0.235}; + ACE_velocityBoundaries[] = {}; + ACE_standardAtmosphere = "ICAO"; + ACE_dragModel = 7; + ACE_muzzleVelocities[] = {305, 325, 335, 340}; + ACE_barrelLengths[] = {406.4, 508.0, 609.6, 660.4}; + class CamShakeExplode { + power = 2.2360699; // B_762x51_Ball: 2.8284299 + duration = 0.4; // B_762x51_Ball: 0.6 + frequency = 20; // B_762x51_Ball: 20 + distance = 6.7082; // B_762x51_Ball: 8.48528 + }; }; class ACE_762x67_Ball_Mk248_Mod_0: B_762x51_Ball { airFriction=-0.00072468; diff --git a/addons/ballistics/scripts/script_component.hpp b/addons/ballistics/scripts/script_component.hpp index 998ced0210..a257e3d384 100644 --- a/addons/ballistics/scripts/script_component.hpp +++ b/addons/ballistics/scripts/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\ballistics\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\ballistics\script_component.hpp" diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml index ad0152f00f..9a5c92f582 100644 --- a/addons/ballistics/stringtable.xml +++ b/addons/ballistics/stringtable.xml @@ -2761,15 +2761,31 @@ 6.5x47 mm 30Rnd Sand Mag (HPBT Scenar) + 6.5x47 mm 30発入り サンド 弾倉 (HPBT Scenar) + Ch. 6,5x47 mm 30Cps Sable (HPBT Scenar) + 6.5x47 mm 30-Patronen-Magazin Sandfarben (HPBT Scenar) + Magazynek 6.5x47 mm 30rd Piaskowy (HPBT Scenar) 6.5x47 mm 30Rnd Promet Mag (HPBT Scenar) + 6.5x47 mm 30発入り プロメット 弾倉 (HPBT Scenar) + Ch. 6,5x47 mm 30Cps Promet (HPBT Scenar) + 6.5x47 mm 30-Patronen-Magazin für Promet (HPBT Scenar) + Magazynek 6.5x47 mm 30rd Promet (HPBT Scenar) 6.5x47 mm 30Rnd Black Mag (HPBT Scenar) + 6.5x47 mm 30発入り ブラック 弾倉 (HPBT Scenar) + Ch. 6,5x47 mm 30Cps Noir (HPBT Scenar) + 6.5x47 mm 30-Patronen-Magazin Schwarz (HPBT Scenar) + Magazynek 6.5x47 mm 30rd Czarny (HPBT Scenar) 6.5x47 mm 30Rnd Khaki Mag (HPBT Scenar) + 6.5x47 mm 30発入り カーキ 弾倉 (HPBT Scenar) + Ch. 6,5x47 mm 30Cps Kaki (HPBT Scenar) + 6.5x47 mm 30-Patronen-Magazin Khaki (HPBT Scenar) + Magazynek 6.5x47 mm 30rd Khaki (HPBT Scenar) 6.5 mm Lapua @@ -2824,15 +2840,31 @@ 6.5 mm Creedmor 30Rnd Sand Mag + 6.5 mm クリードモア 30発入り サンド 弾倉 + Ch. 6,5 mm Creedmor 30Cps Sable + 6.5 mm Creedmor 30-Patronen-Magazin Sandfarben + Magazynek 6.5 mm Creedmor 30Rnd Piaskowy 6.5 mm Creedmor 30Rnd Promet Mag + 6.5 mm クリードモア 30発入り プロメット 弾倉 + Ch. 6,5 mm Creedmor 30Cps Promet + 6.5 mm Creedmor 30-Patronen-Magazin für Promet + Magazynek 6.5 mm Creedmor 30Rnd Promet 6.5 mm Creedmor 30Rnd Black Mag + 6.5 mm クリードモア 30発入り ブラック 弾倉 + Ch. 6,5 mm Creedmor 30Cps Noir + 6.5 mm Creedmor 30-Patronen-Magazin Schwarz + Magazynek 6.5 mm Creedmor 30Rnd Czarny 6.5 mm Creedmor 30Rnd Khaki Mag + 6.5 mm クリードモア 30発入り カーキ 弾倉 + Ch. 6,5 mm Creedmor 30Cps Kaki + 6.5 mm Creedmor 30-Patronen-Magazin Khaki + Magazynek 6.5 mm Creedmor 30Rnd Khaki 6.5 mm CM @@ -3277,21 +3309,21 @@ 12.7 mm - 12.7mm API - 12,7mm API - 12.7mm API - 12,7mm API - 12.7mm API + 12.7 mm API + 12,7 mm API + 12.7 mm API + 12,7 mm API + 12.7 mm API 12.7 мм бронебойно-зажигательные - 12,7mm API - 12.7mm API - 12.7mm API - 12,7mm páncéltörő-gyújtó - 12.7mm 焼夷徹甲弾 - 12.7mm 철갑소이탄 + 12,7 mm API + 12.7 mm API + 12.7 mm API + 12,7 mm páncéltörő-gyújtó + 12.7 mm 焼夷徹甲弾 + 12.7 mm 철갑소이탄 12.7毫米 穿甲燃燒彈 - 12.7mm 穿甲燃烧弹 - 12.7mm API + 12.7 mm 穿甲燃烧弹 + 12.7 mm API [ACE] Ammo Supply Crate diff --git a/addons/captives/functions/script_component.hpp b/addons/captives/functions/script_component.hpp index e91d5c843b..7d50228a46 100644 --- a/addons/captives/functions/script_component.hpp +++ b/addons/captives/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\captives\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\captives\script_component.hpp" diff --git a/addons/cargo/CfgVehicles.hpp b/addons/cargo/CfgVehicles.hpp index 1cbe96833b..bd31a9c659 100644 --- a/addons/cargo/CfgVehicles.hpp +++ b/addons/cargo/CfgVehicles.hpp @@ -426,12 +426,20 @@ class CfgVehicles { class Land_CanisterFuel_F: Items_base_F { GVAR(size) = 1; GVAR(canLoad) = 1; + EGVAR(cargo,noRename) = 1; + }; + + // Flexible Fuel tanks, 300L + class FlexibleTank_base_F: ThingX { + GVAR(size) = 3; + GVAR(canLoad) = 1; }; // objects class RoadCone_F: ThingX { GVAR(size) = 1; GVAR(canLoad) = 1; + EGVAR(cargo,noRename) = 1; }; class RoadBarrier_F: RoadCone_F { GVAR(size) = 2; @@ -441,15 +449,18 @@ class CfgVehicles { class Land_PortableLight_single_F: Lamps_base_F { GVAR(size) = 2; GVAR(canLoad) = 1; + EGVAR(cargo,noRename) = 1; }; class FloatingStructure_F; class Land_Camping_Light_F: FloatingStructure_F { GVAR(size) = 0.2; GVAR(canLoad) = 1; + EGVAR(cargo,noRename) = 1; }; class Land_Camping_Light_off_F: ThingX { GVAR(size) = 0.2; GVAR(canLoad) = 1; + EGVAR(cargo,noRename) = 1; }; diff --git a/addons/cargo/XEH_postInit.sqf b/addons/cargo/XEH_postInit.sqf index 8f4d1b4e82..6156cce1ac 100644 --- a/addons/cargo/XEH_postInit.sqf +++ b/addons/cargo/XEH_postInit.sqf @@ -90,6 +90,7 @@ GVAR(vehicleAction) = [ GVAR(objectActions) = [ [QGVAR(renameObject), LELSTRING(common,rename), "", //TODO: add icon, maybe a pencil couldn't find it before. { + //IGNORE_PRIVATE_WARNING ["_target", "_player"]; GVAR(interactionVehicle) = _target; createDialog QGVAR(renameMenu); }, @@ -100,8 +101,7 @@ GVAR(objectActions) = [ {(_target getVariable [QGVAR(canLoad), getNumber (configOf _target >> QGVAR(canLoad))]) in [true, 1]} && {alive _target} && {[_player, _target, ["isNotSwimming"]] call EFUNC(common,canInteractWith)} && - {!((typeOf _target) in ["ACE_Wheel", "ACE_Track"])} && // Exclude Wheel and Track - {!(_target iskindOf "Land_CanisterFuel_F")} // Exclude Fuel Canisters + {(getNumber ((configOf _target) >> QGVAR(noRename))) == 0} } ] call EFUNC(interact_menu,createAction), [QGVAR(load), localize LSTRING(loadObject), "a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa", @@ -152,3 +152,10 @@ private _objectClassesAddClassEH = call (uiNamespace getVariable [QGVAR(objectCl { [_x, "initPost", DFUNC(initObject), nil, nil, true] call CBA_fnc_addClassEventHandler; } forEach _objectClassesAddClassEH; + +if (isServer) then { + ["ace_placedInBodyBag", { + params ["_target", "_bodyBag"]; + _bodyBag setVariable [QGVAR(customName), [_target, false, true] call EFUNC(common,getName), true]; + }] call CBA_fnc_addEventHandler; +}; diff --git a/addons/cargo/functions/fnc_paradropItem.sqf b/addons/cargo/functions/fnc_paradropItem.sqf index 8394d2788c..707ae42b69 100644 --- a/addons/cargo/functions/fnc_paradropItem.sqf +++ b/addons/cargo/functions/fnc_paradropItem.sqf @@ -98,7 +98,7 @@ if (_showHint) then { [ [ LSTRING(UnloadedItem), - [_itemObject, true] call FUNC(getNameItem), + [_object, true] call FUNC(getNameItem), getText (configOf _vehicle >> "displayName") ], 3 diff --git a/addons/cargo/functions/fnc_unloadItem.sqf b/addons/cargo/functions/fnc_unloadItem.sqf index 94d94276ff..791141c535 100644 --- a/addons/cargo/functions/fnc_unloadItem.sqf +++ b/addons/cargo/functions/fnc_unloadItem.sqf @@ -56,7 +56,7 @@ if (_object isEqualType objNull) then { } else { _object = createVehicle [_item, _emptyPosAGL, [], 0, "NONE"]; _object setPosASL (AGLtoASL _emptyPosAGL); - + [QEGVAR(common,fixCollision), _object] call CBA_fnc_localEvent; [QEGVAR(common,fixPosition), _object] call CBA_fnc_localEvent; }; diff --git a/addons/cargo/menu.hpp b/addons/cargo/menu.hpp index bdc9477ca1..a945f6e94c 100644 --- a/addons/cargo/menu.hpp +++ b/addons/cargo/menu.hpp @@ -6,7 +6,7 @@ class GVAR(menu) { onLoad = QUOTE([_this select 0] call FUNC(onMenuOpen)); onUnload = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(menuDisplay)),nil)];); class controlsBackground { - class HeaderBackground: ACE_gui_backgroundBase{ + class HeaderBackground: ACE_gui_backgroundBase { idc = -1; SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; x = "13 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; diff --git a/addons/cargo/renameMenu.hpp b/addons/cargo/renameMenu.hpp index de2f87d269..af54026e70 100644 --- a/addons/cargo/renameMenu.hpp +++ b/addons/cargo/renameMenu.hpp @@ -6,7 +6,7 @@ class GVAR(renameMenu) { onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(menuDisplay)),_this select 0)];); onUnload = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(menuDisplay)),nil)];); class controlsBackground { - class HeaderBackground: ACE_gui_backgroundBase{ + class HeaderBackground: ACE_gui_backgroundBase { idc = -1; SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; x = "13 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index 01e19b5062..917b507748 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -35,18 +35,43 @@ Renamed to:<br/>%1 + 名前を次に変更:<br/>%1 + Renommé en :<br/>%1 + Переименовано в: + Neu Bewaffnet: <br/>%1 + Nazwa zmieniona na:<br/>%1 Custom name has been cleared. + カスタム名が削除されました。 + Le nom personnalisé a été supprimé. + Пользовательское название удалено. + Eigener Name wurde gelöscht. + Własna nazwa została usunięta Set New Name: + 新しい名前: + Définir un nouveau nom : + Задать новое название: + Neuen Namen setzen: + Ustaw nową nazwę: Enable Rename Action + 名前変更を有効化 + Possibilité de renommage + Включить возможность переименования + Aktiviere Umbenennungs-Aktion + Włącz możliwość zmiany nazwy Enables the rename action for renamable objects. + 名前変更が可能なオブジェクトに対して、名前変更動作を有効化します。 + Active la possibilité de donner un nom personnalisé aux objets transportables (si renommables). + Включает переименование для объектов, допускающих переименование. + Aktiviert die Umbenennungs-Aktion für neu benennbare Objekte. + Włącza akcję zmiany nazwy dla obiektów z możliwością zmiany nazwy. Cargo @@ -256,9 +281,18 @@ Custom Name + カスタム名 + Nom personnalisé + Eigener Name + Własna nazwa Set a custom cargo name used in the cargo interface. + カーゴ欄で使われるカスタム名を設定します。 + Définit un nom de fret personnalisé qui sera visible dans le menu de cargaison. + Установить пользовательское имя груза, используемое в интерфейсе погрузки. + Definiere eigenen Frachtnamen, welcher im Frachtraum genutzt wird. + Ustaw własną nazwę ładunku, używaną w menu ładunku. Cargo Space @@ -411,10 +445,20 @@ Reopen Cargo Menu Kargo Menüsünü Tekrar Aç + カーゴ メニューを再度開く + Rouvrir le menu de cargaison + Переоткрыть меню погрузки + Frachtmenü erneut öffnen + Ponownie otwórz menu załadunku Reopen the Cargo Menu after successful unload. Başarılı bir yük indirmeden sonra Kargo Menüsünü tekrar göster. + カーゴを降ろした後に再びカーゴ メニューを開きます。 + Réouvre le menu de cargaison après un déchargement réussi. + Переоткрыть меню погрузки после успешной выгрузки. + Frachtmenü erneut öffnen, nach erfolgreichen Entladen. + Ponownie otwórz menu załadunku po udanym wyładowaniu. diff --git a/addons/chemlights/CfgAmmo.hpp b/addons/chemlights/CfgAmmo.hpp index 696c39e724..8c2b9a43ae 100644 --- a/addons/chemlights/CfgAmmo.hpp +++ b/addons/chemlights/CfgAmmo.hpp @@ -2,57 +2,57 @@ class CfgAmmo { class Chemlight_base; - + class Chemlight_Blue: Chemlight_base { timeToLive = 28800; // 8h as per cyalume website }; - + class Chemlight_Red: Chemlight_base { timeToLive = 43200; // 12h as per cyalume website }; - + class Chemlight_Green: Chemlight_base { timeToLive = 43200; }; - + class Chemlight_Yellow: Chemlight_base { timeToLive = 43200; }; - + class ACE_G_Chemlight_Orange: Chemlight_base { timeToLive = 43200; effectsSmoke = "ACE_ChemlightEffect_Orange"; model = "\A3\Weapons_f\chemlight\chemlight_yellow_lit"; }; - + class ACE_G_Chemlight_Orange_Infinite: ACE_G_Chemlight_Orange { timeToLive = 1e10; }; - + class ACE_G_Chemlight_White: Chemlight_base { timeToLive = 28800; effectsSmoke = "ACE_ChemlightEffect_White"; model = "\A3\Weapons_f\chemlight\chemlight_yellow_lit"; }; - + class ACE_G_Chemlight_White_Infinite: ACE_G_Chemlight_White { timeToLive = 1e10; }; - - class ACE_G_Chemlight_HiRed: Chemlight_Red { + + class ACE_G_Chemlight_HiRed: Chemlight_Red { effectsSmoke = "ACE_ChemlightEffect_HiRed"; timeToLive = 1800; }; - + class ACE_G_Chemlight_HiRed_Infinite: ACE_G_Chemlight_HiRed { timeToLive = 1e10; }; - + class ACE_G_Chemlight_HiYellow: Chemlight_Yellow { effectsSmoke = "ACE_ChemlightEffect_HiYellow"; timeToLive = 1800; }; - + class ACE_G_Chemlight_HiYellow_Infinite: ACE_G_Chemlight_HiYellow { timeToLive = 1e10; }; @@ -88,7 +88,7 @@ class CfgAmmo { effectsSmoke = "ACE_ChemlightEffect_UltraHiOrange"; timeToLive = 300; }; - + class ACE_G_Chemlight_UltraHiOrange_Infinite: ACE_G_Chemlight_UltraHiOrange { timeToLive = 1e10; }; diff --git a/addons/chemlights/CfgLights.hpp b/addons/chemlights/CfgLights.hpp index 1b9d445f30..005cc26460 100644 --- a/addons/chemlights/CfgLights.hpp +++ b/addons/chemlights/CfgLights.hpp @@ -99,7 +99,7 @@ class CfgLights { class ACE_ChemlightLight_UltraHiOrange: ACE_ChemlightLight_Orange { intensity = 12000; - + ULTRA_HI_ATTENUATION }; diff --git a/addons/common/functions/fnc_cachedCall.sqf b/addons/common/functions/fnc_cachedCall.sqf index 728303d6cd..0e2dd4b83e 100644 --- a/addons/common/functions/fnc_cachedCall.sqf +++ b/addons/common/functions/fnc_cachedCall.sqf @@ -40,7 +40,7 @@ if ((_namespace getVariable [_uid, [-99999]]) select 0 < diag_tickTime) then { INFO_1("Clear cached variables on event: %1",_eventName); #endif // Get the list of caches to clear - //IGNORE_PRIVATE_WARNING ["_eventName"]; + //IGNORE_PRIVATE_WARNING ["_eventName"]; // _eventName is defined on the function that calls the event private _varName = format [QGVAR(clearCache_%1), _eventName]; private _cacheList = missionNamespace getVariable [_varName, []]; diff --git a/addons/common/functions/fnc_getTurretIndex.sqf b/addons/common/functions/fnc_getTurretIndex.sqf index 423f2e6289..f114cdb4a7 100644 --- a/addons/common/functions/fnc_getTurretIndex.sqf +++ b/addons/common/functions/fnc_getTurretIndex.sqf @@ -20,7 +20,7 @@ params [["_unit", objNull, [objNull]]]; private _vehicle = vehicle _unit; if (_unit == _vehicle) exitWith {[]}; -scopeName "main"; +scopeName "main"; { if (_unit == (_vehicle turretUnit _x)) then {_x breakOut "main"}; diff --git a/addons/common/functions/fnc_readSettingsFromParamsArray.sqf b/addons/common/functions/fnc_readSettingsFromParamsArray.sqf index e205fb15bf..e3690ab0d3 100644 --- a/addons/common/functions/fnc_readSettingsFromParamsArray.sqf +++ b/addons/common/functions/fnc_readSettingsFromParamsArray.sqf @@ -47,7 +47,7 @@ TRACE_1("Reading missionConfigFile params",_paramsArray); case (_settingType == "CHECKBOX"): { _settingValue = _settingValue > 0; _validValue = [_settingName, _settingValue] call CBA_settings_fnc_check; - }; + }; // Will not Handle ARRAY,COLOR,STRING??? (bool/scalar covers most important settings) }; diff --git a/addons/common/initSettings.sqf b/addons/common/initSettings.sqf index 77e1521e15..0358bffa76 100644 --- a/addons/common/initSettings.sqf +++ b/addons/common/initSettings.sqf @@ -1,4 +1,5 @@ -private _category = localize LSTRING(ACEKeybindCategoryCommon); +private _category = LLSTRING(ACEKeybindCategoryCommon); +private _categoryColors = [_category, format ["| %1 |", LELSTRING(common,subcategory_colors)]]; [ QGVAR(checkPBOsAction), @@ -49,7 +50,7 @@ private _category = localize LSTRING(ACEKeybindCategoryCommon); QGVAR(displayTextColor), "COLOR", [LSTRING(SettingDisplayTextColorName),LSTRING(SettingDisplayTextColorDesc)], - _category, + _categoryColors, [0, 0, 0, 0.1], 0 ] call CBA_fnc_addSetting; @@ -58,7 +59,7 @@ private _category = localize LSTRING(ACEKeybindCategoryCommon); QGVAR(displayTextFontColor), "COLOR", [LSTRING(SettingDisplayTextFontColorName),LSTRING(SettingDisplayTextFontColorDesc)], - _category, + _categoryColors, [1, 1, 1, 1], 0 ] call CBA_fnc_addSetting; diff --git a/addons/common/scripts/script_component.hpp b/addons/common/scripts/script_component.hpp index 23da62b05c..6a1bf9154d 100644 --- a/addons/common/scripts/script_component.hpp +++ b/addons/common/scripts/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\common\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\common\script_component.hpp" diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 9c3ad10a1e..5f36164548 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -498,6 +498,7 @@ プレイヤーが不正規の PBO を所持している場合の動作を決定します。 Define la accion a tomar si un jugador no tiene el PBO correcto Определяет, какое действие будет предпринято, если игрок не имеет корректные PBO. + Definiert, was passieren soll, wenn ein Spieler nicht die korrekten PBOs nutzt. Check PBO All @@ -523,6 +524,7 @@ ACE のみならず、全てのアドオンを検査します。 Comprueba todos los complementos, no sólo los de ACE Проверять все аддоны, а не только ACE. + Überprüft alle Erweiterungen, nicht nur die von ACE. Check PBO Whitelist @@ -548,6 +550,7 @@ 許可するアドオンを定義します。 Comprueba la lista de PBOs permitidos Задать список непроверяемых аддонов. + Ermöglicht das Erstellen einer Liste von immer erlaubten Erweiterungen. Feedback icons @@ -677,6 +680,18 @@ 設定ACE提示文字的顏色。若提示字體並無指定其他顏色,將會自動選用ACE系統的預設顏色 设定ACE提示文字的颜色。若提示字体并无指定其他颜色,将会自动选用ACE系统的预设颜色。 + + Colors + Barvy + Couleurs + Farben + Colori + Kolory + Cores + Цвета + Colores + + Persistent weapon laserpointer/flashlight Автоматический ЛЦУ/тактический фонарь @@ -1281,6 +1296,9 @@ ACE 载具按键 ACE Araçlar + + ACE Uncategorized + No Room to unload Kein Platz zum Entladen @@ -1384,12 +1402,14 @@ Epilepsiefreundlicher Modus けいれん回避モード Tryb dla epileptyków + Mode adapté à l'épilepsie Disables some flashing light effects to reduce seizure risk. Deaktiviert einige Lichtflackereffekte um das Risiko von Epilepsieanfällen zu reduzieren. 点滅する光エフェクトを無効化し、けいれんする恐れを低下させます。 Wyłącz część migających efektów w celu zredukowania ryzyka napadu epilepsji + Désactive certains effets de lumière clignotante afin de réduire les risques de crise d'épilepsie. Flag (ACE - Black) @@ -1438,6 +1458,10 @@ 只限玩家 Sadece oyuncular + + AI only + Tylko dla AI + Players and AI Игроков и ботов @@ -1467,22 +1491,48 @@ Zobrazit akci v menu vlastních interakcí Показывать действие в меню взаимодействия с собой. Kendi etkileşimim menüsünde animasyonları göster + Zeigt die Aktion im Selbstinteraktionsmenü Both İkisi de + 両方 + Les deux + Оба + Beide + Oba Additional progress bar information + プログレス バー詳細情報 + Infos supplémentaires de la barre de progression + Дополнительная информация прогресс-бара + Zusätzliche Informationen beim Fortschrittsbalken + Dodatkowe informacje na pasku postępu Controls extra information shown in progress bar. + プログレス バーへ表示される情報量を決定します。 + Définit quelles informations supplémentaires sont affichées dans la barre de progression. + Устанавливает дополнительную информацию в прогресс-баре. + Kontrolliert zusätzliche Informationen beim Fortschrittsbalkens + Kontroluje dodatkowe informacje na pasku postępu. Percentage + パーセンテージ + Pourcentage + Процент выполнения + Prozent + Procent Time remaining + 残り時間 + Temps restant + Времени осталось + Zeit verbleibend + Pozostały czas None @@ -1518,6 +1568,11 @@ Time left: %1s + 残り時間: %1 秒 + Temps restant : %1 s + Оставшееся время: %1s + Zeit übrig %1s + Pozostały czas: %1s Locations Boost Training diff --git a/addons/concertina_wire/CfgVehicles.hpp b/addons/concertina_wire/CfgVehicles.hpp index 77b2c97d18..d8c80f68a9 100644 --- a/addons/concertina_wire/CfgVehicles.hpp +++ b/addons/concertina_wire/CfgVehicles.hpp @@ -34,22 +34,22 @@ class CfgVehicles { source = "user"; animPeriod = 1e-007; }; - class wire_3: wire_2{}; - class wire_4: wire_2{}; - class wire_5: wire_2{}; - class wire_6: wire_2{}; - class wire_7: wire_2{}; - class wire_8: wire_2{}; - class wire_9: wire_2{}; - class wire_10: wire_2{}; - class wire_11: wire_2{}; - class wire_12: wire_2{}; - class wire_13: wire_2{}; - class wire_14: wire_2{}; - class wire_15: wire_2{}; - class wire_16: wire_2{}; - class wire_17: wire_2{}; - class wire_18: wire_2{}; + class wire_3: wire_2 {}; + class wire_4: wire_2 {}; + class wire_5: wire_2 {}; + class wire_6: wire_2 {}; + class wire_7: wire_2 {}; + class wire_8: wire_2 {}; + class wire_9: wire_2 {}; + class wire_10: wire_2 {}; + class wire_11: wire_2 {}; + class wire_12: wire_2 {}; + class wire_13: wire_2 {}; + class wire_14: wire_2 {}; + class wire_15: wire_2 {}; + class wire_16: wire_2 {}; + class wire_17: wire_2 {}; + class wire_18: wire_2 {}; class wire_2_1: wire_2 { animPeriod = 8; diff --git a/addons/concertina_wire/functions/script_component.hpp b/addons/concertina_wire/functions/script_component.hpp index 5ec20093ef..4df0fa4c49 100644 --- a/addons/concertina_wire/functions/script_component.hpp +++ b/addons/concertina_wire/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\concertina_wire\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\concertina_wire\script_component.hpp" diff --git a/addons/cookoff/XEH_PREP.hpp b/addons/cookoff/XEH_PREP.hpp index 728ebc8578..b9708b7c58 100644 --- a/addons/cookoff/XEH_PREP.hpp +++ b/addons/cookoff/XEH_PREP.hpp @@ -1,5 +1,5 @@ -PREP(handleDamage); +PREP(handleDamageBox); PREP(engineFire); PREP(cookOff); PREP(smoke); diff --git a/addons/cookoff/XEH_postInit.sqf b/addons/cookoff/XEH_postInit.sqf index ab8619570d..f143273d04 100644 --- a/addons/cookoff/XEH_postInit.sqf +++ b/addons/cookoff/XEH_postInit.sqf @@ -13,7 +13,7 @@ [QGVAR(cleanupEffects), { params ["_vehicle", ["_effects", []]]; - + _effects = _effects + (_vehicle getVariable [QGVAR(effects), []]); if !(_effects isEqualTo []) then { { deleteVehicle _x } count _effects; @@ -25,7 +25,7 @@ GVAR(cacheTankDuplicates) = call CBA_fnc_createNamespace; ["ReammoBox_F", "init", { (_this select 0) addEventHandler ["HandleDamage", { if ((_this select 0) getVariable [QGVAR(enableAmmoCookoff), GVAR(enableAmmobox)]) then { - _this call FUNC(handleDamage); + _this call FUNC(handleDamageBox); }; }]; }, nil, nil, true] call CBA_fnc_addClassEventHandler; diff --git a/addons/cookoff/functions/fnc_cookOff.sqf b/addons/cookoff/functions/fnc_cookOff.sqf index 6c8ace548a..4fb1d751ff 100644 --- a/addons/cookoff/functions/fnc_cookOff.sqf +++ b/addons/cookoff/functions/fnc_cookOff.sqf @@ -16,16 +16,23 @@ * Public: No */ -params ["_vehicle", "_intensity", ["_instigator", objNull], ["_smokeDelayEnabled", true], ["_ammoDetonationChance", 0], ["_detonateAfterCookoff", false], ["_fireSource", ""], ["_canRing", true]]; +params ["_vehicle", "_intensity", ["_instigator", objNull], ["_smokeDelayEnabled", true], ["_ammoDetonationChance", 0], ["_detonateAfterCookoff", false], ["_fireSource", ""], ["_canRing", true], ["_maxIntensity", MAX_COOKOFF_INTENSITY, [0]]]; if (GVAR(enable) == 0) exitWith {}; if !(GVAR(enableFire)) exitWith {}; +if (_vehicle getVariable [QGVAR(enable), GVAR(enable)] in [0, false]) exitWith {}; +// exit if cook-off enabled only for players and no players in vehicle crew found +if (_vehicle getVariable [QGVAR(enable), GVAR(enable)] isEqualTo 1 && {fullCrew [_vehicle, "", false] findIf {isPlayer (_x select 0)} == -1}) exitWith {}; -TRACE_8("cooking off",_vehicle,_intensity,_instigator,_smokeDelayEnabled,_ammoDetonationChance,_detonateAfterCookoff,_fireSource,_canRing); + +TRACE_9("cooking off",_vehicle,_intensity,_instigator,_smokeDelayEnabled,_ammoDetonationChance,_detonateAfterCookoff,_fireSource,_canRing,_maxIntensity); if (_vehicle getVariable [QGVAR(isCookingOff), false]) exitWith {}; _vehicle setVariable [QGVAR(isCookingOff), true, true]; +// limit maximum value of intensity to prevent very long cook-off times +_intensity = _intensity min _maxIntensity; + private _config = _vehicle call CBA_fnc_getObjectConfig; private _positions = getArray (_config >> QGVAR(cookoffSelections)) select {!((_vehicle selectionPosition _x) isEqualTo [0,0,0])}; @@ -36,7 +43,7 @@ if (_positions isEqualTo []) then { if (_pos isEqualTo [0, 0, 0]) exitWith {}; _positions pushBack _x; } forEach DEFAULT_COMMANDER_HATCHES; - + if (_positions isEqualTo []) then { _positions pushBack "#noselection"; }; @@ -61,15 +68,15 @@ if (_smokeDelayEnabled) then { [QGVAR(cleanupEffects), [_vehicle, _smokeEffects]] call CBA_fnc_globalEvent; _vehicle setVariable [QGVAR(isCookingOff), false, true]; [_pfh] call CBA_fnc_removePerFrameHandler; - + if (_detonateAfterCookoff) then { _vehicle setDamage 1; }; }; - + private _lastFlameTime = _vehicle getVariable [QGVAR(lastFlame), 0]; private _nextFlameTime = _vehicle getVariable [QGVAR(nextFlame), 0]; - + // Wait until we are ready for the next flame // dt = Tcurrent - Tlast // dt >= Tnext @@ -78,39 +85,39 @@ if (_smokeDelayEnabled) then { if (!_ring && _intensity >= 2) then { _ring = (0.7 > random 1); }; - + if !(_canRing) then { _ring = false; }; - + private _time = linearConversion [0, 10, _intensity, 3, 20] + random COOKOFF_TIME; - + if (_fireSource isEqualTo "") then { _fireSource = selectRandom _positions; }; - + [QGVAR(cookOffEffect), [_vehicle, true, _ring, _time, _fireSource]] call CBA_fnc_globalEvent; - + _intensity = _intensity - (0.5 max random 1); _vehicle setVariable [QGVAR(intensity), _intensity]; _vehicle setVariable [QGVAR(lastFlame), CBA_missionTime]; _vehicle setVariable [QGVAR(nextFlame), _time + (MIN_TIME_BETWEEN_FLAMES max random MAX_TIME_BETWEEN_FLAMES)]; - + { [QEGVAR(fire,burn), [_x, _intensity * 1.5, _instigator]] call CBA_fnc_globalEvent; } forEach crew _vehicle }; - + if (_ammoDetonationChance > random 1) then { private _lastExplosiveDetonationTime = _vehicle getVariable [QGVAR(lastExplosiveDetonation), 0]; private _nextExplosiveDetonation = _vehicle getVariable [QGVAR(nextExplosiveDetonation), 0]; - + if ((CBA_missionTime - _lastExplosiveDetonationTime) > _nextExplosiveDetonation) then { if (_fireSource isEqualTo "") then { _fireSource = selectRandom _positions; }; createVehicle ["ACE_ammoExplosionLarge", (_vehicle modelToWorld (_vehicle selectionPosition _fireSource)), [], 0 , "CAN_COLLIDE"]; - + _vehicle setVariable [QGVAR(lastExplosiveDetonation), CBA_missionTime]; _vehicle setVariable [QGVAR(nextExplosiveDetonation), random 60]; }; diff --git a/addons/cookoff/functions/fnc_cookOffEffect.sqf b/addons/cookoff/functions/fnc_cookOffEffect.sqf index 4c32c8713d..96db943592 100644 --- a/addons/cookoff/functions/fnc_cookOffEffect.sqf +++ b/addons/cookoff/functions/fnc_cookOffEffect.sqf @@ -33,7 +33,7 @@ if (isServer) then { // I dont think there is an alternative that takes into effect distance and whatever, but if you find one please fix! private _soundName = selectRandomWeighted [QGVAR(Sound_low), 0.1, QGVAR(Sound_mid), 0.25, QGVAR(Sound_high), 0.65]; _sound = createSoundSource [_soundName, position _obj, [], 0]; - + if (_ring) then { private _intensity = 6; private _radius = 1.5 * ((boundingBoxReal _obj) select 2); @@ -53,30 +53,30 @@ if (isServer) then { }; private _factor = (1 + (_elapsedTime / 2) min 2); private _flameSize = 1.5; - + if (_elapsedTime > (_time * (3 / 4))) then { _factor = _factor * linearConversion [_time * (3 / 4), _time, _elapsedTime, 1, 0.5]; }; - + _light setLightBrightness 5 * (_factor / 5); - + if (_jet) then { private _particlePosition = (_obj selectionPosition _fireSelection) vectorAdd [-0.1 + random 0.2, -0.1 + random 0.2, 0]; - + drop [ ["\A3\data_f\ParticleEffects\Universal\Universal", 16, 2, 32], "", "Billboard", 1, - (0.1 + (random 0.2)) * _factor, + (0.1 + (random 0.2)) * _factor, _particlePosition, - [0, 0, 15 * (_factor / 2)], + [0, 0, 15 * (_factor / 2)], 0, 10, 7.9, - 0.075, - [1.25 * _factor, 2.5 * _factor], - [[1, 1, 1, -2], [1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], + 0.075, + [1.25 * _factor, 2.5 * _factor], + [[1, 1, 1, -2], [1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], [2 + random 1], 1, 0, @@ -84,102 +84,102 @@ if (isServer) then { "", _obj ]; - + // make flame push object into ground to make effect seem more "alive" if (!isGamePaused && { local _obj }) then { private _force = [0, 0, _factor * -(0.5 min random 1.5) * (0.3 min random 1)] vectorMultiply getMass _obj; _obj addForce [_force, vectorUpVisual _obj]; }; }; - + if (_ring) then { private _ringOrigin = (_obj selectionPosition _fireSelection) vectorAdd [-0.1 + random 0.2, -0.1 + random 0.2, -1]; drop [ ["\A3\data_f\ParticleEffects\Universal\Universal",16,2,32], - "", "Billboard", 1, (0.1 + (random 0.2)) * _factor, + "", "Billboard", 1, (0.1 + (random 0.2)) * _factor, _ringOrigin, - [0, 20 * (_factor / 2), 0], - 0, 10, 7.9, 0.075, - [1.25 * _factor, _flameSize * _factor], - [[1, 1, 1, -2], [1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], + [0, 20 * (_factor / 2), 0], + 0, 10, 7.9, 0.075, + [1.25 * _factor, _flameSize * _factor], + [[1, 1, 1, -2], [1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], [2 + random 1], 1, 0, "", "", _obj ]; drop [ ["\A3\data_f\ParticleEffects\Universal\Universal", 16, 2, 32], - "", "Billboard", 1, (0.1 + (random 0.2)) * _factor, + "", "Billboard", 1, (0.1 + (random 0.2)) * _factor, _ringOrigin, - [0, -20 * (_factor / 2), 0], - 0, 10, 7.9, 0.075, - [1.25 * _factor, _flameSize * _factor], - [[1, 1, 1, -2], [1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], + [0, -20 * (_factor / 2), 0], + 0, 10, 7.9, 0.075, + [1.25 * _factor, _flameSize * _factor], + [[1, 1, 1, -2], [1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], [2 + random 1], 1, 0, "", "", _obj ]; drop [ ["\A3\data_f\ParticleEffects\Universal\Universal", 16, 2, 32], - "", "Billboard", 1, (0.1 + (random 0.2)) * _factor, + "", "Billboard", 1, (0.1 + (random 0.2)) * _factor, _ringOrigin, - [20 * (_factor / 2), 0, 0], - 0, 10, 7.9, 0.075, - [1.25 * _factor, _flameSize * _factor], - [[1, 1, 1, -2], [1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], + [20 * (_factor / 2), 0, 0], + 0, 10, 7.9, 0.075, + [1.25 * _factor, _flameSize * _factor], + [[1, 1, 1, -2], [1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], [2 + random 1], 1, 0, "", "", _obj ]; drop [ ["\A3\data_f\ParticleEffects\Universal\Universal", 16, 2, 32], - "", "Billboard", 1, (0.1 + (random 0.2)) * _factor, + "", "Billboard", 1, (0.1 + (random 0.2)) * _factor, [-0.1 + random 0.2, -0.1 + random 0.2, -1], - [-20 * (_factor / 2), 0, 0], - 0, 10, 7.9, 0.075, - [1.25 * _factor, _flameSize * _factor], - [[1, 1, 1, -2], [1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], + [-20 * (_factor / 2), 0, 0], + 0, 10, 7.9, 0.075, + [1.25 * _factor, _flameSize * _factor], + [[1, 1, 1, -2], [1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], [2 + random 1], 1, 0, "", "", _obj ]; private _dir = 20 * (_factor / 2); drop [ ["\A3\data_f\ParticleEffects\Universal\Universal", 16, 2, 32], - "", "Billboard", 1, (0.1 + (random 0.2)) * _factor, + "", "Billboard", 1, (0.1 + (random 0.2)) * _factor, _ringOrigin, - [_dir, _dir, 0], - 0, 10, 7.9, 0.075, - [1.25 * _factor, _flameSize * _factor], - [[1, 1, 1, -2],[1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], + [_dir, _dir, 0], + 0, 10, 7.9, 0.075, + [1.25 * _factor, _flameSize * _factor], + [[1, 1, 1, -2],[1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], [2 + random 1], 1, 0, "", "", _obj ]; - + _dir = -20 * (_factor / 2); drop [ ["\A3\data_f\ParticleEffects\Universal\Universal", 16, 2, 32], - "", "Billboard", 1, (0.1 + (random 0.2)) * _factor, + "", "Billboard", 1, (0.1 + (random 0.2)) * _factor, _ringOrigin, - [_dir, _dir, 0], - 0, 10, 7.9, 0.075, - [1.25 * _factor, _flameSize * _factor], - [[1, 1, 1, -2],[1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], + [_dir, _dir, 0], + 0, 10, 7.9, 0.075, + [1.25 * _factor, _flameSize * _factor], + [[1, 1, 1, -2],[1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], [2 + random 1], 1, 0, "", "", _obj ]; - + _dir = 20 * (_factor / 2); drop [ ["\A3\data_f\ParticleEffects\Universal\Universal",16,2,32], - "", "Billboard", 1, (0.1 + (random 0.2)) * _factor, + "", "Billboard", 1, (0.1 + (random 0.2)) * _factor, _ringOrigin, - [_dir, -_dir, 0], - 0, 10, 7.9, 0.075, - [1.25 * _factor, _flameSize * _factor], - [[1, 1, 1, -2], [1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], + [_dir, -_dir, 0], + 0, 10, 7.9, 0.075, + [1.25 * _factor, _flameSize * _factor], + [[1, 1, 1, -2], [1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], [2 + random 1], 1, 0, "", "", _obj ]; - + _dir = 20 * (_factor / 2); drop [ ["\A3\data_f\ParticleEffects\Universal\Universal", 16, 2, 32], - "", "Billboard", 1, (0.1 + (random 0.2)) * _factor, + "", "Billboard", 1, (0.1 + (random 0.2)) * _factor, _ringOrigin, - [-_dir, _dir, 0], - 0, 10, 7.9, 0.075, - [1.25 * _factor, _flameSize * _factor], - [[1, 1, 1, -2], [1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], + [-_dir, _dir, 0], + 0, 10, 7.9, 0.075, + [1.25 * _factor, _flameSize * _factor], + [[1, 1, 1, -2], [1, 1, 1, -2], [1, 1, 1, -1], [1, 1, 1, -0]], [2 + random 1], 1, 0, "", "", _obj ]; }; diff --git a/addons/cookoff/functions/fnc_handleDamage.sqf b/addons/cookoff/functions/fnc_handleDamageBox.sqf similarity index 82% rename from addons/cookoff/functions/fnc_handleDamage.sqf rename to addons/cookoff/functions/fnc_handleDamageBox.sqf index de29feb860..2bbb6f4b6b 100644 --- a/addons/cookoff/functions/fnc_handleDamage.sqf +++ b/addons/cookoff/functions/fnc_handleDamageBox.sqf @@ -1,7 +1,7 @@ #include "script_component.hpp" /* * Author: KoffeinFlummi, commy2 - * Handles all incoming damage for tanks (including wheeled APCs). + * Handles all incoming damage for boxi * * Arguments: * HandleDamage EH @@ -10,7 +10,7 @@ * Damage to be inflicted. * * Example: - * _this call ace_cookoff_fnc_handleDamage + * _this call ace_cookoff_fnc_handleDamageBox * * Public: No */ @@ -23,13 +23,6 @@ if (damage _vehicle >= 1) exitWith {}; // If cookoff is disabled exit if (_vehicle getVariable [QGVAR(enable), GVAR(enable)] in [0, false]) exitWith {}; -// Check for players and exit if none found and the enable for players only setting is true -if ( - _vehicle getVariable [QGVAR(enable), GVAR(enable)] isEqualTo 1 - && {fullCrew [_vehicle, "", false] findIf {isPlayer (_x select 0)} == -1} - && {_simulationType isNotEqualTo "box"} -) exitWith {}; - // get hitpoint name private _hitpoint = "#structural"; diff --git a/addons/cookoff/functions/fnc_smoke.sqf b/addons/cookoff/functions/fnc_smoke.sqf index 93a9b9a0cb..de9e4c5d37 100644 --- a/addons/cookoff/functions/fnc_smoke.sqf +++ b/addons/cookoff/functions/fnc_smoke.sqf @@ -17,7 +17,7 @@ */ params ["_vehicle", ["_positions", []]]; - + private _turretConfig = [_vehicle, [0]] call CBA_fnc_getTurret; private _positionBarrelEnd = getText (_turretConfig >> "gunBeg"); diff --git a/addons/cookoff/initSettings.sqf b/addons/cookoff/initSettings.sqf index 54eb89be54..cbba7c1719 100644 --- a/addons/cookoff/initSettings.sqf +++ b/addons/cookoff/initSettings.sqf @@ -1,5 +1,3 @@ -// CBA Settings [ADDON: ace_cookoff]: - [ QGVAR(enable), "LIST", [LSTRING(enable_hd_name), LSTRING(enable_hd_tooltip)], diff --git a/addons/cookoff/script_component.hpp b/addons/cookoff/script_component.hpp index 1bf61761b4..ef4a6085dd 100644 --- a/addons/cookoff/script_component.hpp +++ b/addons/cookoff/script_component.hpp @@ -27,6 +27,7 @@ #define MIN_TIME_BETWEEN_FLAMES 5 #define MAX_TIME_BETWEEN_FLAMES 15 #define MAX_TIME_BETWEEN_AMMO_DET 25 +#define MAX_COOKOFF_INTENSITY 10 // Delay between flame effect for players in a cooking off vehicle #define FLAME_EFFECT_DELAY 0.4 diff --git a/addons/cookoff/stringtable.xml b/addons/cookoff/stringtable.xml index ec33b0f333..d237193c77 100644 --- a/addons/cookoff/stringtable.xml +++ b/addons/cookoff/stringtable.xml @@ -162,9 +162,19 @@ Enable Cook-Off Vehicle Fire + 誘爆火災を有効化 + Véhicules - Feu durant l'auto-inflammation + Включить возгорание поеприпасов + Aktiviert das in Brand setzen des Fahrzeugs während des Durchzündens der Munition + Włącz pożar pojazdu podczas samozapłonu Whether or not vehicles will catch on fire during cook-off + 誘爆により車両が炎上するかどうかを設定します。 + Définit si les véhicules prennent feu durant l'auto-inflammation de leurs munitions. + Будет ли техника возгораться при подрыве боеприпасов + Ob Fahrzeuge in Brand gesetzt werden, während deren Munition durchzündet. + Określa, czy pojazdy zapalą się podczas samozapłonu ich amunicji. diff --git a/addons/csw/Cfg3den.hpp b/addons/csw/Cfg3den.hpp index a72c585fde..5d15e19d6b 100644 --- a/addons/csw/Cfg3den.hpp +++ b/addons/csw/Cfg3den.hpp @@ -9,7 +9,7 @@ class Cfg3DEN { }; class Combo: Title { class Controls: Controls { - class Title: Title{}; + class Title: Title {}; class Value; }; }; diff --git a/addons/csw/CfgMagazineGroups.hpp b/addons/csw/CfgMagazineGroups.hpp index 2093253d04..b3995210a2 100644 --- a/addons/csw/CfgMagazineGroups.hpp +++ b/addons/csw/CfgMagazineGroups.hpp @@ -74,7 +74,7 @@ class GVAR(groups) { ACE_1Rnd_82mm_Mo_HE_LaserGuided = 1; 8Rnd_82mm_Mo_LG = 1; }; - + // A3 Titans (Spike) - just use handheld magazines class Titan_AT { 1Rnd_GAT_missiles = 1; diff --git a/addons/csw/CfgMagazines.hpp b/addons/csw/CfgMagazines.hpp index dc972a5a92..86ad73c58f 100644 --- a/addons/csw/CfgMagazines.hpp +++ b/addons/csw/CfgMagazines.hpp @@ -53,7 +53,7 @@ class CfgMagazines { mass = 50; ACE_isBelt = 1; }; - + class 40Rnd_20mm_G_belt; class GVAR(20Rnd_20mm_G_belt): 40Rnd_20mm_G_belt { author = ECSTRING(common,ACETeam); diff --git a/addons/csw/initSettings.sqf b/addons/csw/initSettings.sqf index 10030b68da..d4ea6dc13a 100644 --- a/addons/csw/initSettings.sqf +++ b/addons/csw/initSettings.sqf @@ -1,5 +1,3 @@ -// CBA Settings [ADDON: ace_csw]: - private _categoryArray = [format ["ACE %1", localize LSTRING(DisplayName)]]; [ diff --git a/addons/csw/stringtable.xml b/addons/csw/stringtable.xml index 8df7684b82..d3593a29f4 100644 --- a/addons/csw/stringtable.xml +++ b/addons/csw/stringtable.xml @@ -410,6 +410,7 @@ [CSW] Statyczny karabin maszynowy M2 z tarczą [CSW] Станковый M2 со щитом [CSW] 設置型 防盾付き M2 + [CSW] Statisches M2 mit Schild [CSW] Static XM312 Gun (Autonomous) diff --git a/addons/dagr/CfgEventHandlers.hpp b/addons/dagr/CfgEventHandlers.hpp index 0612f3abed..851e58197c 100644 --- a/addons/dagr/CfgEventHandlers.hpp +++ b/addons/dagr/CfgEventHandlers.hpp @@ -15,4 +15,4 @@ class Extended_PostInit_EventHandlers { class ADDON { init = QUOTE(call COMPILE_SCRIPT(XEH_postInit)); }; -}; \ No newline at end of file +}; diff --git a/addons/dagr/functions/script_component.hpp b/addons/dagr/functions/script_component.hpp index 18b02deaee..1aea0f5c56 100644 --- a/addons/dagr/functions/script_component.hpp +++ b/addons/dagr/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\dagr\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\dagr\script_component.hpp" diff --git a/addons/disarming/functions/script_component.hpp b/addons/disarming/functions/script_component.hpp index 38e082ee0e..2bcfb4d9e4 100644 --- a/addons/disarming/functions/script_component.hpp +++ b/addons/disarming/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\disarming\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\disarming\script_component.hpp" diff --git a/addons/dogtags/XEH_preInit.sqf b/addons/dogtags/XEH_preInit.sqf index a7a080b91e..5ad43b0229 100644 --- a/addons/dogtags/XEH_preInit.sqf +++ b/addons/dogtags/XEH_preInit.sqf @@ -7,5 +7,5 @@ PREP_RECOMPILE_START; PREP_RECOMPILE_END; GVAR(disabledFactions) = [] call CBA_fnc_createNamespace; - + ADDON = true; diff --git a/addons/dragging/CfgMovesBasic.hpp b/addons/dragging/CfgMovesBasic.hpp index 6b55e82c2d..e6420915ea 100644 --- a/addons/dragging/CfgMovesBasic.hpp +++ b/addons/dragging/CfgMovesBasic.hpp @@ -3,13 +3,13 @@ class CfgMovesBasic { ACE_dragWithPistol = "ace_dragging"; ACE_dragWithRifle = "AmovPercMstpSlowWrflDnon_AcinPknlMwlkSlowWrflDb_2"; }; - + class Actions { class MoveWithInjuredManDragger; class MoveWithInjuredManDraggerRfl: MoveWithInjuredManDragger { Up = "amovpercmstpsraswrfldnon"; }; - + class MoveWithInjuredManDraggerPst; class ACE_MoveWithInjuredManDraggerPst: MoveWithInjuredManDraggerPst { Default = "ace_dragging_static"; diff --git a/addons/dragging/CfgVehicles.hpp b/addons/dragging/CfgVehicles.hpp index 076c5fb640..42a7d4c3d8 100644 --- a/addons/dragging/CfgVehicles.hpp +++ b/addons/dragging/CfgVehicles.hpp @@ -247,6 +247,15 @@ class CfgVehicles { GVAR(dragPosition)[] = {0,0.7,0}; }; + // Flexible Fuel tanks, 300L + class FlexibleTank_base_F: ThingX { + GVAR(canCarry) = 1; + GVAR(carryPosition)[] = {0,0.65,0}; + + GVAR(canDrag) = 1; + GVAR(dragPosition)[] = {0,1,0}; + }; + // some terrain objects class Land_CampingTable_F: ThingX { diff --git a/addons/dragging/functions/script_component.hpp b/addons/dragging/functions/script_component.hpp index 9d257a69d3..f77cfe8b3c 100644 --- a/addons/dragging/functions/script_component.hpp +++ b/addons/dragging/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\dragging\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\dragging\script_component.hpp" diff --git a/addons/dragging/stringtable.xml b/addons/dragging/stringtable.xml index dccc758a5d..b166d3dfaa 100644 --- a/addons/dragging/stringtable.xml +++ b/addons/dragging/stringtable.xml @@ -60,6 +60,7 @@ オブジェクトを運ぶ/離す Objeyi Taşı/Bırak Arrastrar/Soltar Objeto + Objekt tragen/loslassen Item too heavy diff --git a/addons/dragon/CfgAmmo.hpp b/addons/dragon/CfgAmmo.hpp index 52c27c281a..22630e03b0 100644 --- a/addons/dragon/CfgAmmo.hpp +++ b/addons/dragon/CfgAmmo.hpp @@ -34,7 +34,7 @@ class CfgAmmo { cost = 500; simulationStep = 0.005; maxControlRange = 1500; - + EGVAR(vehicle_damage,incendiary) = 1.0; class ace_missileguidance { diff --git a/addons/dragon/functions/script_component.hpp b/addons/dragon/functions/script_component.hpp index 386679ecf6..1590d769e8 100644 --- a/addons/dragon/functions/script_component.hpp +++ b/addons/dragon/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\dragon\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\dragon\script_component.hpp" diff --git a/addons/explosives/ACE_Triggers.hpp b/addons/explosives/ACE_Triggers.hpp index e9c717504e..aab36121a0 100644 --- a/addons/explosives/ACE_Triggers.hpp +++ b/addons/explosives/ACE_Triggers.hpp @@ -56,7 +56,7 @@ class ACE_Triggers { isAttachable = 1; displayName = CSTRING(timerName); picture = QPATHTOF(data\UI\Timer.paa); - onPlace = QUOTE([ARR_2(_this select 1, _this select 3 select 0)] call FUNC(startTimer); false); + onPlace = QUOTE([ARR_4(_this select 1, _this select 3 select 0, nil, _this select 0)] call FUNC(startTimer); false); onSetup = QUOTE(_this call FUNC(openTimerUI)); }; class Tripwire { diff --git a/addons/explosives/CfgMagazines.hpp b/addons/explosives/CfgMagazines.hpp index 1784e80433..7bb2c6ff02 100644 --- a/addons/explosives/CfgMagazines.hpp +++ b/addons/explosives/CfgMagazines.hpp @@ -86,13 +86,13 @@ class CfgMagazines { GVAR(SetupObject) = "ACE_Explosives_Place_SLAM"; class ACE_Triggers { SupportedTriggers[] = {"IRSensor", "PressurePlate", "Timer", "Command", "MK16_Transmitter"}; - class PressurePlate{ + class PressurePlate { displayName = CSTRING(SLAME_Magnetic); digDistance = 0; ammo = "ACE_SLAMDirectionalMine_Magnetic_Ammo"; pitch = 90; }; - class IRSensor{ + class IRSensor { displayName = CSTRING(SLAME_IRSensor); }; class Timer { diff --git a/addons/explosives/CfgWeapons.hpp b/addons/explosives/CfgWeapons.hpp index 56ef154661..d45b484c59 100644 --- a/addons/explosives/CfgWeapons.hpp +++ b/addons/explosives/CfgWeapons.hpp @@ -2,7 +2,7 @@ class CfgWeapons { class Default; class Put: Default { muzzles[] += {QGVAR(muzzle)}; - class PutMuzzle: Default{}; + class PutMuzzle: Default {}; class GVAR(muzzle): PutMuzzle { magazines[] = {"ACE_FlareTripMine_Mag"}; }; diff --git a/addons/explosives/config.cpp b/addons/explosives/config.cpp index 08042297dc..b60186ab68 100644 --- a/addons/explosives/config.cpp +++ b/addons/explosives/config.cpp @@ -41,10 +41,10 @@ class CfgActions { class ActivateMine: None { show = 0; }; - class Deactivate:None { + class Deactivate: None { show = 0; }; - class DeactivateMine:None { + class DeactivateMine: None { show = 0; }; class UseContainerMagazine: None { diff --git a/addons/explosives/functions/fnc_dialPhone.sqf b/addons/explosives/functions/fnc_dialPhone.sqf index c7b5848e52..e4292f60b3 100644 --- a/addons/explosives/functions/fnc_dialPhone.sqf +++ b/addons/explosives/functions/fnc_dialPhone.sqf @@ -38,6 +38,6 @@ if (_unit == ace_player) then { playSound3D [QUOTE(PATHTO_R(Data\Audio\Cellphone_Ring.wss)),objNull, false, getPosASL (_this select 1),3.16228,1,75]; (_this select 0) setVariable [QGVAR(Dialing), false, true]; }, [_unit,_explosive select 0], 0.25 * (count _arr - 4)] call CBA_fnc_waitAndExecute; - [_explosive select 0,(0.25 * (count _arr - 1)) + (_explosive select 2), "ACE_Cellphone"] call FUNC(startTimer); + [_explosive select 0,(0.25 * (count _arr - 1)) + (_explosive select 2), "ACE_Cellphone", _unit] call FUNC(startTimer); }; }; diff --git a/addons/explosives/functions/fnc_startTimer.sqf b/addons/explosives/functions/fnc_startTimer.sqf index 484171ec6e..2b0a395b35 100644 --- a/addons/explosives/functions/fnc_startTimer.sqf +++ b/addons/explosives/functions/fnc_startTimer.sqf @@ -7,6 +7,7 @@ * 0: Explosive * 1: Time till detonate * 2: Trigger classname (default: "#timer") + * 3: Unit * * Return Value: * None @@ -17,13 +18,13 @@ * Public: Yes */ -params ["_explosive", "_delay", ["_trigger", "#timer", [""]]]; -TRACE_3("Starting timer",_explosive,_delay,_trigger); +params ["_explosive", "_delay", ["_trigger", "#timer", [""]], ["_unit", objNull, [objNull]]]; +TRACE_4("Starting timer",_explosive,_delay,_trigger,_unit); [{ - params ["_explosive", "_trigger"]; + params ["_explosive", "_trigger", "_unit"]; TRACE_1("Explosive detonating from timer",_explosive); if (!isNull _explosive) then { - [_explosive, -1, [_explosive, 0], _trigger] call FUNC(detonateExplosive); + [_unit, -1, [_explosive, 0], _trigger] call FUNC(detonateExplosive); }; -}, [_explosive, _trigger], _delay] call CBA_fnc_waitAndExecute; +}, [_explosive, _trigger, _unit], _delay] call CBA_fnc_waitAndExecute; diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index f9c684d303..4143426314 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -1089,6 +1089,7 @@ 最短時間 Tiempo mínimo Minimalny czas + Minimale Zeit Maximum Time @@ -1097,6 +1098,7 @@ 最長時間 Tiempo máximo Maksymalny czas + Maximale Zeit Default Time @@ -1105,6 +1107,7 @@ 標準時間 Tiempo por defecto Domyślny czas + Standardmäßige Zeit Minimum time value (in seconds) for the explosive timer. @@ -1113,6 +1116,7 @@ 起爆タイマーの最低時間 (秒) を設定します。 Tiempo mínimo (en segundos) para el temporizador del explosivo. Minimalna wartość czasomierza dla ładunku (w sekundach). + Minimale Zeit (in Sekunden) für den Zeitzünder. Maximum time value (in seconds) for the explosive timer. @@ -1121,6 +1125,7 @@ 起爆タイマーの最長時間 (秒) を設定します。 Tiempo máximo (en segundos) para el temporizador del explosivo. Maksymalna wartość czasomierza dla ładunku (w sekundach). + Maximale Zeit (in Sekunden) für den Zeitzünder. Default time value (in seconds) for the explosive timer. @@ -1129,6 +1134,7 @@ 起爆タイマーの標準時間 (秒) を設定します。 Tiempo por defecto (en segundos) para el temporizador del explosivo. Domyślna wartość czasomierza dla ładunku (w sekundach). + Standardmäßige Zeit (in Sekunden) für den Zeitzünder. diff --git a/addons/fastroping/CfgSounds.hpp b/addons/fastroping/CfgSounds.hpp index 97479ecafb..a93c4ba032 100644 --- a/addons/fastroping/CfgSounds.hpp +++ b/addons/fastroping/CfgSounds.hpp @@ -9,4 +9,4 @@ class CfgSounds { sound[] = {QUOTE(PATHTOF(data\sounds\fastroping_thud.ogg)), 10, 1.0}; titles[] = {}; }; -}; \ No newline at end of file +}; diff --git a/addons/fastroping/initSettings.sqf b/addons/fastroping/initSettings.sqf index 5888f49aa2..0334d90c76 100644 --- a/addons/fastroping/initSettings.sqf +++ b/addons/fastroping/initSettings.sqf @@ -1,6 +1,4 @@ -// CBA Settings [ADDON: ace_fastroping]: - -private _category = ["ACE Uncategorized", LLSTRING(setting_categoryMenu_displayName)]; +private _category = [LELSTRING(common,categoryUncategorized), LLSTRING(setting_categoryMenu_displayName)]; [ QGVAR(requireRopeItems), "CHECKBOX", diff --git a/addons/fastroping/stringtable.xml b/addons/fastroping/stringtable.xml index 0afc9a7799..839bbc5e2a 100644 --- a/addons/fastroping/stringtable.xml +++ b/addons/fastroping/stringtable.xml @@ -167,6 +167,7 @@ Připravit 3m lana 3m halat sal Desplegar cuerdas de 3m + 3m ロープを展開 Deploy 6m ropes @@ -179,6 +180,7 @@ Připravit 6m lana 6m halat sal Desplegar cuerdas de 6m + 6m ロープを展開 Deploy 12m ropes @@ -274,6 +276,7 @@ Halatla Kayma Slaňování Спуск по канату + Schnelles-Abseilen Require rope item to deploy diff --git a/addons/fcs/functions/script_component.hpp b/addons/fcs/functions/script_component.hpp index 179c66c15e..161e764a9a 100644 --- a/addons/fcs/functions/script_component.hpp +++ b/addons/fcs/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\fcs\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\fcs\script_component.hpp" diff --git a/addons/field_rations/CfgVehicles.hpp b/addons/field_rations/CfgVehicles.hpp index a2e4580b0c..0b0d3828cc 100644 --- a/addons/field_rations/CfgVehicles.hpp +++ b/addons/field_rations/CfgVehicles.hpp @@ -98,7 +98,7 @@ class CfgVehicles { class Item_Base_F; class ACE_WaterBottle_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = CSTRING(WaterBottle_DisplayName); @@ -108,7 +108,7 @@ class CfgVehicles { }; }; class ACE_WaterBottle_Half_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = CSTRING(WaterBottleHalf_DisplayName); @@ -118,7 +118,7 @@ class CfgVehicles { }; }; class ACE_WaterBottle_Empty_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = CSTRING(WaterBottleEmpty_DisplayName); @@ -128,7 +128,7 @@ class CfgVehicles { }; }; class ACE_Canteen_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = CSTRING(Canteen_DisplayName); @@ -138,7 +138,7 @@ class CfgVehicles { }; }; class ACE_Canteen_Half_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = CSTRING(CanteenHalf_DisplayName); @@ -148,7 +148,7 @@ class CfgVehicles { }; }; class ACE_Canteen_Empty_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = CSTRING(CanteenEmpty_DisplayName); @@ -158,7 +158,7 @@ class CfgVehicles { }; }; class ACE_Can_Spirit_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = "$STR_a3_cfgvehicles_land_can_v1_f0"; @@ -168,7 +168,7 @@ class CfgVehicles { }; }; class ACE_Can_Franta_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = "$STR_a3_cfgvehicles_land_can_v2_f0"; @@ -178,7 +178,7 @@ class CfgVehicles { }; }; class ACE_Can_RedGull_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = "$STR_a3_cfgvehicles_land_can_v3_f0"; @@ -188,7 +188,7 @@ class CfgVehicles { }; }; class ACE_MRE_LambCurry_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = CSTRING(MRE_LambCurry_DisplayName); @@ -198,7 +198,7 @@ class CfgVehicles { }; }; class ACE_MRE_BeefStew_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = CSTRING(MRE_BeefStew_DisplayName); @@ -208,7 +208,7 @@ class CfgVehicles { }; }; class ACE_MRE_CreamTomatoSoup_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = CSTRING(MRE_CreamTomatoSoup_DisplayName); @@ -218,7 +218,7 @@ class CfgVehicles { }; }; class ACE_MRE_CreamChickenSoup_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = CSTRING(MRE_CreamChickenSoup_DisplayName); @@ -228,7 +228,7 @@ class CfgVehicles { }; }; class ACE_MRE_ChickenTikkaMasala_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = CSTRING(MRE_ChickenTikkaMasala_DisplayName); @@ -238,7 +238,7 @@ class CfgVehicles { }; }; class ACE_MRE_SteakVegetables_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = CSTRING(MRE_SteakVegetables_DisplayName); @@ -248,7 +248,7 @@ class CfgVehicles { }; }; class ACE_MRE_MeatballsPasta_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = CSTRING(MRE_MeatballsPasta_DisplayName); @@ -258,7 +258,7 @@ class CfgVehicles { }; }; class ACE_MRE_ChickenHerbDumplings_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = CSTRING(MRE_ChickenHerbDumplings_DisplayName); @@ -268,7 +268,7 @@ class CfgVehicles { }; }; class ACE_Humanitarian_Ration_Item: Item_Base_F { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); scope = 2; scopeCurator = 2; displayName = CSTRING(Humanitarian_Ration_DisplayName); diff --git a/addons/field_rations/README.md b/addons/field_rations/README.md index 63eec9b597..b178343e99 100644 --- a/addons/field_rations/README.md +++ b/addons/field_rations/README.md @@ -3,3 +3,11 @@ ace_field_rations Provides a survival style, hunger and thirst system. Adds consumable items such as MREs. + +## ACEX Conversion - things still using acex prefix +- All settings +- CfgUIGrids Entry +- CfgWeapon Configs (e.g. `acex_field_rations_thirstQuenched`) +- CfgVehicles Configs (e.g. `acex_field_rations_waterSupply`) +- Events (`acex_rationConsumed`, `acex_rationRefilled`) +- Player setVars for thirst/hunger (e.g. `player getVariable "acex_field_rations_thirst"`) diff --git a/addons/field_rations/RscTitles.hpp b/addons/field_rations/RscTitles.hpp index d578b16653..274ceb9f4a 100644 --- a/addons/field_rations/RscTitles.hpp +++ b/addons/field_rations/RscTitles.hpp @@ -12,15 +12,15 @@ class RscTitles { class controls { class Thirst: RscPicture { idc = IDC_COLORED_HUD_THIRST; - x = profileNamespace getVariable [QUOTE(TRIPLES(IGUI,GVAR(grid),X)), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W]; - y = profileNamespace getVariable [QUOTE(TRIPLES(IGUI,GVAR(grid),Y)), safeZoneY + safeZoneH - 2.2 * GUI_GRID_H]; + x = profileNamespace getVariable [QUOTE(TRIPLES(IGUI,XGVAR(grid),X)), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W]; + y = profileNamespace getVariable [QUOTE(TRIPLES(IGUI,XGVAR(grid),Y)), safeZoneY + safeZoneH - 2.2 * GUI_GRID_H]; w = 2 * GUI_GRID_W; h = 2 * GUI_GRID_H; text = QPATHTOF(ui\icon_hud_thirststatus.paa); }; class Hunger: Thirst { idc = IDC_COLORED_HUD_HUNGER; - x = 2 * GUI_GRID_W + (profileNamespace getVariable [QUOTE(TRIPLES(IGUI,GVAR(grid),X)), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W]); + x = 2 * GUI_GRID_W + (profileNamespace getVariable [QUOTE(TRIPLES(IGUI,XGVAR(grid),X)), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W]); text = QPATHTOF(ui\icon_hud_hungerstatus.paa); }; }; @@ -35,23 +35,23 @@ class RscTitles { class controlsBackground { class Thirst: RscPicture { idc = -1; - x = profileNamespace getVariable [QUOTE(TRIPLES(IGUI,GVAR(grid),X)), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W]; - y = profileNamespace getVariable [QUOTE(TRIPLES(IGUI,GVAR(grid),Y)), safeZoneY + safeZoneH - 2.2 * GUI_GRID_H]; + x = profileNamespace getVariable [QUOTE(TRIPLES(IGUI,XGVAR(grid),X)), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W]; + y = profileNamespace getVariable [QUOTE(TRIPLES(IGUI,XGVAR(grid),Y)), safeZoneY + safeZoneH - 2.2 * GUI_GRID_H]; w = 2 * GUI_GRID_W; h = 2 * GUI_GRID_H; text = QPATHTOF(ui\icon_hud_thirststatus.paa); colorText[] = {1, 1, 1, 0.2}; }; class Hunger: Thirst { - x = 2 * GUI_GRID_W + (profileNamespace getVariable [QUOTE(TRIPLES(IGUI,GVAR(grid),X)), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W]); + x = 2 * GUI_GRID_W + (profileNamespace getVariable [QUOTE(TRIPLES(IGUI,XGVAR(grid),X)), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W]); text = QPATHTOF(ui\icon_hud_hungerstatus.paa); }; }; class controls { class ThirstGroup: RscControlsGroupNoScrollbars { idc = IDC_DRAINING_HUD_THIRST_GROUP; - x = profileNamespace getVariable [QUOTE(TRIPLES(IGUI,GVAR(grid),X)), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W]; - y = profileNamespace getVariable [QUOTE(TRIPLES(IGUI,GVAR(grid),Y)), safeZoneY + safeZoneH - 2.2 * GUI_GRID_H]; + x = profileNamespace getVariable [QUOTE(TRIPLES(IGUI,XGVAR(grid),X)), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W]; + y = profileNamespace getVariable [QUOTE(TRIPLES(IGUI,XGVAR(grid),Y)), safeZoneY + safeZoneH - 2.2 * GUI_GRID_H]; w = 2 * GUI_GRID_W; h = 2 * GUI_GRID_H; class controls { @@ -67,7 +67,7 @@ class RscTitles { }; class HungerGroup: ThirstGroup { idc = IDC_DRAINING_HUD_HUNGER_GROUP; - x = 2 * GUI_GRID_W + (profileNamespace getVariable [QUOTE(TRIPLES(IGUI,GVAR(grid),X)), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W]); + x = 2 * GUI_GRID_W + (profileNamespace getVariable [QUOTE(TRIPLES(IGUI,XGVAR(grid),X)), safeZoneX + safeZoneW - 4.2 * GUI_GRID_W]); class controls: controls { class Icon: Icon { idc = IDC_DRAINING_HUD_HUNGER_ICON; diff --git a/addons/field_rations/XEH_postInit.sqf b/addons/field_rations/XEH_postInit.sqf index 09a2145af2..be81985bc4 100644 --- a/addons/field_rations/XEH_postInit.sqf +++ b/addons/field_rations/XEH_postInit.sqf @@ -21,7 +21,7 @@ if !(hasInterface) exitWith {}; QPATHTOF(ui\icon_water_tap.paa), {true}, { - private _waterSource = _target getVariable [QXGVAR(waterSource), objNull]; + private _waterSource = _target getVariable [QGVAR(waterSource), objNull]; alive _waterSource && {XGVAR(waterSourceActions) != 0} @@ -29,7 +29,7 @@ if !(hasInterface) exitWith {}; && {[_player, _waterSource] call EFUNC(common,canInteractWith)} }, { - private _waterSource = _target getVariable [QXGVAR(waterSource), objNull]; + private _waterSource = _target getVariable [QGVAR(waterSource), objNull]; [_waterSource, _player] call FUNC(getRefillChildren); }, [], @@ -44,11 +44,11 @@ if !(hasInterface) exitWith {}; LLSTRING(CheckWater), QPATHTOF(ui\icon_water_tap.paa), { - private _waterSource = _target getVariable [QXGVAR(waterSource), objNull]; + private _waterSource = _target getVariable [QGVAR(waterSource), objNull]; [_player, _waterSource] call FUNC(checkWater); }, { - private _waterSource = _target getVariable [QXGVAR(waterSource), objNull]; + private _waterSource = _target getVariable [QGVAR(waterSource), objNull]; (_waterSource call FUNC(getRemainingWater)) != REFILL_WATER_INFINITE } ] call EFUNC(interact_menu,createAction), @@ -57,11 +57,11 @@ if !(hasInterface) exitWith {}; LLSTRING(DrinkFromSource), QPATHTOF(ui\icon_water_tap.paa), { - private _waterSource = _target getVariable [QXGVAR(waterSource), objNull]; + private _waterSource = _target getVariable [QGVAR(waterSource), objNull]; [_player, _waterSource] call FUNC(drinkFromSource); }, { - private _waterSource = _target getVariable [QXGVAR(waterSource), objNull]; + private _waterSource = _target getVariable [QGVAR(waterSource), objNull]; [_player, _waterSource] call FUNC(canDrinkFromSource); } ] call EFUNC(interact_menu,createAction) @@ -70,7 +70,7 @@ if !(hasInterface) exitWith {}; // Add water source actions to helper [QGVAR(helper), 0, [], _mainAction] call EFUNC(interact_menu,addActionToClass); { - [QGVAR(helper), 0, [QXGVAR(waterSource)], _x] call EFUNC(interact_menu,addActionToClass); + [QGVAR(helper), 0, [QGVAR(waterSource)], _x] call EFUNC(interact_menu,addActionToClass); } forEach _subActions; // Add inventory context menu option to consume items diff --git a/addons/field_rations/config.cpp b/addons/field_rations/config.cpp index 2d990751b7..d7acbb66b1 100644 --- a/addons/field_rations/config.cpp +++ b/addons/field_rations/config.cpp @@ -51,10 +51,7 @@ class CfgPatches { VERSION_CONFIG; }; - class XADDON: ADDON { - units[] = {}; - weapons[] = {}; - }; + BWC_CONFIG(XADDON); }; #include "CfgEventHandlers.hpp" diff --git a/addons/field_rations/functions/fnc_addWaterSourceInteractions.sqf b/addons/field_rations/functions/fnc_addWaterSourceInteractions.sqf index 73b08bcf87..0d320b0610 100644 --- a/addons/field_rations/functions/fnc_addWaterSourceInteractions.sqf +++ b/addons/field_rations/functions/fnc_addWaterSourceInteractions.sqf @@ -50,7 +50,7 @@ TRACE_1("Starting interact PFH",_interactionType); if (_waterRemaining != REFILL_WATER_DISABLED) then { private _offset = [_x] call FUNC(getActionOffset); private _helper = QGVAR(helper) createVehicleLocal [0, 0, 0]; - _helper setVariable [QXGVAR(waterSource), _x]; + _helper setVariable [QGVAR(waterSource), _x]; _helper attachTo [_x, _offset]; _addedHelpers pushBack _helper; diff --git a/addons/field_rations/functions/fnc_handleHUD.sqf b/addons/field_rations/functions/fnc_handleHUD.sqf index 2412d35432..a2242d7ed5 100644 --- a/addons/field_rations/functions/fnc_handleHUD.sqf +++ b/addons/field_rations/functions/fnc_handleHUD.sqf @@ -55,7 +55,7 @@ if (XGVAR(hudType) == 0) then { ]; } else { // Reposition controls group and icon to create draining effect - private _defaultY = profileNamespace getVariable [QUOTE(TRIPLES(IGUI,GVAR(grid),Y)), safeZoneY + safeZoneH - 2.2 * GUI_GRID_H]; + private _defaultY = profileNamespace getVariable [QUOTE(TRIPLES(IGUI,XGVAR(grid),Y)), safeZoneY + safeZoneH - 2.2 * GUI_GRID_H]; { _x params ["_status", "_groupIDC", "_iconIDC"]; diff --git a/addons/field_rations/stringtable.xml b/addons/field_rations/stringtable.xml index 33f487a99f..373a16444c 100644 --- a/addons/field_rations/stringtable.xml +++ b/addons/field_rations/stringtable.xml @@ -196,6 +196,7 @@ Akcje przy źrodle wody Su Içme Animasyonu 水源動作 + Wasserquellen-Aktionen Controls what actions are available on water sources. @@ -203,6 +204,7 @@ Kontroluje jakie akcje są dostępne przy źrodle wody. Su içerken hangi animasyonu yapacağını belirler 水源で可能な動作を設定します。 + Bestimmt, welche Aktionen an Wasserquellen verfügbar sind. Refill Only @@ -210,6 +212,7 @@ Tylko napełnij Sadece içeceği iç 汲むだけ + Nur Befüllen Terrain Object Actions @@ -217,6 +220,7 @@ Akcje Objektu terenu Varsayılan Nesne Animasyonu マップ オブジェクト動作 + Geländeobjekt-Aktionen Enables water source actions for terrain objects. @@ -224,6 +228,7 @@ Umożliwia akcje przy źrodle wody na obiektach terenu. Varsayılan nesneler için animasyonu etkinleştir マップに存在するオブジェクトを水源として動作するよう設定できます。 + Aktiviert Wasserquellen-Aktionen für Geländeobjekte. Affect Advanced Fatigue @@ -502,6 +507,7 @@ Picie z źródła Mataradan Içiliyor... 水源から飲んでいます・・・ + Trinke von Quelle... Water Bottle diff --git a/addons/finger/functions/script_component.hpp b/addons/finger/functions/script_component.hpp index 4d3625f072..b16e0f3c01 100644 --- a/addons/finger/functions/script_component.hpp +++ b/addons/finger/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\finger\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\finger\script_component.hpp" diff --git a/addons/fire/CfgSounds.hpp b/addons/fire/CfgSounds.hpp index c4b821144a..fd4899eaca 100644 --- a/addons/fire/CfgSounds.hpp +++ b/addons/fire/CfgSounds.hpp @@ -6,7 +6,7 @@ class GVAR(DOUBLES(scream,no)) { \ sound[] = {QUOTE(PATHTOF(CONCAT(sounds\scream,no).ogg)), db + 8, 1};\ titles[] = {}; \ } - + class CfgSounds { CREATE_SCREAM(1); CREATE_SCREAM(2); diff --git a/addons/fire/RscTitles.hpp b/addons/fire/RscTitles.hpp index 3ccb8c349f..e50715d94a 100644 --- a/addons/fire/RscTitles.hpp +++ b/addons/fire/RscTitles.hpp @@ -8,7 +8,7 @@ class RscTitles { fadeout = 0.75; name = QGVAR(onFire1); onload = QUOTE(with uiNamespace do {GVAR(onFireIndicator1) = _this select 0}); - + class controls { class GVAR(indicator): RscPicture { idc = -1; @@ -26,12 +26,12 @@ class RscTitles { }; }; }; - + class GVAR(onFire2): GVAR(onFire1) { idd = -1; name = QGVAR(onFire2); onload = QUOTE(with uiNamespace do {GVAR(onFireIndicator2) = _this select 0}); - + class controls: controls { class GVAR(indicator): GVAR(indicator) { text = PATHTOF(data\overlay_burn_2.paa); diff --git a/addons/fire/XEH_PREP.hpp b/addons/fire/XEH_PREP.hpp index 511c9c0bb6..d9eacfdee0 100644 --- a/addons/fire/XEH_PREP.hpp +++ b/addons/fire/XEH_PREP.hpp @@ -2,6 +2,7 @@ PREP(burn); PREP(isBurning); PREP(isPlant); PREP(burnIndicator); +PREP(burnReaction); PREP(fireManagerPFH); PREP(medical_progress); diff --git a/addons/fire/XEH_postInit.sqf b/addons/fire/XEH_postInit.sqf index f89a062eff..655b55af19 100644 --- a/addons/fire/XEH_postInit.sqf +++ b/addons/fire/XEH_postInit.sqf @@ -3,7 +3,10 @@ [QGVAR(burn), FUNC(burn)] call CBA_fnc_addEventHandler; [QGVAR(playScream), { params ["_scream", "_source"]; - _source say3D _scream; + // only play sound if enabled in settings + if (GVAR(enableScreams)) then { + _source say3D _scream; + }; }] call CBA_fnc_addEventHandler; ["ace_settingsInitialized", { @@ -22,7 +25,7 @@ [GVAR(fireSources), _key, [_fireLogic, _radius, _intensity, _condition, _conditionArgs]] call CBA_fnc_hashSet; }] call CBA_fnc_addEventHandler; - + [QGVAR(removeFireSource), { params ["_key"]; [GVAR(fireSources), _key] call CBA_fnc_hashRem; diff --git a/addons/fire/functions/fnc_burn.sqf b/addons/fire/functions/fnc_burn.sqf index e520880966..bf4709fd0d 100644 --- a/addons/fire/functions/fnc_burn.sqf +++ b/addons/fire/functions/fnc_burn.sqf @@ -37,13 +37,13 @@ if (_isBurning) exitWith {}; // looped function (_this getVariable "params") params ["_unit", "", "_instigator"]; private _unitPos = getPosASL _unit; - + _intensity = _unit getVariable [QGVAR(intensity), 0]; - + if (surfaceIsWater _unitPos && {(_unitPos#2) < 1}) then { _intensity = 0; }; - + _fireParticle setDropInterval (0.01 max linearConversion [MAX_INTENSITY, MIN_INTENSITY, _intensity, 0.03, 0.1, false]); _fireParticle setParticleParams [ ["\A3\data_f\ParticleEffects\Universal\Universal", 16, 10, 32], // sprite sheet values @@ -86,7 +86,7 @@ if (_isBurning) exitWith {}; 0, // random direction period 0 // random direction intensity ]; - + _smokeParticle setParticleCircle [0, [0, 0, 0]]; _smokeParticle setParticleRandom [ 0, // life time @@ -124,18 +124,18 @@ if (_isBurning) exitWith {}; _unit // particle source ]; _smokeParticle setDropInterval 0.15; - + _fireLight setLightBrightness ((_intensity * 3) / 10); _lightFlare setLightBrightness (_intensity / 30); - + private _distanceToUnit = (_unit distance ace_player); _fireLight setLightAttenuation [1, 10 max (5 min (10 - _intensity)), 0, 15]; _lightFlare setLightFlareSize (_intensity * (3 / 4)) * FLARE_SIZE_MODIFIER; - + if (!GVAR(enableFlare)) then { _lightFlare setLightFlareSize 0; }; - + // always keep flare visible to perceiving unit as long as it isnt the player if !(_unit isEqualTo ace_player) then { private _relativeAttachPoint = [0, 0, 0.3]; @@ -145,14 +145,14 @@ if (_isBurning) exitWith {}; }; _lightFlare attachTo [_unit, _relativeAttachPoint]; }; - + if (!isGamePaused) then { // If the unit goes to spectator alive _unit == true and they will be on fire and still take damage // Only workaround I could think of, kinda clunky if (_isThisUnitAlive) then { _isThisUnitAlive = (alive _unit) && { getNumber ((configOf _unit) >> "isPlayableLogic") != 1 }; }; - + // propagate fire if ((CBA_missionTime - _lastPropogateUpdate) >= BURN_PROPOGATE_UPDATE) then { _lastPropogateUpdate = CBA_missionTime; @@ -178,7 +178,7 @@ if (_isBurning) exitWith {}; }; }; }; - + // update intensity/fire reactions if ((CBA_missionTime - _lastIntensityUpdate) >= INTENSITY_UPDATE) then { _lastIntensityUpdate = CBA_missionTime; @@ -203,7 +203,7 @@ if (_isBurning) exitWith {}; } else { private _group = (group _unit); private _vehicle = vehicle _unit; - + if (_vehicle != _unit) then { TRACE_1("Ejecting", _unit); _unit leaveVehicle _vehicle; @@ -227,16 +227,10 @@ if (_isBurning) exitWith {}; _intensity = _intensity - (1 / _intensity); }; }; - - if ((_unit isEqualTo vehicle _unit) && { !(currentWeapon _unit isEqualTo "") }) then { - [_unit] call EFUNC(hitreactions,throwWeapon); - }; - - private _soundID = floor (1 + random 15); - private _sound = format [QGVAR(scream_%1), _soundID]; - [QGVAR(playScream), [_sound, _unit]] call CBA_fnc_globalEvent; + + [_unit] call FUNC(burnReaction); }; - + // Common burn areas are the hands and face https://www.ncbi.nlm.nih.gov/pubmed/16899341/ private _woundSelection = ["Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg"] selectRandomWeighted [0.77, 0.5, 0.8, 0.8, 0.3, 0.3]; if (GET_PAIN_PERCEIVED(_unit) < (PAIN_UNCONSCIOUS + random 0.2)) then { @@ -249,7 +243,7 @@ if (_isBurning) exitWith {}; _unit setVariable [QGVAR(intensity), _intensity, true]; // globally sync intensity across all clients to make sure simulation is deterministic }; }; - + private _burnIndicatorPFH = _unit getVariable [QGVAR(burnUIPFH), -1]; if (_unit isEqualTo ace_player && { _isThisUnitAlive } && { _burnIndicatorPFH < 0 }) then { _burnIndicatorPFH = [FUNC(burnIndicator), 1, _unit] call CBA_fnc_addPerFrameHandler; @@ -261,30 +255,30 @@ if (_isBurning) exitWith {}; // init function private _params = _this getVariable "params"; _params params ["_unit", "_startingIntensity"]; - + _intensity = _startingIntensity; private _unitPos = getPos _unit; - + _fireParticle = "#particlesource" createVehicleLocal _unitPos; _fireParticle attachTo [_unit, [0, 0, 0]]; _fireParticle setDropInterval 0.03; - + _smokeParticle = "#particlesource" createVehicleLocal _unitPos; - + _fireLight = "#lightpoint" createVehicleLocal _unitPos; _fireLight setLightIntensity 0; _fireLight setLightAmbient [0.8, 0.6, 0.2]; _fireLight setLightColor [1, 0.5, 0.4]; _fireLight attachTo [_unit, [0, 0, 0]]; _fireLight setLightDayLight false; - + _lightFlare = "#lightpoint" createVehicleLocal _unitPos; _lightFlare setLightIntensity 0; _lightFlare setLightColor [1, 0.8, 0.8]; _lightFlare setLightUseFlare true; _lightFlare setLightFlareMaxDistance 100; _lightFlare setLightFlareSize 0; - + if !(_unit isEqualTo ace_player) then { private _relativeAttachPoint = (vectorNormalized (_unit worldToModelVisual (getPos ace_player))) vectorMultiply 1; _relativeAttachPoint set [2, 0.5]; @@ -292,30 +286,28 @@ if (_isBurning) exitWith {}; } else { _lightFlare attachTo [_unit, [0, 0, 0.3]]; }; - + if (isServer) then { _fireSound = createSoundSource ["Sound_Fire", _unitPos, [], 0]; _fireSound attachTo [_unit, [0, 0, 0], "destructionEffect1"]; }; - + _unit setVariable [QGVAR(burning), true]; _unit setVariable [QGVAR(intensity), _intensity]; _unit setVariable [QGVAR(burnUIPFH), -1]; - + if (local _unit) then { if (_unit isEqualTo ace_player) then { private _burnIndicatorPFH = [FUNC(burnIndicator), 1, _unit] call CBA_fnc_addPerFrameHandler; _unit setVariable [QGVAR(burnUIPFH), _burnIndicatorPFH]; }; - - private _soundID = floor (1 + random 15); - private _sound = format [QGVAR(scream_%1), _soundID]; - [QGVAR(playScream), [_sound, _unit]] call CBA_fnc_globalEvent; + + [_unit, false] call FUNC(burnReaction); }; - + _lastIntensityUpdate = 0; _lastPropogateUpdate = 0; - + _isThisUnitAlive = true; }, { (_this getVariable "params") params ["_unit"]; @@ -326,7 +318,7 @@ if (_isBurning) exitWith {}; deleteVehicle _fireLight; deleteVehicle _lightFlare; deleteVehicle _fireSound; - + if (local _unit) then { if (!isPlayer _unit) then { _unit setUnitPos "AUTO"; @@ -340,9 +332,9 @@ if (_isBurning) exitWith {}; }, { // exit condition (_this getVariable "params") params ["_unit"]; - + private _unitAlive = (alive _unit) && { getNumber ((configOf _unit) >> "isPlayableLogic") != 1 }; private _unitIsUnit = { (_unit != vehicle _unit) && { isNull vehicle _unit } }; - + !_unitAlive || _unitIsUnit || { _intensity <= MIN_INTENSITY } || { !([_unit] call FUNC(isBurning)) } }, ["_intensity", "_fireParticle", "_smokeParticle", "_fireLight", "_fireSound", "_lightFlare", "_lastIntensityUpdate", "_lastPropogateUpdate", "_isThisUnitAlive"]] call CBA_fnc_createPerFrameHandlerObject; diff --git a/addons/fire/functions/fnc_burnReaction.sqf b/addons/fire/functions/fnc_burnReaction.sqf new file mode 100644 index 0000000000..a79875a24b --- /dev/null +++ b/addons/fire/functions/fnc_burnReaction.sqf @@ -0,0 +1,31 @@ +#include "script_component.hpp" +/* + * Author: Brandon (TCVM), veteran29 + * Handles burning reactions of an unit, like screaming or throwing the weapons away due to pain. + * + * Arguments: + * 0: Unit + * 1: Should unit throw its current weapon + * + * Return Value: + * None + * + * Public: No + */ + +params ["_unit", ["_throwWeapon", true]]; + +if ( + _throwWeapon + && {GVAR(dropWeapon) > 0} + && {_unit in _unit && { !(currentWeapon _unit isEqualTo "") }} + && {!isPlayer _unit || GVAR(dropWeapon >= 2)} +) then { + [_unit] call EFUNC(hitreactions,throwWeapon); +}; + +if (_unit isKindOf "CAManBase") then { + private _soundID = floor (1 + random 15); + private _sound = format [QGVAR(scream_%1), _soundID]; + [QGVAR(playScream), [_sound, _unit]] call CBA_fnc_globalEvent; +}; diff --git a/addons/fire/functions/fnc_fireManagerPFH.sqf b/addons/fire/functions/fnc_fireManagerPFH.sqf index 8f75091190..f52d5f31d5 100644 --- a/addons/fire/functions/fnc_fireManagerPFH.sqf +++ b/addons/fire/functions/fnc_fireManagerPFH.sqf @@ -31,7 +31,7 @@ params ["_args", "_handle"]; if !(_attachedObject isEqualTo objNull) then { _sourcePos = getPosATL _attachedObject; }; - + private _nearEntities = _sourcePos nearEntities ["Man", _radius]; { private _burning = [_x] call FUNC(isBurning); diff --git a/addons/fire/initSettings.sqf b/addons/fire/initSettings.sqf index 6919c35f10..ff21b75ae4 100644 --- a/addons/fire/initSettings.sqf +++ b/addons/fire/initSettings.sqf @@ -1,19 +1,40 @@ [ QGVAR(enabled), "CHECKBOX", - ["STR_A3_OPTIONS_ENABLED", LSTRING(setting_description)], - LSTRING(category_displayName), + ["STR_A3_OPTIONS_ENABLED", LSTRING(Setting_Description)], + LSTRING(Category_DisplayName), true, // default value true, // isGlobal {[QGVAR(fireEnabled), _this] call EFUNC(common,cbaSettings_settingChanged)}, true // Needs mission restart -] call CBA_settings_fnc_init; +] call CBA_fnc_addSetting; [ QGVAR(enableFlare), "CHECKBOX", - [LSTRING(setting_flareEnable), LSTRING(setting_flareDescription)], - LSTRING(category_displayName), + [LSTRING(Setting_FlareEnable), LSTRING(Setting_FlareDescription)], + LSTRING(Category_DisplayName), false, // default value true, // isGlobal {[QGVAR(flareEnabled), _this] call EFUNC(common,cbaSettings_settingChanged)}, true // Needs mission restart -] call CBA_settings_fnc_init; +] call CBA_fnc_addSetting; + +[ + QGVAR(dropWeapon), "LIST", + [LSTRING(Setting_DropWeapon), LSTRING(Setting_DropWeapon_Description)], + LSTRING(Category_DisplayName), + [ + [0,1,2], + [localize "STR_A3_OPTIONS_DISABLED", ELSTRING(common,aiOnly), ELSTRING(common,playersAndAI)], + 1 + ], + true // isGlobal +] call CBA_fnc_addSetting; + +[ + QGVAR(enableScreams), "CHECKBOX", + [LSTRING(Setting_EnableScreams), LSTRING(Setting_EnableScreams_Description)], + LSTRING(Category_DisplayName), + true, + false // isGlobal +] call CBA_fnc_addSetting; + diff --git a/addons/fire/stringtable.xml b/addons/fire/stringtable.xml index 90e1431bdb..c969039326 100644 --- a/addons/fire/stringtable.xml +++ b/addons/fire/stringtable.xml @@ -1,23 +1,67 @@ - + ACE Fire + ACE 火災 + ACE Feu + ACE Возгорание + ACE Feuer + ACE Ogień Pat Down Fire + 火を叩き消す + Éteindre le feu + Потушить + Feuer löschen + Zgaś ogień Patting Down Fire + 火を叩き消しています + Feu en cours d'extinction... + Тушение + Feuer wird gelöscht... + Gaszenie ognia - + Allow units to catch fire + ユニットへ着火を許可 + Définit si les unités peuvent prendre feu ou non. + Включает возгорание + Erlaubt, dass Einheiten Feuer fangen können + Zezwól jednostkom na zapalenie się - + Enable fire-flare at night + 夜間にフレア効果を有効化 + Halo lumineux la nuit + Включает сверкание пламени + Aktiviert Feuerschein bei Nacht. + Włącza efekt flary od ognia w nocy - + Uses a flare effect to increase fire intensity at night + 夜間に火災の強さを上昇させるフレア効果を有効化します。 + Ajoute un effet de halo lumineux afin d'accroitre l'intensité du feu durant la nuit. + Включает ореол пламени для большей интенсивности ночью + Benutzt einen Feuerschein-Effekt um die Intensität des Feuers bei Nacht zu verstärken. + Używa efektu flary, aby zwiększyć jasność w nocy + + + Enable screams by units on fire + + + Enables if units on fire will play the screaming sound + + + Drop Weapons When on Fire + Włącz wyrzucanie broni podczas płonięcia + + + Controls whether units drop their weapons when on fire. + Powoduje że jednostki wyrzucają swoją broń gdy płoną. diff --git a/addons/flashlights/XEH_postInitClient.sqf b/addons/flashlights/XEH_postInitClient.sqf index 53e7d041a8..15cd1372b4 100644 --- a/addons/flashlights/XEH_postInitClient.sqf +++ b/addons/flashlights/XEH_postInitClient.sqf @@ -5,4 +5,4 @@ if (!hasInterface) exitWith {}; LOG(MSG_INIT); -//todo: make flashlights attachable to players \ No newline at end of file +//todo: make flashlights attachable to players diff --git a/addons/fortify/CfgVehicles.hpp b/addons/fortify/CfgVehicles.hpp index db739c4dbb..671652e974 100644 --- a/addons/fortify/CfgVehicles.hpp +++ b/addons/fortify/CfgVehicles.hpp @@ -28,7 +28,7 @@ class CfgVehicles { class ACE_Module: Module_F {}; class XGVAR(setupModule): ACE_Module { author = ECSTRING(common,ACETeam); - category = "ACEX"; + category = "ACE"; displayName = CSTRING(Fortify); function = QFUNC(setupModule); scope = 2; @@ -86,7 +86,7 @@ class CfgVehicles { class XGVAR(buildLocationModule): ACE_Module { author = ECSTRING(common,ACETeam); - category = "ACEX"; + category = "ACE"; displayName = CSTRING(buildLocationModule); scope = 2; isGlobal = 1; diff --git a/addons/fortify/README.md b/addons/fortify/README.md index 368dace328..988699a706 100644 --- a/addons/fortify/README.md +++ b/addons/fortify/README.md @@ -2,3 +2,9 @@ ace_fortify ============ Allows quick placement of fortifications. + +## ACEX Conversion - things still using acex prefix +- **Some** settings +- CfgVehicles Module Classnames +- `ACEX_Fortify_Presets` config +- Events (`acex_fortify_objectPlaced`, `acex_fortify_objectDeleted`, `acex_fortify_onDeployStart`) diff --git a/addons/fortify/XEH_PREP.hpp b/addons/fortify/XEH_PREP.hpp index b2feda35fa..785ba0a49f 100644 --- a/addons/fortify/XEH_PREP.hpp +++ b/addons/fortify/XEH_PREP.hpp @@ -15,3 +15,4 @@ ACEX_PREP(getPlaceableSet); ACEX_PREP(modifyAction); ACEX_PREP(setupModule); ACEX_PREP(buildLocationModule); +ACEX_PREP(createObjectMarker); diff --git a/addons/fortify/XEH_postInit.sqf b/addons/fortify/XEH_postInit.sqf index 17e1e60c76..1e9670481d 100644 --- a/addons/fortify/XEH_postInit.sqf +++ b/addons/fortify/XEH_postInit.sqf @@ -2,11 +2,20 @@ if (isServer) then { [QGVAR(registerObjects), LINKFUNC(registerObjects)] call CBA_fnc_addEventHandler; - [QGVAR(objectPlaced), { + [QXGVAR(objectPlaced), { params ["_unit", "_side", "_object"]; TRACE_3("objectPlaced",_unit,_side,_object); private _jipID = [QGVAR(addActionToObject), [_side, _object]] call CBA_fnc_globalEventJIP; [_jipID, _object] call CBA_fnc_removeGlobalEventJIP; // idealy this function should be called on the server + + if (GVAR(markObjectsOnMap) isNotEqualTo 0 && {_object isKindOf "Static"}) then { + // Wait ensures correct marker pos/rot as object is moved into position after creation + [ + FUNC(createObjectMarker), + [_unit, _object], + 1 + ] call CBA_fnc_waitAndExecute; + }; }] call CBA_fnc_addEventHandler; }; @@ -49,7 +58,7 @@ GVAR(objectRotationZ) = 0; params ["_target", "_player", "_params"]; _params params ["_side"]; TRACE_2("deleting placed object",_target,_params); - [QGVAR(objectDeleted), [_player, _side, _target]] call CBA_fnc_globalEvent; + [QXGVAR(objectDeleted), [_player, _side, _target]] call CBA_fnc_globalEvent; deleteVehicle _target; _params call FUNC(updateBudget); }, @@ -63,3 +72,32 @@ GVAR(objectRotationZ) = 0; [_object, 0, ["ACE_MainActions"], _removeAction] call EFUNC(interact_menu,addActionToObject); }; }] call CBA_fnc_addEventHandler; + +// Place object event handler +[QGVAR(deployFinished), { + params ["_args", "_elapsedTime", "_totalTime", "_errorCode"]; + _args params ["_unit", "_side", "_typeOf", "_posASL", "_vectorDir", "_vectorUp"]; + + private _newObject = _typeOf createVehicle _posASL; + _newObject setPosASL _posASL; + _newObject setVectorDirAndUp [_vectorDir, _vectorUp]; + + // Server will use this event to run the jip compatible QGVAR(addActionToObject) event and create the related map marker + [QXGVAR(objectPlaced), [_unit, _side, _newObject]] call CBA_fnc_globalEvent; + + if (cba_events_control) then { + // Re-run if ctrl key held + [_unit, _unit, [_side, _typeOf, [GVAR(objectRotationX), GVAR(objectRotationY), GVAR(objectRotationZ)]]] call FUNC(deployObject); + }; + + // Reset animation + [_unit, "", 1] call EFUNC(common,doAnimation); +}] call CBA_fnc_addEventHandler; + +[QGVAR(deployCanceled), { + params ["_args", "_elapsedTime", "_totalTime", "_errorCode"]; + _args params ["_unit", "_side", "_typeOf", "_posASL", "_vectorDir", "_vectorUp"]; + + // Reset animation + [_unit, "", 1] call EFUNC(common,doAnimation); +}] call CBA_fnc_addEventHandler; diff --git a/addons/fortify/config.cpp b/addons/fortify/config.cpp index 5e2185021f..ab12338982 100644 --- a/addons/fortify/config.cpp +++ b/addons/fortify/config.cpp @@ -12,10 +12,7 @@ class CfgPatches { VERSION_CONFIG; }; - class XADDON: ADDON { - units[] = {}; - weapons[] = {}; - }; + BWC_CONFIG(XADDON); }; #include "Cfg3DEN.hpp" diff --git a/addons/fortify/functions/fnc_createObjectMarker.sqf b/addons/fortify/functions/fnc_createObjectMarker.sqf new file mode 100644 index 0000000000..45c79e7dca --- /dev/null +++ b/addons/fortify/functions/fnc_createObjectMarker.sqf @@ -0,0 +1,48 @@ +#include "script_component.hpp" +/* + * Author: Seb + * Creates a map marker for a created static object but only for sides friendly to the creator side. + * + * Arguments: + * 0: Unit placing + * 1: Created fortify object + * + * Return Value: + * None + * + * Example: + * [player, cursorObject] call ace_fortify_fnc_createObjectMarker + * + * Public: No + */ + +params ["_unit", "_object"]; +TRACE_2("createObjectMarker",_unit,_object); + +// Get Object size and direction +private _bbr = 0 boundingBoxReal _object; +private _p1 = _bbr select 0; +private _p2 = _bbr select 1; +private _maxWidth = abs ((_p2 select 0) - (_p1 select 0)); +private _maxLength = abs ((_p2 select 1) - (_p1 select 1)); +private _direction = getDir _object; + +// Marker name unique to this object +private _markerNameStr = format [QGVAR(marker_%1), hashValue _object]; +private _channel = if (GVAR(markObjectsOnMap) == 2) then { 0 } else { 1 }; + +private _marker = createMarkerLocal [_markerNameStr, _object, _channel, _unit]; +TRACE_2("created",_marker,_channel); +_marker setMarkerShapeLocal "RECTANGLE"; +_marker setMarkerBrushLocal "SolidFull"; +_marker setMarkerSizeLocal [(_maxWidth / 2),(_maxLength / 2)]; +_marker setMarkerDirLocal _direction; +_marker setMarkerColor "ColorGrey"; +_object setVariable [QGVAR(mapMarker), _marker, false]; + +_object addEventHandler ["Deleted", { + params ["_object"]; + private _marker = _object getVariable QGVAR(mapMarker); + TRACE_2("cleaning up marker",_object,_marker); + deleteMarker _marker +}]; diff --git a/addons/fortify/functions/fnc_deployConfirm.sqf b/addons/fortify/functions/fnc_deployConfirm.sqf index 775d0aad51..7ac43e2b1f 100644 --- a/addons/fortify/functions/fnc_deployConfirm.sqf +++ b/addons/fortify/functions/fnc_deployConfirm.sqf @@ -30,14 +30,29 @@ private _vectorDir = vectorDir _object; deleteVehicle _object; -private _newObject = _typeOf createVehicle _posASL; -_newObject setPosASL _posASL; -_newObject setVectorDirAndUp [_vectorDir, _vectorUp]; +// Create progress bar to place object +private _totalTime = _cost * GVAR(timeCostCoefficient) + GVAR(timeMin); // time = Ax + b -// Server will use this event to run the jip compatible QGVAR(addActionToObject) event -[QGVAR(objectPlaced), [_unit, _side, _newObject]] call CBA_fnc_globalEvent; +private _perframeCheck = { + params ["_args", "_elapsedTime", "_totalTime", "_errorCode"]; + _args params ["_unit", "_side", "_typeOf", "_posASL", "_vectorDir", "_vectorUp"]; -if (cba_events_control) then { - // Re-run if ctrl key held - [_unit, _unit, [_side, _typeOf, [GVAR(objectRotationX), GVAR(objectRotationY), GVAR(objectRotationZ)]]] call FUNC(deployObject); + // Animation loop (required for longer constructions) + if (animationState _unit isNotEqualTo "AinvPknlMstpSnonWnonDnon_medic4") then { + // Perform animation + [_unit, "AinvPknlMstpSnonWnonDnon_medic4"] call EFUNC(common,doAnimation); + }; + + // Return true always + true }; + +[ + _totalTime, + [_unit, _side, _typeOf, _posASL, _vectorDir, _vectorUp], + QGVAR(deployFinished), + QGVAR(deployCanceled), + LLSTRING(progressBarTitle), + _perframeCheck +] call EFUNC(common,progressBar); + diff --git a/addons/fortify/functions/fnc_deployObject.sqf b/addons/fortify/functions/fnc_deployObject.sqf index 8ed404e7d6..cff46df6d9 100644 --- a/addons/fortify/functions/fnc_deployObject.sqf +++ b/addons/fortify/functions/fnc_deployObject.sqf @@ -43,7 +43,7 @@ private _icons = [["alt", localize "str_3den_display3den_entitymenu_movesurface_ [_lmb, _rmb, _wheel, _icons] call EFUNC(interaction,showMouseHint); private _mouseClickID = [_player, "DefaultAction", {GVAR(isPlacing) == PLACE_WAITING}, {GVAR(isPlacing) = PLACE_APPROVE}] call EFUNC(common,addActionEventHandler); -[QGVAR(onDeployStart), [_player, _object, _cost]] call CBA_fnc_localEvent; +[QXGVAR(onDeployStart), [_player, _object, _cost]] call CBA_fnc_localEvent; [{ params ["_args", "_pfID"]; diff --git a/addons/fortify/initSettings.sqf b/addons/fortify/initSettings.sqf index 6ecb47444a..aa8d62f5c4 100644 --- a/addons/fortify/initSettings.sqf +++ b/addons/fortify/initSettings.sqf @@ -9,3 +9,36 @@ 2 ] ] call CBA_fnc_addSetting; + +[ + QGVAR(timeCostCoefficient), + "SLIDER", + [LLSTRING(settingHint_timeCostCoefficient), LLSTRING(settingHintDesc_timeCostCoefficient)], + LLSTRING(settingsCategory), + [0, 10, 1, 2], // Min, Max, Default, Trailing Decimals, is Percentage + true //isGlobal +] call CBA_fnc_addSetting; + +[ + QGVAR(timeMin), + "SLIDER", + [LLSTRING(settingHint_timeMin), LLSTRING(settingHintDesc_timeMin)], + LLSTRING(settingsCategory), + [0, 25, 1.5, 2], // Min, Max, Default, Trailing Decimals, is Percentage + true //isGlobal +] call CBA_fnc_addSetting; + +[ + QGVAR(markObjectsOnMap), + "LIST", + [LLSTRING(markObjectsOnMap), LLSTRING(markObjectsOnMapDesc)], + LLSTRING(settingsCategory), + [ + [0, 1, 2], + [LLSTRING(markObjectsOnMapNone), LLSTRING(markObjectsOnMapFriendly), LLSTRING(markObjectsOnMapEveryone)], + 1 + ], + true, + {}, + true +] call CBA_fnc_addSetting; diff --git a/addons/fortify/stringtable.xml b/addons/fortify/stringtable.xml index 514af4a683..48e69198c3 100644 --- a/addons/fortify/stringtable.xml +++ b/addons/fortify/stringtable.xml @@ -51,6 +51,7 @@ Инициализирует систему фортификации с некоторыми базовыми параметрами.<br/>Предустановки взяты из configFile и missionConfigFile, формат смотри на wiki. Inşa etme sistemini bazı temel parametrelerle başlatır. <br/> Ön ayarlar configFile ve missionConfigFile'dan alınır, format için wiki'ye bakın. 要塞システムを初期設定に戻します。<br/>プリセットは configfile と missionConfigFile から参照されます。詳細は wiki を参照してください。 + Initialisiert das Verstärken-System, mit grundlegenden Einstellungen <br/>Vorseinstellungen werden aus der configFile und der missionConfigFile gezogen, für mehr Informationen: siehe das ACE Wiki. Rotate @@ -156,12 +157,69 @@ Показывать всегда Her Zaman Göster + + Time-Cost Coefficient + + + Coefficient used to determine time to build structure.<br/>A in Ax + b where x is cost of object + + + Minimum Build Time + + + Minimum time to build any structure.<br/>b in Ax + b where x is cost of object + + + Building + + + Create map markers + + + Create map markers that look like terrain buildings when static fortifications are placed + + + Never + Nikdy + Nie + Никогда + Nigdy + Mai + Nunca + Jamais + 永不 + なし + 항상 안 함 + Nunca + 永不 + Asla + + + For units friendly to the placer + + + For everyone + 所有人 + Pour tous + Para todos + Per tutti + Dla wszystkich + Для всех + Für alle + Pro všechny + Para todos + 모든 사람 + 针对每一个人 + 全員に + Herkes için + Small Małe Малый Küçük 小型 + Klein Small (Green) @@ -169,6 +227,7 @@ Małe (Zielone) Küçük (Yeşil) 小型 (グリーン) + Klein (Grün) Medium @@ -176,6 +235,7 @@ Средний Orta 中型 + Mittel Medium (Green) @@ -183,6 +243,7 @@ Średnie (Zielone) Orta (Yeşil) 中型 (グリーン) + Mittel (Grün) Big @@ -190,6 +251,7 @@ Большой Büyük 大型 + Groß Big (Green) @@ -197,6 +259,7 @@ Большой (Зеленый) Büyük (Yeşil) 大型 (グリーン) + Groß (Grün) diff --git a/addons/frag/functions/fnc_addPfhRound.sqf b/addons/frag/functions/fnc_addPfhRound.sqf index 35b927e687..0fa693753e 100644 --- a/addons/frag/functions/fnc_addPfhRound.sqf +++ b/addons/frag/functions/fnc_addPfhRound.sqf @@ -60,7 +60,7 @@ if (alive _round) then { private _spallTrackID = []; private _args = [ - _round, getPosASL _round, velocity _round, _type, diag_frameno, _gun, _doSpall, _spallTrack, _spallTrackID, + _round, getPosASL _round, velocity _round, _type, diag_frameno, getPosASL _round, _doSpall, _spallTrack, _spallTrackID, getNumber (configFile >> "CfgAmmo" >> _type >> QGVAR(skip)), getNumber (configFile >> "CfgAmmo" >> _type >> "explosive"), getNumber (configFile >> "CfgAmmo" >> _type >> "indirectHitRange"), diff --git a/addons/frag/functions/fnc_pfhRound.sqf b/addons/frag/functions/fnc_pfhRound.sqf index 4d5e9b2e99..de7dcadfc9 100644 --- a/addons/frag/functions/fnc_pfhRound.sqf +++ b/addons/frag/functions/fnc_pfhRound.sqf @@ -15,7 +15,7 @@ * Public: No */ -params ["_round", "_lastPos", "_lastVel", "_shellType", "_firedFrame", "_gun", "_doSpall", "_spallTrack", "_foundObjectHPIds", "_skip", "_explosive", "_indirectRange", "_force", "_fragPower"]; +params ["_round", "_lastPos", "_lastVel", "_shellType", "_firedFrame", "_firedPos", "_doSpall", "_spallTrack", "_foundObjectHPIds", "_skip", "_explosive", "_indirectRange", "_force", "_fragPower"]; if (_round in GVAR(blackList)) exitWith { false @@ -26,13 +26,10 @@ if (!alive _round) exitWith { if (_skip == 0) then { if ((_explosive > 0.5 && {_indirectRange >= 4.5} && {_fragPower >= 35}) || {_force == 1}) then { // shotbullet, shotShell don't seem to explode when touching water, so don't create frags - if (((_lastPos select 2) < 0) && {(toLower getText (configFile >> "CfgAmmo" >> _shellType >> "simulation")) in ["shotbullet", "shotshell"]}) exitWith {}; - private _isArmed = true; - if (!isNil "_gun") then { - private _fuseDist = getNumber(configFile >> "CfgAmmo" >> _shellType >> "fuseDistance"); - _isArmed = ((getPosASL _gun) distance _lastPos > _fuseDist); - TRACE_2("",_fuseDist,_isArmed); - }; + if ((surfaceIsWater _lastPos) && {(toLower getText (configFile >> "CfgAmmo" >> _shellType >> "simulation")) in ["shotbullet", "shotshell"]}) exitWith {}; + private _fuseDist = getNumber(configFile >> "CfgAmmo" >> _shellType >> "fuseDistance"); + private _isArmed = _firedPos vectorDistance _lastPos >= _fuseDist; // rounds explode at exactly fuseDistance, so check inclusive + TRACE_2("",_fuseDist,_isArmed); if (!_isArmed) exitWith {TRACE_1("round not armed",_this);}; TRACE_3("Sending frag event to server",_lastPos,_lastVel,_shellType); [QGVAR(frag_eh), [_lastPos,_lastVel,_shellType]] call CBA_fnc_serverEvent; diff --git a/addons/gforces/CfgWeapons.hpp b/addons/gforces/CfgWeapons.hpp index 94dbc71c0e..35b0ec9792 100644 --- a/addons/gforces/CfgWeapons.hpp +++ b/addons/gforces/CfgWeapons.hpp @@ -22,4 +22,4 @@ class CfgWeapons { class U_I_E_Uniform_01_coveralls_F: Uniform_Base { ACE_GForceCoef = 0.8; }; -}; \ No newline at end of file +}; diff --git a/addons/gforces/functions/script_component.hpp b/addons/gforces/functions/script_component.hpp index 4d0ee63e05..70ff0c4225 100644 --- a/addons/gforces/functions/script_component.hpp +++ b/addons/gforces/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\gforces\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\gforces\script_component.hpp" diff --git a/addons/gforces/stringtable.xml b/addons/gforces/stringtable.xml index b2344067de..3831ec8739 100644 --- a/addons/gforces/stringtable.xml +++ b/addons/gforces/stringtable.xml @@ -9,6 +9,7 @@ ACE G フォース ACE G-Kuvveti ACE Fuerza G + ACE G-Kräfte Gforces Effects @@ -65,6 +66,7 @@ G 効果係数 G-Kuvvet Katsayısı Coeficiente de Fuerza G + G-Kräfte-Koeffizient Controls strength of G-Force affecting players. @@ -74,6 +76,7 @@ G 効果がプレイヤーに与える影響量を設定できます。 Oyuncuları etkileyen G-Force'un gücünü kontrol eder. Controla la intensidad de fuerza G que afecta a los jugadores. + Bestimmt, wie stark G-Kräfte Spieler beeinflussen. diff --git a/addons/goggles/RscTitles.hpp b/addons/goggles/RscTitles.hpp index 7c62c6960c..0716892312 100644 --- a/addons/goggles/RscTitles.hpp +++ b/addons/goggles/RscTitles.hpp @@ -1,7 +1,7 @@ -class RscTitles{ +class RscTitles { #include "define.hpp" - class RscACE_Goggles_BaseTitle{ + class RscACE_Goggles_BaseTitle { idd = -1; onLoad = "uiNamespace setVariable ['ACE_Goggles_Display', _this select 0]"; onUnload = "uiNamespace setVariable ['ACE_Goggles_Display', displayNull]"; @@ -13,25 +13,25 @@ class RscTitles{ class controls; }; - class RscACE_Goggles:RscACE_Goggles_BaseTitle{ + class RscACE_Goggles: RscACE_Goggles_BaseTitle { idd = 1044; name = "RscACE_Goggles"; - class controls{ - class gogglesImage: RscPicture{ + class controls { + class gogglesImage: RscPicture { idc = 10650; }; }; }; - class RscACE_GogglesEffects:RscACE_Goggles_BaseTitle{ + class RscACE_GogglesEffects: RscACE_Goggles_BaseTitle { idd = 1045; onLoad = "uiNamespace setVariable ['ACE_Goggles_DisplayEffects', _this select 0]"; onUnload = "uiNamespace setVariable ['ACE_Goggles_DisplayEffects', displayNull]"; name = "RscACE_GogglesEffects"; fadeIn=0; fadeOut=0.5; - class controls{ - class dirtImage: RscPicture { + class controls { + class dirtImage: RscPicture { idc = 10660; }; class dustImage: RscPicture { diff --git a/addons/goggles/config.cpp b/addons/goggles/config.cpp index 88ebe3f8f8..4718662e62 100644 --- a/addons/goggles/config.cpp +++ b/addons/goggles/config.cpp @@ -42,7 +42,7 @@ class CfgGlasses { ACE_Protection = 1; }; - class G_Combat:None { + class G_Combat: None { COMBAT_GOGGLES }; @@ -57,135 +57,135 @@ class CfgGlasses { ACE_Protection = 1; }; - class G_Lowprofile:None { + class G_Lowprofile: None { ACE_TintAmount=COLOUR*2; ACE_Resistance = 2; ACE_Protection = 1; }; - class G_Shades_Black:None { + class G_Shades_Black: None { ACE_TintAmount=COLOUR*2; ACE_Resistance = 1; }; - class G_Shades_Blue:None{ + class G_Shades_Blue: None { ACE_Color[] = {0,0,1}; ACE_TintAmount=COLOUR; ACE_Resistance = 1; }; - class G_Shades_Green:None{ + class G_Shades_Green: None { ACE_Color[] = {0,1,0}; ACE_TintAmount=COLOUR; ACE_Resistance = 1; }; - class G_Shades_Red:None{ + class G_Shades_Red: None { ACE_Color[] = {1,0,0}; ACE_TintAmount=COLOUR; ACE_Resistance = 1; }; - class G_Spectacles:None{ + class G_Spectacles: None { ACE_TintAmount=COLOUR; ACE_Resistance = 1; }; - class G_Spectacles_Tinted:None{ + class G_Spectacles_Tinted: None { ACE_TintAmount=COLOUR*2; ACE_Resistance = 1; }; - class G_Sport_Blackred:None{ + class G_Sport_Blackred: None { ACE_Color[] = {1,0,0}; ACE_TintAmount=COLOUR; ACE_Resistance = 1; }; - class G_Sport_BlackWhite:None{ + class G_Sport_BlackWhite: None { ACE_Color[] = {0,0,1}; ACE_TintAmount=COLOUR; ACE_Resistance = 1; }; - class G_Sport_Blackyellow:None{ + class G_Sport_Blackyellow: None { ACE_TintAmount=COLOUR*2; ACE_Resistance = 1; }; - class G_Sport_Checkered:None{ + class G_Sport_Checkered: None { ACE_TintAmount=COLOUR*2; ACE_Resistance = 1; }; - class G_Sport_Greenblack:None{ + class G_Sport_Greenblack: None { ACE_TintAmount=COLOUR*2; ACE_Resistance = 1; }; - class G_Sport_Red:None{ + class G_Sport_Red: None { ACE_TintAmount=COLOUR*2; ACE_Color[] = {0,0,0}; ACE_Resistance = 1; }; - class G_Squares:None{ + class G_Squares: None { ACE_TintAmount=COLOUR; ACE_Resistance = 1; }; - class G_Squares_Tinted:None{ + class G_Squares_Tinted: None { ACE_TintAmount=COLOUR; ACE_Resistance = 1; }; - class G_Tactical_Black:None{ + class G_Tactical_Black: None { ACE_TintAmount=COLOUR; ACE_Color[] = {0,0,-1.5}; ACE_Resistance = 1; }; - class G_Tactical_Clear:None{ + class G_Tactical_Clear: None { ACE_TintAmount=COLOUR; ACE_Color[] = {0,0,-1}; ACE_Resistance = 1; }; - class G_Aviator:None{ + class G_Aviator: None { ACE_Color[] = {0,0,-1}; ACE_TintAmount=COLOUR; ACE_Resistance = 1; }; - class G_Lady_Blue:None{ + class G_Lady_Blue: None { ACE_Color[] = {0,0,1}; ACE_TintAmount=COLOUR; ACE_Resistance = 1; }; - class G_Lady_Red:None{ + class G_Lady_Red: None { ACE_Color[] = {1,0,0}; ACE_TintAmount=COLOUR; ACE_Resistance = 1; }; - class G_Lady_Dark:None{ + class G_Lady_Dark: None { ACE_TintAmount=COLOUR*2; ACE_Resistance = 1; }; - class G_Lady_Mirror:None{ + class G_Lady_Mirror: None { ACE_TintAmount=COLOUR; ACE_Resistance = 1; }; class G_Balaclava_blk; - class G_Balaclava_combat:G_Balaclava_blk { + class G_Balaclava_combat: G_Balaclava_blk { COMBAT_GOGGLES }; - class G_Balaclava_lowprofile:G_Balaclava_blk { + class G_Balaclava_lowprofile: G_Balaclava_blk { ACE_TintAmount=COLOUR*2; ACE_Resistance = 2; ACE_Protection = 1; @@ -202,7 +202,7 @@ class CfgGlasses { }; class G_Bandanna_blk; - class G_Bandanna_shades:G_Bandanna_blk { + class G_Bandanna_shades: G_Bandanna_blk { ACE_TintAmount=COLOUR*2; ACE_Resistance = 1; ACE_Protection = 1; @@ -265,13 +265,13 @@ class CfgGesturesMale { class CfgWeapons { class H_HelmetB; - class H_CrewHelmetHeli_B:H_HelmetB { + class H_CrewHelmetHeli_B: H_HelmetB { ACE_Protection = 1; }; - class H_PilotHelmetHeli_B:H_HelmetB { + class H_PilotHelmetHeli_B: H_HelmetB { ACE_Protection = 1; }; - class H_PilotHelmetFighter_B:H_HelmetB { + class H_PilotHelmetFighter_B: H_HelmetB { ACE_Protection = 1; }; }; @@ -290,7 +290,7 @@ class SniperCloud { class CfgCloudlets { class Default; - class ACERainEffect:Default { + class ACERainEffect: Default { interval = 0.001; particleShape = "\A3\data_f\ParticleEffects\Universal\Refract"; particleFSNtieth = 1; diff --git a/addons/grenades/functions/fnc_flashbangExplosionEH.sqf b/addons/grenades/functions/fnc_flashbangExplosionEH.sqf index 07b74b7bcc..29bb46db8a 100644 --- a/addons/grenades/functions/fnc_flashbangExplosionEH.sqf +++ b/addons/grenades/functions/fnc_flashbangExplosionEH.sqf @@ -47,28 +47,42 @@ private _affected = (ASLtoAGL _grenadePosASL) nearEntities ["CAManBase", 20]; _affected = _affected - [ACE_player]; { if (local _x && {alive _x}) then { - private _strength = 1 - (((eyePos _x) vectorDistance _grenadePosASL) min 20) / 20; + private _unit = _x; + private _strength = 1 - (((eyePos _unit) vectorDistance _grenadePosASL) min 20) / 20; - TRACE_3("FlashBangEffect Start",_x,((getPosASL _x) vectorDistance _grenadePosASL),_strength); + TRACE_3("FlashBangEffect Start",_unit,((getPosASL _unit) vectorDistance _grenadePosASL),_strength); - [_x, true] call EFUNC(common,disableAI); - - _x setSkill (skill _x / 50); + [_unit, true] call EFUNC(common,disableAI); // Make AI try to look away - private _dirToFlash = _x getDir _grenadePosASL; - _x setDir (_dirToFlash + linearConversion [0.2, 1, _strength, 40, 135] * selectRandom [-1, 1]); + private _dirToFlash = _unit getDir _grenadePosASL; + _unit setDir (_dirToFlash + linearConversion [0.2, 1, _strength, 40, 135] * selectRandom [-1, 1]); - [{ - params ["_unit"]; + private _flashReactionDebounce = _unit getVariable [QGVAR(flashReactionDebounce), 0]; + _unit setVariable [QGVAR(flashReactionDebounce), _flashReactionDebounce max (CBA_missionTime + (7 * _strength))]; + if (_flashReactionDebounce < CBA_missionTime) then { + // Not used interally but could be useful for other mods + _unit setVariable [QGVAR(flashStrength), _strength, true]; + { + _unit setSkill [_x, (_unit skill _x) / 50]; + } forEach SUBSKILLS; + [{ + params ["_unit"]; + CBA_missiontime >= _unit getVariable [QGVAR(flashReactionDebounce), 0] + },{ + params ["_unit"]; - //Make sure we don't enable AI for unconscious units - if !(_unit getVariable ["ace_isUnconscious", false]) then { - [_unit, false] call EFUNC(common,disableAI); - }; + _unit setVariable [QGVAR(flashStrength), 0, true]; - _unit setSkill (skill _unit * 50); - }, [_x], 7 * _strength] call CBA_fnc_waitAndExecute; + // Make sure we don't enable AI for unconscious units + if !(_unit getVariable ["ace_isUnconscious", false]) then { + [_unit, false] call EFUNC(common,disableAI); + }; + { + _unit setSkill [_x, (_unit skill _x) * 50]; + } forEach SUBSKILLS; + }, [_unit]] call CBA_fnc_waitUntilAndExecute; + }; }; } count _affected; diff --git a/addons/grenades/functions/fnc_nextMode.sqf b/addons/grenades/functions/fnc_nextMode.sqf index 839fbd5786..b8b963afb3 100644 --- a/addons/grenades/functions/fnc_nextMode.sqf +++ b/addons/grenades/functions/fnc_nextMode.sqf @@ -33,7 +33,7 @@ private _hint = localize ([ LSTRING(HighThrow), LSTRING(PreciseThrow), LSTRING(RollGrenade), - LSTRING(DropGrenade) + LSTRING(DropGrenade) ] select _mode); [_hint] call EFUNC(common,displayTextStructured); diff --git a/addons/grenades/functions/script_component.hpp b/addons/grenades/functions/script_component.hpp index e6a44b8a20..a6a1784c85 100644 --- a/addons/grenades/functions/script_component.hpp +++ b/addons/grenades/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\grenades\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\grenades\script_component.hpp" diff --git a/addons/grenades/stringtable.xml b/addons/grenades/stringtable.xml index c78dfff13b..0cd8a020bc 100644 --- a/addons/grenades/stringtable.xml +++ b/addons/grenades/stringtable.xml @@ -528,6 +528,7 @@ 梱包爆薬 (投てき仕様) Carga de mochila explosiva (Lanzable) Pakiet ładunków wybuchowych (Rzucany) + Rucksackladung (Werfbar) Type: Charge<br />Rounds: 1<br />Used on: Things that need to die @@ -536,6 +537,7 @@ 種類: 爆薬<br />弾数: 1<br />次で使用: 破壊すべき物に Tipo: Carga<br />Unidades: 1<br />Usada: Cosas que necesitan morir Typ: Ładunek<br/>Naboje: 1<br/>Użycie: Na rzeczach które mają zginąć + Typ: Ladung <br/>Patronen:1<br/>Benutzt für: Dinge die Sterben müssen An explosive satchel that is throwable. 7 second fixed fuse @@ -544,6 +546,7 @@ 投げられる梱包爆薬。起爆までの時間は 7 秒間 Carga de mochila explosiva que se puede lanzar. Espoleta fija de 7 segundos Rzucany pakiet ładunków wybuchowych. 7 sekundowy zapalnik + Werfbare Rucksackladung. 7 Sekunden Zeitzünder Explosive Charge (Throwable) @@ -552,6 +555,7 @@ 爆薬ブロック (投てき仕様) Carga explosiva (Lanzable) Ładunek wybuchowy (Rzucany) + Sprengladung (Werfbar) An explosive charge that is throwable. 7 second fixed fuse @@ -560,6 +564,7 @@ 投げられる爆薬ブロック。起爆までの時間は 7 秒間 Carga explosiva que se puede lanzar. Espoleta fija de 7 segundos Rzucany ładunkek wybuchowy. 7 sekundowy zapalnik + Werfbare Sprengladung. 7 Sekunden Zeitzünder Convert to short fuse @@ -568,6 +573,7 @@ 短信管へ変更 Convertir a espoleta corta Konwertuj na krótki zapalnik + Zündschnur verkürzen Remove short fuse @@ -576,6 +582,7 @@ 短信管を削除 Quitar espoleta corta Usuń krótki zapalnik + Kurze Zündschnur entfernen ACE Grenades @@ -600,6 +607,7 @@ 爆薬変更を許可 Permitir conversión de explosivos Pozwól na konwersję ładunków wybuchowych + Erlaube die Umwandlung von Sprengstoffen Allow converting explosives to throwables @@ -608,6 +616,7 @@ 爆発物を投てき仕様へ交換できるようにします。 Permitir convertir explosivos a lanzables Zezwala na konwersje ładunków wybuchowych na rzucane wersje + Erlaube die Umwandlung von Sprengstoffen in werfbare Ladungen diff --git a/addons/gunbag/initSettings.sqf b/addons/gunbag/initSettings.sqf index f48981e2fd..b4ec000fa6 100644 --- a/addons/gunbag/initSettings.sqf +++ b/addons/gunbag/initSettings.sqf @@ -1,9 +1,9 @@ -// CBA Settings [ADDON: ace_gunbag]: +private _category = [LELSTRING(common,categoryUncategorized), LLSTRING(DisplayName_Settings)]; [ QGVAR(swapGunbagEnabled), "CHECKBOX", [LSTRING(SwapGunbagEnabled_DisplayName), LSTRING(SwapGunbagEnabled_Description)], - ["ACE Uncategorized", LLSTRING(DisplayName_Settings)], + _category, true, // default value true // isGlobal ] call CBA_fnc_addSetting; diff --git a/addons/gunbag/stringtable.xml b/addons/gunbag/stringtable.xml index 7d2050c52d..fbcc3d1fb8 100644 --- a/addons/gunbag/stringtable.xml +++ b/addons/gunbag/stringtable.xml @@ -73,6 +73,7 @@ ガンバッグ内の武器を交換 Silah çantasında silah değişimi Intercambiar arma en funda de arma + Waffe in Waffentasche tauschen Enable Weapon Swap @@ -82,6 +83,7 @@ 武器交換を有効化 Silah Değiştirmeyi Etkinleştir Habilitar cambio de arma + Aktiviere Tauschen von Waffen Allows interaction to directly swap the primary weapon and stored weapon. @@ -91,6 +93,7 @@ 持っている武器とガンバッグ内の武器を交換できるようにします。 Etkileşimin doğrudan birincil silahı ve depolanan silahı değiştirmesine izin verir. Permitir interacción para intercambiar el arma principal y el arma guardada. + Erlaube den direkten Wechsel von Primärer und verstauter Waffe über das Interaktionsmenü. Get weapon out of gunbag diff --git a/addons/headless/CfgVehicles.hpp b/addons/headless/CfgVehicles.hpp index 4db23b20eb..3bd5ee63b5 100644 --- a/addons/headless/CfgVehicles.hpp +++ b/addons/headless/CfgVehicles.hpp @@ -2,7 +2,7 @@ class CfgVehicles { class ACE_Module; class XGVAR(module): ACE_Module { author = ECSTRING(common,ACETeam); - category = "ACEX"; + category = "ACE"; displayName = CSTRING(Module); function = QFUNC(moduleInit); scope = 1; diff --git a/addons/headless/README.md b/addons/headless/README.md index 934c73e5cd..6d0cf28bd8 100644 --- a/addons/headless/README.md +++ b/addons/headless/README.md @@ -7,3 +7,8 @@ Adds automatic passing of AI groups to (up to 3) Headless Clients. - Round-robin transferring when more than 1 Headless Client is present - Mission makers can use the following to prevent a group from transferring to a Headless Client: `this setVariable ["acex_headless_blacklist", true, true];` + +## ACEX Conversion - things still using acex prefix +- All settings +- 3DEN attribute config name +- Object SetVar (`acex_headless_blacklist`) diff --git a/addons/headless/XEH_postInit.sqf b/addons/headless/XEH_postInit.sqf index 6e9a531899..2237c629e3 100644 --- a/addons/headless/XEH_postInit.sqf +++ b/addons/headless/XEH_postInit.sqf @@ -6,7 +6,7 @@ if (isServer) then { // Request rebalance on any unit spawn (only if distribution enabled) if (XGVAR(enabled)) then { - ["AllVehicles", "init", FUNC(handleSpawn), nil, nil, true] call CBA_fnc_addClassEventHandler; + ["AllVehicles", "initPost", FUNC(handleSpawn), nil, nil, true] call CBA_fnc_addClassEventHandler; }; // Add disconnect EH addMissionEventHandler ["HandleDisconnect", {call FUNC(handleDisconnect)}]; diff --git a/addons/headless/config.cpp b/addons/headless/config.cpp index f6c4212438..1491c330b5 100644 --- a/addons/headless/config.cpp +++ b/addons/headless/config.cpp @@ -13,10 +13,7 @@ class CfgPatches { VERSION_CONFIG; }; - class XADDON: ADDON { - units[] = {}; - weapons[] = {}; - }; + BWC_CONFIG(XADDON); }; #include "ACE_Settings.hpp" diff --git a/addons/hearing/functions/script_component.hpp b/addons/hearing/functions/script_component.hpp index 18305605c4..68af962cdc 100644 --- a/addons/hearing/functions/script_component.hpp +++ b/addons/hearing/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\hearing\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\hearing\script_component.hpp" diff --git a/addons/hellfire/CfgMagazines.hpp b/addons/hellfire/CfgMagazines.hpp index 6d1651604f..eaee714f88 100644 --- a/addons/hellfire/CfgMagazines.hpp +++ b/addons/hellfire/CfgMagazines.hpp @@ -1,6 +1,6 @@ class CfgMagazines { class 12Rnd_PG_missiles; - + // Kilo - tandem shaped charge HEAT (anti-tank) class 6Rnd_ACE_Hellfire_AGM114K: 12Rnd_PG_missiles { // Old style vehicle magazine count = 6; @@ -84,7 +84,7 @@ class CfgMagazines { ammo = "ACE_Hellfire_AGM114N"; pylonWeapon = QGVAR(launcher_N); }; - + // Lima - tandem shaped charge HEAT (anti-tank) Fire and Forget Active Radar Homing class 6Rnd_ACE_Hellfire_AGM114L: 6Rnd_ACE_Hellfire_AGM114K { // Old style vehicle magazine count = 6; diff --git a/addons/hellfire/CfgWeapons.hpp b/addons/hellfire/CfgWeapons.hpp index a09c642696..fd9bdce044 100644 --- a/addons/hellfire/CfgWeapons.hpp +++ b/addons/hellfire/CfgWeapons.hpp @@ -44,7 +44,7 @@ class CfgWeapons { cursor = "EmptyCursor"; cursorAim = "missile"; showAimCursorInternal = 0; - + // vanilla weapon lock systems weaponLockSystem = 8; cmImmunity = 0.9; diff --git a/addons/hellfire/functions/fnc_setupVehicle.sqf b/addons/hellfire/functions/fnc_setupVehicle.sqf index cf0a17a2e7..9fcd5d8376 100644 --- a/addons/hellfire/functions/fnc_setupVehicle.sqf +++ b/addons/hellfire/functions/fnc_setupVehicle.sqf @@ -41,7 +41,7 @@ if (!_enabled) exitWith {TRACE_3("Not enabled",_enabled,_vehicle,_turretPath);}; // Add laser if vehicle is configured for one: -if ((getNumber (configOf _vehicle >> QGVAR(addLaserDesignator))) == 1) then { +if ((getNumber (configOf _vehicle >> QGVAR(addLaserDesignator))) == 1) then { [{ params ["_vehicle", "_turretPath"]; TRACE_3("checking for laser",_vehicle,_turretPath,_vehicle turretLocal _turretPath); @@ -78,7 +78,7 @@ private _fnc_statement = { }; private _fnc_condition = { params ["_target", "_player", "_attackProfile"]; - + private _turretPath = if (ACE_player == (driver _target)) then {[-1]} else {ACE_player call CBA_fnc_turretPath}; private _hasWeapon = ({(isNumber (configFile >> "CfgWeapons" >> _x >> QGVAR(enabled))) && {getNumber (configFile >> "CfgWeapons" >> _x >> QGVAR(enabled)) > 0}} count (_target weaponsTurret _turretPath)) > 0; diff --git a/addons/hellfire/stringtable.xml b/addons/hellfire/stringtable.xml index 1f5b495b06..be74f29c08 100644 --- a/addons/hellfire/stringtable.xml +++ b/addons/hellfire/stringtable.xml @@ -24,6 +24,7 @@ Missile antichar à guidage laser semi-actif (charge HEAT) セミ アクティブ レーダー誘導の対戦車弾頭 Rakieta naprowadzana laserowo z głowicą przeciwpancerną + Halbaktive Laser-Zielsuchrakete mit HEAT-Gefechtskopf Millimeter-wave radar guided missile with high explosive anti-tank warhead @@ -32,6 +33,7 @@ Missile antichar à guidage radar à ondes courtes (charge HEAT) ミリ波レーダー誘導の対戦車弾頭 Rakieta namierzana radarowo z głowicą przeciwpancerną + Millimeterwellenradar-Lenkflugkörper mit HEAT-Gefechtskopf Semi-active laser homing missile with metal augmented charge anti-personnel warhead @@ -40,6 +42,7 @@ Missile antipersonnel thermobarique à guidage laser semi-actif セミ アクティブ レーダー誘導の対人弾 Rakieta naprowadzana laserowo z głowicą odłamkową + Halbaktive Laser-Zielsuchrakete mit metallverstärktem Antipersonen-Gefechtskopf diff --git a/addons/hitreactions/functions/script_component.hpp b/addons/hitreactions/functions/script_component.hpp index ba26402e2b..d87ce4811a 100644 --- a/addons/hitreactions/functions/script_component.hpp +++ b/addons/hitreactions/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\hitreactions\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\hitreactions\script_component.hpp" diff --git a/addons/hitreactions/initSettings.sqf b/addons/hitreactions/initSettings.sqf index 9c067bf5f7..2ca4ceaeac 100644 --- a/addons/hitreactions/initSettings.sqf +++ b/addons/hitreactions/initSettings.sqf @@ -1,7 +1,9 @@ +private _category = [LELSTRING(common,categoryUncategorized), QUOTE(COMPONENT_BEAUTIFIED)]; + [ QGVAR(minDamageToTrigger), "SLIDER", LSTRING(minDamageToTrigger_displayName), - "ACE Uncategorized", + _category, [-1, 1, 0.1, 1], 1 ] call CBA_fnc_addSetting; diff --git a/addons/hot/CfgWeapons.hpp b/addons/hot/CfgWeapons.hpp index 1263ef8dea..d172de7fa1 100644 --- a/addons/hot/CfgWeapons.hpp +++ b/addons/hot/CfgWeapons.hpp @@ -12,7 +12,7 @@ class CfgWeapons { lockedTargetSound[] = {"",0,1}; soundFly[] = {"A3\Sounds_F\weapons\Rockets\rocket_fly_1",1,1.1,700}; nameSound = "MissileLauncher"; - sounds[] = {"StandardSound"}; + sounds[] = {"StandardSound"}; class StandardSound { begin1[] = {"A3\Sounds_F\weapons\Rockets\missile_1",1.12202,1.3,1000}; soundBegin[] = {"begin1",1}; @@ -45,7 +45,7 @@ class CfgWeapons { lockedTargetSound[] = {"",0,1}; soundFly[] = {"A3\Sounds_F\weapons\Rockets\rocket_fly_1",1,1.1,700}; nameSound = "MissileLauncher"; - sounds[] = {"StandardSound"}; + sounds[] = {"StandardSound"}; class StandardSound { begin1[] = {"A3\Sounds_F\weapons\Rockets\missile_1",1.12202,1.3,1000}; soundBegin[] = {"begin1",1}; @@ -54,7 +54,7 @@ class CfgWeapons { cursor = "EmptyCursor"; cursorAim = "missile"; showAimCursorInternal = 0; - + autoReload = 1; magazineReloadTime = 20; }; diff --git a/addons/huntir/CfgMagazineWells.hpp b/addons/huntir/CfgMagazineWells.hpp index 2d336054df..4bd116e7a8 100644 --- a/addons/huntir/CfgMagazineWells.hpp +++ b/addons/huntir/CfgMagazineWells.hpp @@ -4,5 +4,5 @@ class CfgMagazineWells { }; class UGL_40x36 { //Vanilla and RHS [rhsusf\addons\rhsusf_c_weapons\cfgMagazineWells.hpp] ADDON[] = {"ACE_HuntIR_M203"}; - }; + }; }; diff --git a/addons/huntir/functions/script_component.hpp b/addons/huntir/functions/script_component.hpp index 29e0fbff41..faf446a5ec 100644 --- a/addons/huntir/functions/script_component.hpp +++ b/addons/huntir/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\huntir\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\huntir\script_component.hpp" diff --git a/addons/intelitems/CfgMagazines.hpp b/addons/intelitems/CfgMagazines.hpp index 8123b430ee..48a130efa9 100644 --- a/addons/intelitems/CfgMagazines.hpp +++ b/addons/intelitems/CfgMagazines.hpp @@ -19,7 +19,7 @@ class CfgMagazines { }; class XGVAR(document): GVAR(base) { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); displayName = CSTRING(Document_DisplayName); descriptionShort = CSTRING(Document_Description); picture = QPATHTOF(ui\document_ca.paa); @@ -28,7 +28,7 @@ class CfgMagazines { }; class XGVAR(photo): GVAR(base) { - author = ACECSTRING(common,ACETeam); + author = ECSTRING(common,ACETeam); displayName = CSTRING(Photo_DisplayName); descriptionShort = CSTRING(Photo_Description); picture = QPATHTOF(ui\photo_ca.paa); diff --git a/addons/intelitems/README.md b/addons/intelitems/README.md index db446032ae..0149937739 100644 --- a/addons/intelitems/README.md +++ b/addons/intelitems/README.md @@ -2,3 +2,6 @@ ace_intelitems =============== Implements an intel system with unique items. + +## ACEX Conversion - things still using acex prefix +- All CfgWeapon Items (e.g. `acex_intelitems_notepad`) diff --git a/addons/intelitems/config.cpp b/addons/intelitems/config.cpp index 20827183b1..3b9b37b5b6 100644 --- a/addons/intelitems/config.cpp +++ b/addons/intelitems/config.cpp @@ -17,10 +17,7 @@ class CfgPatches { VERSION_CONFIG; }; - class XADDON: ADDON { - units[] = {}; - weapons[] = {}; - }; + BWC_CONFIG(XADDON); }; #include "CfgEventHandlers.hpp" diff --git a/addons/interact_menu/functions/fnc_findActionNode.sqf b/addons/interact_menu/functions/fnc_findActionNode.sqf index c2807a3e9c..f095482b99 100644 --- a/addons/interact_menu/functions/fnc_findActionNode.sqf +++ b/addons/interact_menu/functions/fnc_findActionNode.sqf @@ -9,7 +9,7 @@ * 1: Path * * Return Value: - * Action node or if not found + * Action node or if not found * * Example: * [actionTree, ["ACE_TapShoulderRight","VulcanPinchAction"]] call ace_interact_menu_fnc_findActionNode; diff --git a/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf b/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf index 1f2e0c5da1..27ab70ff5e 100644 --- a/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf +++ b/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf @@ -66,7 +66,7 @@ if ((vehicle ACE_player) != ACE_player) exitWith {}; _args set [0, (getPosASL ace_player)]; } else { - _houseBeingScaned = _housesToScanForActions deleteAt 0; + private _houseBeingScaned = _housesToScanForActions deleteAt 0; private _typeOfHouse = typeOf _houseBeingScaned; //Skip this house for now if we are outside of it's radius //(we have to scan far out for the big houses, but we don't want to waste time adding actions on every little shack) diff --git a/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf b/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf index 2b646e8eca..c676fb69f9 100644 --- a/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf +++ b/addons/interact_menu/functions/fnc_userActions_getHouseActions.sqf @@ -26,8 +26,8 @@ private _memPointsActions = []; //Get the offset for a memory point: private _fnc_getMemPointOffset = { params ["_memoryPoint"]; - _memPointIndex = _memPoints find _memoryPoint; - _actionOffset = [0,0,0]; + private _memPointIndex = _memPoints find _memoryPoint; + private _actionOffset = [0,0,0]; if (_memPointIndex == -1) then { _memPoints pushBack _memoryPoint; _memPointsActions pushBack []; @@ -82,7 +82,7 @@ for "_index" from 0 to ((count _configPath) - 1) do { private _actionStatement = getText (_actionPath >> "statement"); private _actionMaxDistance = getNumber (_actionPath >> "radius"); - if (_actionDisplayName == "") then {_actionDisplayName = (configName _x);}; + if (_actionDisplayName == "") then {_actionDisplayName = configName _actionPath;}; if (_actionPosition == "") then {ERROR("Bad Position");}; if (_actionCondition == "") then {_actionCondition = "true";}; if (_actionStatement == "") then {ERROR("No Statement");}; @@ -91,12 +91,12 @@ for "_index" from 0 to ((count _configPath) - 1) do { _actionCondition = compile _actionCondition; _actionMaxDistance = _actionMaxDistance + 0.1; //increase range slightly - private _iconImage = ((_actionDisplayNameDefault regexFind ["[\w\-\\\/]+.paa/gi", 0]) param [0, [""]]) select 0; + private _iconImage = ((_actionDisplayNameDefault regexFind ["[\w\-\\\/]+.paa/gi", 0]) param [0, []]) param [0, []] param [0, ""]; private _actionOffset = [_actionPosition] call _fnc_getMemPointOffset; private _memPointIndex = _memPoints find _actionPosition; - _action = [(configName _actionPath), _actionDisplayName, _iconImage, _fnc_userAction_Statement, _fnc_userAction_Condition, {}, [_actionStatement, _actionCondition], _actionOffset, _actionMaxDistance, [false,false,false,false,true]] call EFUNC(interact_menu,createAction); + private _action = [(configName _actionPath), _actionDisplayName, _iconImage, _fnc_userAction_Statement, _fnc_userAction_Condition, {}, [_actionStatement, _actionCondition], _actionOffset, _actionMaxDistance, [false,false,false,false,true]] call EFUNC(interact_menu,createAction); (_memPointsActions select _memPointIndex) pushBack _action; }; diff --git a/addons/interact_menu/functions/script_component.hpp b/addons/interact_menu/functions/script_component.hpp index 723a7735f1..38f4a6a71d 100644 --- a/addons/interact_menu/functions/script_component.hpp +++ b/addons/interact_menu/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\interact_menu\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\interact_menu\script_component.hpp" diff --git a/addons/interact_menu/initSettings.sqf b/addons/interact_menu/initSettings.sqf index e070f38bda..22287189c3 100644 --- a/addons/interact_menu/initSettings.sqf +++ b/addons/interact_menu/initSettings.sqf @@ -1,9 +1,10 @@ private _category = format ["ACE %1", LLSTRING(Category_InteractionMenu)]; +private _categoryColors = [_category, format ["| %1 |", LELSTRING(common,subcategory_colors)]]; [ QGVAR(selectorColor), "COLOR", LSTRING(SelectorColor), - _category, + _categoryColors, [1, 0, 0], false, {GVAR(selectorColorHex) = _this call BIS_fnc_colorRGBtoHTML} // Stored in Hex to avoid constant conversion @@ -12,7 +13,7 @@ private _category = format ["ACE %1", LLSTRING(Category_InteractionMenu)]; [ QGVAR(colorTextMax), "COLOR", LSTRING(ColorTextMax), - _category, + _categoryColors, [1, 1, 1, 1], 0 ] call CBA_fnc_addSetting; @@ -20,7 +21,7 @@ private _category = format ["ACE %1", LLSTRING(Category_InteractionMenu)]; [ QGVAR(colorTextMin), "COLOR", LSTRING(ColorTextMin), - _category, + _categoryColors, [1, 1, 1, 0.25], 0 ] call CBA_fnc_addSetting; @@ -28,7 +29,7 @@ private _category = format ["ACE %1", LLSTRING(Category_InteractionMenu)]; [ QGVAR(colorShadowMax), "COLOR", LSTRING(ColorShadowMax), - _category, + _categoryColors, [0, 0, 0, 1], 0 ] call CBA_fnc_addSetting; @@ -36,7 +37,7 @@ private _category = format ["ACE %1", LLSTRING(Category_InteractionMenu)]; [ QGVAR(colorShadowMin), "COLOR", LSTRING(ColorShadowMin), - _category, + _categoryColors, [0, 0, 0, 0.25], 0 ] call CBA_fnc_addSetting; diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 5a9964fa59..e2291e2953 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -495,6 +495,8 @@ サブ動作を統合 Consolidar acciones hijo únicas Combiner les sous-actions uniques + Untergeordnete Aktionen zusammenfassen + Połącz akcje podrzędne Combines parent action with only one child action together. @@ -502,6 +504,8 @@ メインの動作とサブ動作一つを統合して表示します。 Combina acciones padre con una única accion hijo de forma conjunta Lorsqu'un menu ne contient qu'une seule sous-action, elle est combinée avec son menu parent. + Übergeordnete Aktionen mit nur einer Unteraktion zusammenfassen. + Gdy menu zawiera tylko jedną akcję podrzędną, łączy ją z akcją nadrzędną. diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 95a00e2465..d20ff1ac6e 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -365,7 +365,7 @@ class CfgVehicles { }; }; - class Car_F: Car{}; + class Car_F: Car {}; class Quadbike_01_base_F: Car_F { class ACE_Actions: ACE_Actions { class ACE_MainActions: ACE_MainActions { @@ -643,6 +643,26 @@ class CfgVehicles { }; class ACE_SelfActions {}; }; + + class PlasticCase_01_base_F: ThingX { + class ACE_Actions { + class ACE_MainActions { + displayName = CSTRING(MainAction); + selection = ""; + distance = 2; + condition = "true"; + class ACE_OpenBox { + displayName = CSTRING(OpenBox); + condition = QUOTE(alive _target && {!lockedInventory _target} && {getNumber (configOf _target >> 'disableInventory') == 0}); + statement = QUOTE(_player action [ARR_2(QUOTE(QUOTE(Gear)), _target)]); + showDisabled = 0; + }; + }; + }; + class ACE_SelfActions {}; + }; + + class Slingload_base_F: ReammoBox_F {}; class Slingload_01_Base_F: Slingload_base_F { class ACE_Actions: ACE_Actions { diff --git a/addons/interaction/RscTitles.hpp b/addons/interaction/RscTitles.hpp index e157fd696c..0ac0e18241 100644 --- a/addons/interaction/RscTitles.hpp +++ b/addons/interaction/RscTitles.hpp @@ -57,7 +57,7 @@ class RscACE_SelectAnItem { h = 0.71; colorBackground[] = {0, 0, 0, 0.2}; }; - class header: RscText{ + class header: RscText { idc = 8870; x = X_OFFSET + 0.005; y = 0.005; diff --git a/addons/interaction/XEH_postInit.sqf b/addons/interaction/XEH_postInit.sqf index 1639d79bbf..6d7d96713c 100644 --- a/addons/interaction/XEH_postInit.sqf +++ b/addons/interaction/XEH_postInit.sqf @@ -89,7 +89,7 @@ GVAR(isOpeningDoor) = false; if (!GVAR(interactWithTerrainObjects)) exitWith {}; { if ( - isObjectHidden _x // after hiding on server + isObjectHidden _x // after hiding on server || {_x getVariable [QGVAR(terrainObjectReplaced), false]} // after checking but before hiding || {typeOf _x isNotEqualTo ""} ) then {continue}; diff --git a/addons/interaction/functions/fnc_addPassengersActions.sqf b/addons/interaction/functions/fnc_addPassengersActions.sqf index 93a8364415..32adea9e2c 100644 --- a/addons/interaction/functions/fnc_addPassengersActions.sqf +++ b/addons/interaction/functions/fnc_addPassengersActions.sqf @@ -41,7 +41,7 @@ private _actions = []; format ["%1", _unit], [_unit, true] call EFUNC(common,getName), [_icon, "#FFFFFF"], - { + { //statement (Run on hover) - reset the cache so we will insert actions immedietly when hovering over new unit TRACE_2("Cleaning Cache",_target,vehicle _target); [vehicle _target, QEGVAR(interact_menu,ATCache_ACE_SelfActions)] call EFUNC(common,eraseCache); diff --git a/addons/interaction/functions/fnc_renameGroupUI.sqf b/addons/interaction/functions/fnc_renameGroupUI.sqf index d67aff3322..e9b46d0f83 100644 --- a/addons/interaction/functions/fnc_renameGroupUI.sqf +++ b/addons/interaction/functions/fnc_renameGroupUI.sqf @@ -16,7 +16,7 @@ */ // delay a frame so we don't overlap with interaction-menu as it closes -[{ +[{ params [["_unit", objNull, [objNull]]]; private _display = findDisplay 46 createDisplay QGVAR(groupNameDisplay); @@ -27,7 +27,7 @@ params ["_display", "_exitCode"]; if !(_exitCode isEqualTo 1) exitWith {}; - + private _group = _display getVariable QGVAR(renamedGroup); private _textCtrl = _display displayCtrl 451; private _newName = ctrlText _textCtrl; diff --git a/addons/interaction/functions/script_component.hpp b/addons/interaction/functions/script_component.hpp index ef1c22f146..3cbd1f46d9 100644 --- a/addons/interaction/functions/script_component.hpp +++ b/addons/interaction/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\interaction\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\interaction\script_component.hpp" diff --git a/addons/interaction/groupRename_GUI.hpp b/addons/interaction/groupRename_GUI.hpp index a0b332b505..20684b0e46 100644 --- a/addons/interaction/groupRename_GUI.hpp +++ b/addons/interaction/groupRename_GUI.hpp @@ -14,7 +14,7 @@ class ctrlStaticTitle; class GVAR(groupNameDisplay) { idd = -1; enableSimulation = 1; - + class ControlsBackground { class Title: ctrlStaticTitle { x = QUOTE(safeZoneX + (safeZoneW / 2) - TOTAL_W/2); diff --git a/addons/interaction/script_component.hpp b/addons/interaction/script_component.hpp index 2f20d864d5..9c0ab4c764 100644 --- a/addons/interaction/script_component.hpp +++ b/addons/interaction/script_component.hpp @@ -30,6 +30,6 @@ #define IDC_MOUSEHINT_EXTRA_NAME 2510 #define IDC_MOUSEHINT_EXTRA_TEXT 2520 -#define MACRO_DOOR_REACH_DISTANCE (AGLToASL positionCameraToWorld [0,0,0] vectorDistance ACE_player modelToWorldWorld (ACE_player selectionPosition "Head")) + 2 +#define MACRO_DOOR_REACH_DISTANCE ((AGLToASL positionCameraToWorld [0, 0, 0]) vectorDistance (ACE_player modelToWorldWorld (ACE_player selectionPosition "Head"))) + 2 #define DISABLED_LAMP_DAMAGE 0.95 diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 6fbfb1cbb2..4bda1e8c12 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -325,12 +325,27 @@ Rename Group + グループ名変更 + Renommer le groupe + Переименовать группу + Gruppe umbenennen + Zmień nazwę grupy This group name is already in use. + このグループ名は既に使われています。 + Ce nom de groupe est déjà attribué. + Данное имя группы уже используется. + Dieser Gruppenname ist bereits in Verwendung. + Ta nazwa grupy jest już w użyciu. NEW GROUP NAME: + 新しいグループ名: + NOUVEAU NOM DE GROUPE : + НОВОЕ ИМЯ ГРУППЫ + NEUER GRUPPENNAME: + NOWA NAZWA GRUPY: DANCE! @@ -1219,6 +1234,7 @@ Acoplar %1 Fixer %1 Przyczep %1 + Befestige %1 Detach %1 @@ -1227,6 +1243,7 @@ Desacoplar %1 Retirer %1 Odczep %1 + Löse %1 Enables attach/detach weapon attachment actions for current weapon. @@ -1235,16 +1252,31 @@ Activar acciones de acoplar/desacoplar accesorios para el arma actual. Cette option permet de fixer/retirer des accessoires d'arme à partir du menu d'interaction personnel. Włącza akcje przyczepienia/odczepienia dodatków dla obecnej broni + Aktiviert das Befestigen/Lösen von Waffenausätzen an der aktuellen Waffe. Allow group rename + グループ名変更を許可 + Permettre le renommage de groupe + Разрешить переименование группы + Erlaube das Umbenennen der Gruppe + Zezwól na zmianę nazwy grupy Allows a group leader to rename their group if the name is not already taken. + グループ リーダーによるグループ名の変更を許可します。 + Cette option permet aux chefs de groupe de modifier le nom de leur groupe. + Разрешить лидеру группы её переименование, если имя не занято. + Erlaube Gruppenführer das Umbenennen Ihrer Gruppe, wenn der Name nicht bereits vergeben ist. + Pozwala liderowi grupy na zmianę jej nazwy, jeżeli ta nazwa nie jest już w użyciu. Warning: can cause some objects to collide with others. Внимание: может вызвать отталкивание некоторых объектов друг от друга. + Attention : certains objets peuvent entrer en collision avec d'autres. + 警告: 一部のオブジェクトが干渉する可能性があります。 + Achtung: einige Objekte könnten mit anderen Kollidieren. + Uwaga: niektóre obiekty mogą kolidować z innymi. diff --git a/addons/inventory/functions/script_component.hpp b/addons/inventory/functions/script_component.hpp index 07c5e38d2d..e985011e17 100644 --- a/addons/inventory/functions/script_component.hpp +++ b/addons/inventory/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\inventory\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\inventory\script_component.hpp" diff --git a/addons/inventory/initSettings.sqf b/addons/inventory/initSettings.sqf index 21f8c3efe3..be7ff37b99 100644 --- a/addons/inventory/initSettings.sqf +++ b/addons/inventory/initSettings.sqf @@ -1,7 +1,9 @@ +private _category = [LELSTRING(common,categoryUncategorized), localize "str_a3_gear1"]; + [ QGVAR(inventoryDisplaySize), "LIST", [LSTRING(SettingName), LSTRING(SettingDescription)], - "ACE Uncategorized", + _category, [[0, 1, 2], ["str_medium", "str_large", "str_very_large"], 0], 0 ] call CBA_fnc_addSetting; diff --git a/addons/javelin/RscInGameUI.hpp b/addons/javelin/RscInGameUI.hpp index e34630dde3..4a2a567e22 100644 --- a/addons/javelin/RscInGameUI.hpp +++ b/addons/javelin/RscInGameUI.hpp @@ -19,15 +19,15 @@ class RscInGameUI { y = -10; w = 0; h = 0; - }; - + }; + class GVAR(elements_group): RscControlsGroupNoScrollbars { x = "safeZoneX"; y = "safeZoneY"; w = "safeZoneW"; h = "safeZoneH"; idc = 170; - class Controls { + class Controls { class CA_Distance: RscOpticsValue { idc = 151; sizeEx = "0"; @@ -238,7 +238,7 @@ class RscInGameUI { y = "safeZoneY"; w = "safeZoneW"; h = "safeZoneH"; - enabled = 0; + enabled = 0; show = 0; class Controls { class ACE_TargetingConstrains: RscControlsGroupNoScrollbars { diff --git a/addons/javelin/functions/fnc_onOpticDraw.sqf b/addons/javelin/functions/fnc_onOpticDraw.sqf index 8c3b088dda..8304220fd9 100644 --- a/addons/javelin/functions/fnc_onOpticDraw.sqf +++ b/addons/javelin/functions/fnc_onOpticDraw.sqf @@ -91,11 +91,11 @@ if (GVAR(isLockKeyDown) && {cameraView == "GUNNER"} && {((currentVisionMode ACE_ private _boundsInput = if (_currentTarget isKindOf "CAManBase") then { [_currentTarget,[-0.5,-0.5,-0.25],[0,0,0]]; } else { - [_currentTarget,[-1,-1,-1],_currentTarget selectionPosition "zamerny"]; + [_currentTarget,[-1,-1,-1],_currentTarget selectionPosition "zamerny"]; }; private _bpos = _boundsInput call EFUNC(common,worldToScreenBounds); - + private _lockTime = if (isNull _currentTarget) then {0} else {CBA_missionTime - _lockStartTime}; private _minX = ((linearConversion [1, (__LOCKONTIME - 0.5), _lockTime, 0.5 - 0.075*safeZoneW, (_bpos select 0), true]) + _offsetX) max __ConstraintLeft; private _minY = ((linearConversion [1, (__LOCKONTIME - 0.5), _lockTime, 0.5 - 0.075*safeZoneH, (_bpos select 1), true]) + _offsetY) max __ConstraintTop; @@ -128,7 +128,7 @@ if (isNull _newTarget) then { _currentShooter setVariable ["ace_missileguidance_target", nil, false]; __JavelinIGUITargetingLines ctrlShow false; - + // Disallow fire _fireDisabledEH = [_fireDisabledEH] call FUNC(disableFire); } else { diff --git a/addons/javelin/functions/script_component.hpp b/addons/javelin/functions/script_component.hpp index 21c6597c86..1053e11031 100644 --- a/addons/javelin/functions/script_component.hpp +++ b/addons/javelin/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\javelin\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\javelin\script_component.hpp" diff --git a/addons/kestrel4500/RscTitles.hpp b/addons/kestrel4500/RscTitles.hpp index 276e8c4392..b4a85951be 100644 --- a/addons/kestrel4500/RscTitles.hpp +++ b/addons/kestrel4500/RscTitles.hpp @@ -370,4 +370,4 @@ class RscTitles { }; }; }; -}; \ No newline at end of file +}; diff --git a/addons/kestrel4500/XEH_postInit.sqf b/addons/kestrel4500/XEH_postInit.sqf index 9511041bd2..033dbafbe8 100644 --- a/addons/kestrel4500/XEH_postInit.sqf +++ b/addons/kestrel4500/XEH_postInit.sqf @@ -29,4 +29,4 @@ GVAR(ImpellerState) = 0; GVAR(Kestrel4500) = false; GVAR(Overlay) = false; -[] call FUNC(restoreUserData); \ No newline at end of file +[] call FUNC(restoreUserData); diff --git a/addons/kestrel4500/config.cpp b/addons/kestrel4500/config.cpp index 11bc51f801..5ea15f07ff 100644 --- a/addons/kestrel4500/config.cpp +++ b/addons/kestrel4500/config.cpp @@ -18,4 +18,4 @@ class CfgPatches { #include "CfgSound.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" -#include "RscTitles.hpp" \ No newline at end of file +#include "RscTitles.hpp" diff --git a/addons/killtracker/README.md b/addons/killtracker/README.md index 1bff57c5c0..81b98a6b50 100644 --- a/addons/killtracker/README.md +++ b/addons/killtracker/README.md @@ -1,6 +1,11 @@ ace_killtracker ============ -Tracks deaths/kills and logs to the end mission disaplay. Attemps to log kills from Medical by using `ace_medical_lastDamageSource`. +Tracks deaths/kills and logs to the end mission disaplay. +Show detailed info from player kills from ACE Medical by using `ace_killed` event. Note: Requires config setup in a mission, see `killtracker.inc` - has no effect if mission is not setup correctly. + +## ACEX Conversion - things still using acex prefix +- Global Var `acex_killTracker_outputText` +- `acex_killTracker` classname for `CfgDebriefingSections` diff --git a/addons/killtracker/XEH_postInit.sqf b/addons/killtracker/XEH_postInit.sqf index 63801c1506..19d8066d64 100644 --- a/addons/killtracker/XEH_postInit.sqf +++ b/addons/killtracker/XEH_postInit.sqf @@ -19,8 +19,13 @@ if ((getText (missionconfigfile >> "CfgDebriefingSections" >> QUOTE(XADDON) >> "variable")) != QXGVAR(outputText)) exitWith { TRACE_1("no mission debriefing config",_this); }; +if (!(["ACE_Medical"] call EFUNC(common,isModLoaded))) exitWith { + WARNING("No ACE-Medical"); + XGVAR(outputText) = "No ACE-Medical"; +}; -INFO("Running Kill Tracking"); +private _global = missionNamespace getVariable [QGVAR(globalSync), false]; // Global Sync (e.g. for spectator) +INFO_1("Running Kill Tracking [Global: %1]",_global); // Variables: GVAR(eventsArray) = []; @@ -35,6 +40,9 @@ GVAR(killCount) = 0; GVAR(killCount) = GVAR(killCount) + 1; GVAR(eventsArray) pushBack format [LLSTRING(Kill), _name, _killInfo]; XGVAR(outputText) = (format ["%1 %2
", LLSTRING(TotalKills), GVAR(killCount)]) + (GVAR(eventsArray) joinString "
"); + if (missionNamespace getVariable [QGVAR(globalSync), false]) then { + ACE_player setVariable [QGVAR(output), XGVAR(outputText), true]; + }; }] call CBA_fnc_addEventHandler; [QGVAR(death), { @@ -42,6 +50,9 @@ GVAR(killCount) = 0; TRACE_2("death eh",_name,_killInfo); GVAR(eventsArray) pushBack format [LLSTRING(Killer), _name, _killInfo]; XGVAR(outputText) = (format ["%1 %2
", LLSTRING(TotalKills), GVAR(killCount)]) + (GVAR(eventsArray) joinString "
"); + if (missionNamespace getVariable [QGVAR(globalSync), false]) then { + ACE_player setVariable [QGVAR(output), XGVAR(outputText), true]; + }; }] call CBA_fnc_addEventHandler; ["ace_killed", { diff --git a/addons/killtracker/config.cpp b/addons/killtracker/config.cpp index 8164c08f7c..7cda7110d4 100644 --- a/addons/killtracker/config.cpp +++ b/addons/killtracker/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_medical"}; + requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); authors[]= {"PabstMirror"}; url = ECSTRING(main,URL); diff --git a/addons/killtracker/stringtable.xml b/addons/killtracker/stringtable.xml index fdae7ed67d..0cd0af2d42 100644 --- a/addons/killtracker/stringtable.xml +++ b/addons/killtracker/stringtable.xml @@ -3,6 +3,9 @@ ACE Killed Events + ACE キルトラッカー + ACE Abgeschossene Ereignisse + ACE Licznik Zabójstw Total Kills: @@ -10,6 +13,7 @@ Liczba zabójstw: Toplam Öldürme: 総キル: + Gesammte Abschüsse: Kill: %1 %2 @@ -17,6 +21,7 @@ Zabójstwo: %1 %2 Öldürülen: %1 %2 キル: %1 %2 + Abschuss: %1 %2 Killer: %1 %2 @@ -24,6 +29,7 @@ Zabójca: %1 %2 Öldüren: %1 %2 キラー: %1 %2 + Täter: %1 %2 Vehicle: %1 @@ -31,6 +37,7 @@ Pojazd: %1 Araç :%1 車両: %1 + Fahrzeuge %! Friendly Fire diff --git a/addons/laser/config.cpp b/addons/laser/config.cpp index fb6ae5e638..2d59a177de 100644 --- a/addons/laser/config.cpp +++ b/addons/laser/config.cpp @@ -13,7 +13,7 @@ class CfgPatches { }; }; -#include "ACE_Settings.hpp" +#include "ACE_Settings.hpp" #include "CfgEventhandlers.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" diff --git a/addons/laser/functions/fnc_seekerFindLaserSpot.sqf b/addons/laser/functions/fnc_seekerFindLaserSpot.sqf index b902882ed9..089c25e0a0 100644 --- a/addons/laser/functions/fnc_seekerFindLaserSpot.sqf +++ b/addons/laser/functions/fnc_seekerFindLaserSpot.sqf @@ -154,7 +154,7 @@ if ((count _spots) > 0) then { } forEach _buckets; private _finalBucket = _finalBuckets select _largestIndex; - private _ownersHash = [] call CBA_fnc_hashCreate; // key is set as object, cant use engine hash map + private _ownersHash = createHashMap; TRACE_2("",_finalBucket,_finalBuckets); @@ -164,12 +164,8 @@ if ((count _spots) > 0) then { { _x params ["_xPos", "_owner"]; _finalPos = _finalPos vectorAdd _xPos; - if ([_ownersHash, _owner] call CBA_fnc_hashHasKey) then { - private _count = [_ownersHash, _owner] call CBA_fnc_hashGet; - [_ownersHash, _owner, _count + 1] call CBA_fnc_hashSet; - } else { - [_ownersHash, _owner, 1] call CBA_fnc_hashSet; - }; + private _count = _ownersHash getOrDefault [hashValue _owner, 0]; + _ownersHash set [hashValue _owner, _count + 1]; } forEach _finalBucket; _finalPos = _finalPos vectorMultiply (1 / (count _finalBucket)); diff --git a/addons/laser/functions/script_component.hpp b/addons/laser/functions/script_component.hpp index 98d00342c0..e092c63551 100644 --- a/addons/laser/functions/script_component.hpp +++ b/addons/laser/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\laser\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\laser\script_component.hpp" diff --git a/addons/laser/initSettings.sqf b/addons/laser/initSettings.sqf index 519e04e6b1..128e56d3f9 100644 --- a/addons/laser/initSettings.sqf +++ b/addons/laser/initSettings.sqf @@ -1,7 +1,9 @@ +private _category = [LELSTRING(common,categoryUncategorized), localize "str_a3_itemtype_laser"]; + [ QGVAR(dispersionCount), "SLIDER", LSTRING(dispersionCount_displayName), - "ACE Uncategorized", + _category, [0, 5, 2, -1], 1 ] call CBA_fnc_addSetting; diff --git a/addons/laserpointer/functions/script_component.hpp b/addons/laserpointer/functions/script_component.hpp index 727c32539f..743bd494fb 100644 --- a/addons/laserpointer/functions/script_component.hpp +++ b/addons/laserpointer/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\laserpointer\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\laserpointer\script_component.hpp" diff --git a/addons/logistics_rope/CfgWeapons.hpp b/addons/logistics_rope/CfgWeapons.hpp index 1b492be2a2..c5f1b384a2 100644 --- a/addons/logistics_rope/CfgWeapons.hpp +++ b/addons/logistics_rope/CfgWeapons.hpp @@ -4,7 +4,7 @@ class CfgWeapons { class ACE_ropeBase: ACE_ItemCore { scope = 1; picture = QPATHTOF(data\m_rope_ca); - model = "\A3\Structures_F_Heli\Items\Tools\Rope_01_F.p3d"; + // model = "\A3\Structures_F_Heli\Items\Tools\Rope_01_F.p3d"; // model is Locked to Helicopter DLC descriptionShort = CSTRING(descriptionShort); }; @@ -64,4 +64,4 @@ class CfgWeapons { mass = 108; }; }; -}; \ No newline at end of file +}; diff --git a/addons/logistics_rope/stringtable.xml b/addons/logistics_rope/stringtable.xml index 3fa99dd722..b91b7ec1c3 100644 --- a/addons/logistics_rope/stringtable.xml +++ b/addons/logistics_rope/stringtable.xml @@ -3,6 +3,11 @@ A twisted braid of fibers. Usually used for rappelling or towing. + 組み紐されたロープ。ラペリングやけん引に使用されます。 + Une corde en fibres torsadées. Généralement utilisée pour la descente en rappel ou le remorquage. + Витой канат. ООбычно используется для спуска или буксирования. + Ein verdrehtes Geflecht aus Fasern. Wird normalerweise zum Abseilen oder Abschleppen verwendet. + Lina skręcona z włókien. Zwykle używana do zjazdów lub holowania. Rope 3.2 meters @@ -15,6 +20,7 @@ Lano 3.2 metrů 3.2 metre halat Cuerda de 3.2 metros + ロープ (3.2 メートル) Rope 6.2 meters @@ -27,6 +33,7 @@ Lano 6.2 metrů 6.2 metre halat Cuerda de 6.2 metros + ロープ (6.2 メートル) Rope 12.2 meters diff --git a/addons/logistics_uavbattery/functions/script_component.hpp b/addons/logistics_uavbattery/functions/script_component.hpp index 56cb8114f5..fcb2e76f39 100644 --- a/addons/logistics_uavbattery/functions/script_component.hpp +++ b/addons/logistics_uavbattery/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\logistics_uavbattery\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\logistics_uavbattery\script_component.hpp" diff --git a/addons/logistics_wirecutter/functions/script_component.hpp b/addons/logistics_wirecutter/functions/script_component.hpp index 4a5c48048c..9235a6c894 100644 --- a/addons/logistics_wirecutter/functions/script_component.hpp +++ b/addons/logistics_wirecutter/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\logistics_wirecutter\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\logistics_wirecutter\script_component.hpp" diff --git a/addons/magazinerepack/functions/script_component.hpp b/addons/magazinerepack/functions/script_component.hpp index d43593994d..36b5fd7190 100644 --- a/addons/magazinerepack/functions/script_component.hpp +++ b/addons/magazinerepack/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\magazinerepack\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\magazinerepack\script_component.hpp" diff --git a/addons/magazinerepack/stringtable.xml b/addons/magazinerepack/stringtable.xml index 106c44c23d..b63fd2cde2 100644 --- a/addons/magazinerepack/stringtable.xml +++ b/addons/magazinerepack/stringtable.xml @@ -168,9 +168,19 @@ Repack Loaded Magazines + 装填済み弾倉を詰め替え + Remplir le chargeur engagé + Перепаковать загруженные магазины + Geladene Magazine umpacken + Przepakuj załadowane magazynki Repacking magazines, weapon unloaded + 弾倉を詰め替えし、<br />非装填状態です + Remplissage des chargeurs, arme déchargée. + Перепаковка магазинов, оружие разряжено + Magazin umgepackt, Waffe entladen + Przepakowywanie magazynków, broń rozładowana diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index aa49333464..cc02c06b94 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -43,9 +43,12 @@ #define ACEX_PREFIX acex #define XADDON DOUBLES(ACEX_PREFIX,COMPONENT) #define XGVAR(var) DOUBLES(XADDON,var) +#define EXGVAR(var1,var2) TRIPLES(ACEX_PREFIX,var1,var2) #define QXGVAR(var) QUOTE(XGVAR(var)) +#define QEXGVAR(var1,var2) QUOTE(EXGVAR(var1,var2)) #define QQXGVAR(var) QUOTE(QXGVAR(var)) -#define ACEX_PREP(func) PREP(func); OBSOLETE_SYS(TRIPLES(XADDON,fnc,func),DFUNC(func)) +#define QQEXGVAR(var1,var2) QUOTE(QEXGVAR(var1,var2)) +#define ACEX_PREP(func) PREP(func); TRIPLES(XADDON,fnc,func) = DFUNC(func) #define MACRO_ADDWEAPON(WEAPON,COUNT) class _xx_##WEAPON { \ @@ -144,4 +147,6 @@ #define ZEUS_ACTION_CONDITION ([_target, {QUOTE(QUOTE(ADDON)) in curatorAddons _this}, missionNamespace, QUOTE(QGVAR(zeusCheck)), 1E11, 'ace_interactMenuClosed'] call EFUNC(common,cachedCall)) +#define SUBSKILLS ["aimingAccuracy", "aimingShake", "aimingSpeed", "spotDistance", "spotTime", "courage", "reloadSpeed", "commanding", "general"] + #include "script_debug.hpp" diff --git a/addons/main/script_version.hpp b/addons/main/script_version.hpp index 861a028d34..c4db7da30e 100644 --- a/addons/main/script_version.hpp +++ b/addons/main/script_version.hpp @@ -1,4 +1,4 @@ #define MAJOR 3 -#define MINOR 13 -#define PATCHLVL 6 -#define BUILD 60 +#define MINOR 14 +#define PATCHLVL 0 +#define BUILD 63 diff --git a/addons/map/CfgAmmo.hpp b/addons/map/CfgAmmo.hpp index aca4042b4f..d54ab0a2c9 100644 --- a/addons/map/CfgAmmo.hpp +++ b/addons/map/CfgAmmo.hpp @@ -1,7 +1,7 @@ class CfgAmmo { - + class Grenade; - + class ACE_FlashlightProxy_White: Grenade { effectsSmoke = "ACE_FlashlightEffect_White"; explosionTime = 0.01; @@ -12,7 +12,7 @@ class CfgAmmo { simulation = "shotSmokeX"; smokeColor[] = {1,1,1,1}; timeToLive = 1e10; - + impactArmor[] = {}; impactConcrete[] = {}; impactDefault[] = {}; @@ -30,24 +30,24 @@ class CfgAmmo { impactWater[] = {}; impactWood[] = {}; }; - + class ACE_FlashlightProxy_Red: ACE_FlashlightProxy_White { effectsSmoke = "ACE_FlashlightEffect_Red"; }; - + class ACE_FlashlightProxy_Blue: ACE_FlashlightProxy_White { effectsSmoke = "ACE_FlashlightEffect_Blue"; }; - + class ACE_FlashlightProxy_Green: ACE_FlashlightProxy_White { effectsSmoke = "ACE_FlashlightEffect_Green"; }; - + class ACE_FlashlightProxy_Yellow: ACE_FlashlightProxy_White { effectsSmoke = "ACE_FlashlightEffect_Yellow"; }; - + class ACE_FlashlightProxy_Orange: ACE_FlashlightProxy_White { effectsSmoke = "ACE_FlashlightEffect_Orange"; }; -}; \ No newline at end of file +}; diff --git a/addons/map/CfgMarkers.hpp b/addons/map/CfgMarkers.hpp index 3dd6463891..303194de00 100644 --- a/addons/map/CfgMarkers.hpp +++ b/addons/map/CfgMarkers.hpp @@ -4,7 +4,7 @@ class CfgMarkers { // Reenable NATO symbols ... class b_unknown: Flag {scope = 2;}; - + // disable all civy markers (harbor etc.) class c_unknown: b_unknown {scope = 1;}; diff --git a/addons/map/Effects.hpp b/addons/map/Effects.hpp index 5258b225aa..dbd358eaba 100644 --- a/addons/map/Effects.hpp +++ b/addons/map/Effects.hpp @@ -40,4 +40,4 @@ class ACE_FlashlightEffect_Orange { simulation = "light"; type = "ACE_FlashlightLight_Orange"; }; -}; \ No newline at end of file +}; diff --git a/addons/map/XEH_postInitServer.sqf b/addons/map/XEH_postInitServer.sqf index dc0c7f991e..80cbb73d54 100644 --- a/addons/map/XEH_postInitServer.sqf +++ b/addons/map/XEH_postInitServer.sqf @@ -6,7 +6,7 @@ addMissionEventHandler ["HandleDisconnect",{ if (!GVAR(mapGlow)) exitWith {}; private _unitLight = _disconnectedPlayer getVariable [QGVAR(flashlight), ["", objNull]]; _unitLight params ["", "_glow"]; - + if ((!isNull _disconnectedPlayer) && {!isNull _glow}) then { detach _glow; deleteVehicle _glow; diff --git a/addons/map/initSettings.sqf b/addons/map/initSettings.sqf index 4da66c22eb..fa248bf736 100644 --- a/addons/map/initSettings.sqf +++ b/addons/map/initSettings.sqf @@ -68,7 +68,7 @@ true, { [QGVAR(BFT_Enabled), _this] call EFUNC(common,cbaSettings_settingChanged); - + if (GVAR(BFT_Enabled) && {isNil QGVAR(BFT_markers)}) then { GVAR(BFT_markers) = []; [FUNC(blueForceTrackingUpdate), GVAR(BFT_Interval), []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/map_gestures/initSettings.sqf b/addons/map_gestures/initSettings.sqf index 9b4b2a7fba..2d9bc6b695 100644 --- a/addons/map_gestures/initSettings.sqf +++ b/addons/map_gestures/initSettings.sqf @@ -1,7 +1,10 @@ +private _category = LLSTRING(mapGestures_category); +private _categoryColors = [_category, format ["| %1 |", LELSTRING(common,subcategory_colors)]]; + [ QGVAR(enabled), "CHECKBOX", [LSTRING(enabled_displayName), LSTRING(enabled_description)], - LSTRING(mapGestures_category), + _category, true, true ] call CBA_fnc_addSetting; @@ -9,7 +12,7 @@ [ QGVAR(maxRange), "SLIDER", [LSTRING(maxRange_displayName), LSTRING(maxRange_description)], - LSTRING(mapGestures_category), + _category, [0,50,7,1], true ] call CBA_fnc_addSetting; @@ -17,7 +20,7 @@ [ QGVAR(maxRangeCamera), "SLIDER", [LSTRING(maxRangeCamera_displayName), LSTRING(maxRangeCamera_description)], - LSTRING(mapGestures_category), + _category, [0,50,14,1], true ] call CBA_fnc_addSetting; @@ -25,21 +28,21 @@ [ QGVAR(allowSpectator), "CHECKBOX", [LSTRING(allowSpectator_displayName), LSTRING(allowSpectator_description)], - LSTRING(mapGestures_category), + _category, true ] call CBA_fnc_addSetting; [ QGVAR(allowCurator), "CHECKBOX", [LSTRING(allowCurator_displayName), LSTRING(allowCurator_description)], - LSTRING(mapGestures_category), + _category, true ] call CBA_fnc_addSetting; [ QGVAR(briefingMode), "LIST", [LSTRING(briefingMode_displayName), LSTRING(briefingMode_description)], - LSTRING(mapGestures_category), + _category, [[0, 1, 2, 3, 4], [LSTRING(briefingMode_All), LSTRING(briefingMode_Group), LSTRING(briefingMode_Side), LSTRING(briefingMode_Proximity), LSTRING(briefingMode_Disabled)], 0] ] call CBA_fnc_addSetting; @@ -47,7 +50,7 @@ QGVAR(onlyShowFriendlys), "CHECKBOX", [LSTRING(onlyShowFriendlys_displayName), LSTRING(onlyShowFriendlys_description)], - LSTRING(mapGestures_category), + _category, false, 1 ] call CBA_fnc_addSetting; @@ -55,7 +58,7 @@ [ QGVAR(interval), "SLIDER", [LSTRING(interval_displayName), LSTRING(interval_description)], - LSTRING(mapGestures_category), + _category, [0,1,0.03,2], true ] call CBA_fnc_addSetting; @@ -63,7 +66,7 @@ [ QGVAR(nameTextColor), "COLOR", [LSTRING(nameTextColor_displayName), LSTRING(nameTextColor_description)], - [LSTRING(mapGestures_category), LSTRING(mapGestures_subcategory_colors)], + _categoryColors, [0.2,0.2,0.2,0.3], false ] call CBA_fnc_addSetting; @@ -71,7 +74,7 @@ [ QGVAR(defaultLeadColor), "COLOR", [LSTRING(defaultLeadColor_displayName), LSTRING(defaultLeadColor_description)], - [LSTRING(mapGestures_category), LSTRING(mapGestures_subcategory_colors)], + _categoryColors, [1,0.88,0,0.95], false ] call CBA_fnc_addSetting; @@ -79,7 +82,7 @@ [ QGVAR(defaultColor), "COLOR", [LSTRING(defaultColor_displayName), LSTRING(defaultColor_description)], - [LSTRING(mapGestures_category), LSTRING(mapGestures_subcategory_colors)], + _categoryColors, [1,0.88,0,0.7], false ] call CBA_fnc_addSetting; diff --git a/addons/map_gestures/stringtable.xml b/addons/map_gestures/stringtable.xml index 0613ac27bb..2a73b8be87 100644 --- a/addons/map_gestures/stringtable.xml +++ b/addons/map_gestures/stringtable.xml @@ -272,6 +272,7 @@ Afficher uniquement le pointage des alliés 友軍ジェスチャーのみ表示 Mostrar sólo gestos de aliados + Nur Gesten befreundeter Einheiten zeigen Shows only Gestures from Units that are from the same side or a Friendly side. @@ -280,6 +281,7 @@ 友軍ユニットのみからジェスチャーを表示します。 Muestra únicamente gestos de las unidades que son del mismo bando o de un bando aliado Pokazuj tylko Gesty od jednostek z tej samej lub sojuszniczej strony + Nur Gesten von Einheiten der selben oder einer verbündeten Seite zeigen. Max range Camera @@ -288,6 +290,7 @@ カメラ最大範囲 Máximo alcance de cámara Maksymalny zasięg kamery + Maximale Kamerareichweite Max range between a Camera and players to show the map gesture indicator @@ -296,6 +299,7 @@ プレイヤーが行うマップ ジェスチャーをカメラから確認できる最大範囲を設定します。 Máxima distancia entre una cámara y los jugadores para mostrar el indicador de gestos en mapa Maksymalny zasięg pomiędzy kamerą a graczami do pokazania gestów na mapie + Maximale Reichweite, in der eine Kamera das Kartenzeichen der Spieler zeigt Allow Spectator @@ -304,6 +308,7 @@ スペクテイターに許可 Permitir espectador Zezwól na Obserwatora + Erlaube Zuschauer Allows Spectator to See Map Gestures @@ -312,6 +317,7 @@ スペクテイターからマップ ジェスチャーを表示できるようにします。 Permitir al espectador ver los gestos de mapa Zezwól Obserwatorowi widzieć Gesty na mapie + Erlaube, dass Zuschauer das Kartenzeichen sehen können Allow Curator @@ -320,6 +326,7 @@ キュレーターに許可 Permitir Curador Zezwól na Zeusa + Erlaube Zeus Allows Curator to See Map Gestures @@ -328,6 +335,7 @@ キュレーターからマップ ジェスチャーを表示できるようにします。 Permitir al Curador ver los gestos de mapa Zezwól Zeusowi widzieć gesty na mapie + Erlaube, dass Zeus das Kartenzeichen sehen kann Briefing Mode @@ -336,6 +344,7 @@ ブリーフィング モード Modo de briefing Tryb Odprawy + Briefing-Modus What player can see what @@ -344,6 +353,7 @@ プレイヤーが見ることができる対象を決定します。 Qué puede ver cada jugador Co mogą widzieć gracze + Welcher Spieler kann was sehen Disabled @@ -352,6 +362,7 @@ 無効化 Deshabilitado Zablokowany + Deaktiviert Group @@ -383,6 +394,8 @@ Proximité 付近のみ Proximidad + Umgebung + Tylko w pobliżu All @@ -427,17 +440,5 @@ ACE 地圖指示器 ACE Harita Hareketleri - - Colors - Barvy - Couleurs - Farben - Colori - Kolory - Cores - Цвета - Colores - - diff --git a/addons/maptools/RscDisplayMainMap.hpp b/addons/maptools/RscDisplayMainMap.hpp index db54ab6bf8..94a5d2a8d4 100644 --- a/addons/maptools/RscDisplayMainMap.hpp +++ b/addons/maptools/RscDisplayMainMap.hpp @@ -51,7 +51,7 @@ class RscDisplayMainMap { shadow = 0; sizeEx = 0.18; }; - class altitude: RscText{ + class altitude: RscText { idc = 913591; x = 0.5; y = 0; @@ -66,7 +66,7 @@ class RscDisplayMainMap { shadow = 0; sizeEx = 0.18; }; - class coordinates: RscText{ + class coordinates: RscText { idc = 913592; x = 0; y = 0.225; diff --git a/addons/markers/functions/fnc_removeTimestamp.sqf b/addons/markers/functions/fnc_removeTimestamp.sqf index 9f9d6ab438..2d0f3d86c7 100644 --- a/addons/markers/functions/fnc_removeTimestamp.sqf +++ b/addons/markers/functions/fnc_removeTimestamp.sqf @@ -50,14 +50,14 @@ while {_keepCheckingDigits} do { _index = _index + 3; }; case ("]"): { - _keepCheckingDigits = false; + _keepCheckingDigits = false; }; case (" "): { _keepCheckingDigits = false; if (!(_string select [_index+3, 3] in ["am]", "pm]"])) then {_validTimestamp = false; }; }; default { - _keepCheckingDigits = false; + _keepCheckingDigits = false; _validTimestamp = false; }; }; diff --git a/addons/markers/stringtable.xml b/addons/markers/stringtable.xml index fed0c0c96f..f39f8c3f76 100644 --- a/addons/markers/stringtable.xml +++ b/addons/markers/stringtable.xml @@ -8,6 +8,7 @@ Масштаб: %1 スケール: %1 Skala: %1 + Skalierung: %1 Direction: %1° @@ -32,6 +33,7 @@ Clic droit pour réinitialiser 右クリックでリセット Naciśnij PPM żeby zresetować + Rechte Maustaste zum Zurücksetzen Markers @@ -181,6 +183,7 @@ タイムスタンプ許可 Permitir marcas de tiempo Zezwól na znaczniki czasu + Erlaube Zeitstempel Whether to allow timestamps to be automatically applied to markers @@ -189,6 +192,7 @@ マーカーへ自動的にタイムスタンプを付与するかどうかを設定できます。 Permitir que las marcas de tiempo sean automáticamente aplicadas a los marcadores Zezwól na automatyczne stosowanie znaczników czasu do markerów + Ob Zeitstempel automatisch auf Maker angewendet werden sollen. Timestamp @@ -197,6 +201,7 @@ タイムスタンプ Marca de tiempo Znacznik czasu + Zeitstempel Watch Required @@ -205,6 +210,7 @@ 時計の要求 Reloj requerido Wymagany zegarek + Uhr benötigt Timestamp Format @@ -213,6 +219,7 @@ タイムスタンプ形式 Formato de marca de tiempo Format znacznika czasu + Format des Zeitstempels Changes the timestamp format @@ -221,6 +228,7 @@ タイムスタンプの形式を変更します Cambia el formato de marca de tiempo Zmienia format znacznika czasu + Zeitstempel-Format anpassen "HH" - Hour @@ -229,6 +237,7 @@ "HH" - 時間 "HH" - Hora "HH" - Godziny + "HH" - Stunden "MM" - Minute @@ -237,6 +246,7 @@ "MM" - 分 "MM" - Minuto "MM" - Minuty + "MM" - Minuten "SS" - Seconds @@ -245,6 +255,7 @@ "SS" - 秒 "SS" - Segundos "SS" - Sekundy + "SS" - Sekunden "MM" - Milliseconds @@ -253,6 +264,7 @@ "MM" - ミリ秒 "MM" - Milisegundos "MM" - Milisekundy + "MS" - Milisekunden Timestamp Hour Format @@ -261,6 +273,7 @@ タイムスタンプ時刻形式 Formato de hora de marca de tiempo Format Godzinnych znaczników czasu + Zeitstempel-Stundenformat 24-Hour Clock @@ -269,6 +282,7 @@ 24 時間表記 Reloj 24-Horas Zegar 24-godzinny + 24-Stunden 12-Hour Clock @@ -277,6 +291,7 @@ 12 時間表記 Reloj 12-Horas Zegar 12-godzinny + 12-Stunden Changes timestamp to use either 24-hour or 12-hour clock format @@ -285,6 +300,7 @@ タイムスタンプの時刻を 24 時間か 12 時間表記のどちらかに変更できます。 Cambia que la marca de tiempo sea en formato de reloj 24-horas o 12-horas Zmienia znacznik czasu tak, aby używał formatu 24-godzinnego lub 12-godzinnego + Ändert den Zeitstempel, um entweder das 24-Stunden- oder das 12-Stunden-Format zu verwenden diff --git a/addons/maverick/ACE_GuidanceConfig.hpp b/addons/maverick/ACE_GuidanceConfig.hpp index 51b4380f0e..4360bd4a87 100644 --- a/addons/maverick/ACE_GuidanceConfig.hpp +++ b/addons/maverick/ACE_GuidanceConfig.hpp @@ -1,5 +1,5 @@ class EGVAR(missileguidance,AttackProfiles) { - class maverick { + class maverick { name = "LOAL-DIR"; nameLocked = "LOBL-DIR"; functionName = QEFUNC(missileguidance,attackProfile_LIN); diff --git a/addons/maverick/CfgAmmo.hpp b/addons/maverick/CfgAmmo.hpp index 6a4b072b6c..0544291c0e 100644 --- a/addons/maverick/CfgAmmo.hpp +++ b/addons/maverick/CfgAmmo.hpp @@ -44,7 +44,7 @@ class CfgAmmo { }; }; - class GVAR(L) : Missile_AGM_02_F { + class GVAR(L): Missile_AGM_02_F { author = "xrufix"; autoSeekTarget = 0; irLock = 0; diff --git a/addons/maverick/CfgMagazines.hpp b/addons/maverick/CfgMagazines.hpp index a4339e8d02..4c7c7af022 100644 --- a/addons/maverick/CfgMagazines.hpp +++ b/addons/maverick/CfgMagazines.hpp @@ -1,15 +1,15 @@ class CfgMagazines { class CA_Magazine; class VehicleMagazine: CA_Magazine {}; - + class magazine_Missile_AGM_02_x1: VehicleMagazine {}; class PylonMissile_Missile_AGM_02_x1: magazine_Missile_AGM_02_x1 {}; class PylonMissile_Missile_AGM_02_x2: magazine_Missile_AGM_02_x1 {}; - + class 6Rnd_Missile_AGM_02_F: VehicleMagazine {}; class PylonRack_1Rnd_Missile_AGM_02_F: 6Rnd_Missile_AGM_02_F {}; - class PylonRack_3Rnd_Missile_AGM_02_F: PylonRack_1Rnd_Missile_AGM_02_F{}; - + class PylonRack_3Rnd_Missile_AGM_02_F: PylonRack_1Rnd_Missile_AGM_02_F {}; + class PylonRack_Missile_AGM_02_x1: magazine_Missile_AGM_02_x1 {}; class PylonRack_Missile_AGM_02_x2: magazine_Missile_AGM_02_x1 {}; @@ -32,44 +32,44 @@ class CfgMagazines { pylonWeapon = QGVAR(D_Launcher); }; - class GVAR(G_magazine_x1) : magazine_Missile_AGM_02_x1 { + class GVAR(G_magazine_x1): magazine_Missile_AGM_02_x1 { ammo = QGVAR(G); author = "Brandon (TCVM)"; displayName = CSTRING(g_mag_x1); }; - class GVAR(G_pylonmissile_x1) : PylonMissile_Missile_AGM_02_x1 { + class GVAR(G_pylonmissile_x1): PylonMissile_Missile_AGM_02_x1 { ammo = QGVAR(G); author = "Brandon (TCVM)"; displayName = CSTRING(g_mag_x1); pylonWeapon = QGVAR(G_Launcher); }; - class GVAR(G_pylonmissile_x2) : PylonMissile_Missile_AGM_02_x2 { + class GVAR(G_pylonmissile_x2): PylonMissile_Missile_AGM_02_x2 { ammo = QGVAR(G); author = "Brandon (TCVM)"; displayName = CSTRING(g_mag_x2); pylonWeapon = QGVAR(G_Launcher); }; - class GVAR(G_pylonRack_1Rnd) : PylonRack_1Rnd_Missile_AGM_02_F { + class GVAR(G_pylonRack_1Rnd): PylonRack_1Rnd_Missile_AGM_02_F { ammo = QGVAR(G); author = "Brandon (TCVM)"; displayName = CSTRING(g_mag_x1); pylonWeapon = QGVAR(G_Launcher); }; - class GVAR(G_PylonRack_3Rnd) : PylonRack_3Rnd_Missile_AGM_02_F { + class GVAR(G_PylonRack_3Rnd): PylonRack_3Rnd_Missile_AGM_02_F { ammo = QGVAR(G); author = "Brandon (TCVM)"; displayName = CSTRING(g_mag_x3); pylonWeapon = QGVAR(G_Launcher); }; - class GVAR(G_PylonRack_x1) : PylonRack_Missile_AGM_02_x1 { + class GVAR(G_PylonRack_x1): PylonRack_Missile_AGM_02_x1 { ammo = QGVAR(G); author = "Brandon (TCVM)"; displayName = CSTRING(g_mag_x1); pylonWeapon = QGVAR(G_Launcher); }; - class GVAR(G_PylonRack_x2) : PylonRack_Missile_AGM_02_x2 { + class GVAR(G_PylonRack_x2): PylonRack_Missile_AGM_02_x2 { ammo = QGVAR(G); author = "Brandon (TCVM)"; displayName = CSTRING(g_mag_x2); @@ -77,7 +77,7 @@ class CfgMagazines { }; // Laser Mavericks - class GVAR(L_magazine_x1) : magazine_Missile_AGM_02_x1 { + class GVAR(L_magazine_x1): magazine_Missile_AGM_02_x1 { ammo = QGVAR(L); author = "xrufix"; descriptionShort = CSTRING(L_MAG_DESCR); @@ -118,7 +118,7 @@ class CfgMagazines { displayNameShort = CSTRING(L_MAG_short); pylonWeapon = QGVAR(L_Launcher_Plane); }; - + class GVAR(L_PylonRack_x1): PylonRack_Missile_AGM_02_x1 { ammo = QGVAR(L); author = "xrufix"; diff --git a/addons/maverick/CfgWeapons.hpp b/addons/maverick/CfgWeapons.hpp index 0474d9b655..1cacc1dc91 100644 --- a/addons/maverick/CfgWeapons.hpp +++ b/addons/maverick/CfgWeapons.hpp @@ -1,7 +1,7 @@ class CfgWeapons { class LauncherCore; class RocketPods: LauncherCore {}; - class weapon_AGM_65Launcher: RocketPods{}; + class weapon_AGM_65Launcher: RocketPods {}; class MissileLauncher: LauncherCore {}; class Missile_AGM_02_Plane_CAS_01_F: MissileLauncher {}; @@ -22,7 +22,7 @@ class CfgWeapons { weaponLockSystem = 2; }; - class GVAR(L_Launcher) : weapon_AGM_65Launcher { + class GVAR(L_Launcher): weapon_AGM_65Launcher { author = "xrufix"; displayname = CSTRING(L); magazines[] = { @@ -74,7 +74,7 @@ class CfgWeapons { }; weaponLockDelay = 0.1; weaponLockSystem = 0; - + EGVAR(laser,canSelect) = 1; // can ace_laser lock (allows switching laser code) EGVAR(laser,showHud) = 1; // show attack profile / lock on hud GVAR(enabled) = 1; diff --git a/addons/maverick/stringtable.xml b/addons/maverick/stringtable.xml index 6fe4a3c506..0a7ea736d5 100644 --- a/addons/maverick/stringtable.xml +++ b/addons/maverick/stringtable.xml @@ -73,6 +73,7 @@ MAVL MAVL MAVL + MAVL Kh-25ML, Laser Guided Air-to-Ground-Missile diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp index a1322f48e5..81984dab73 100644 --- a/addons/medical/ACE_Settings.hpp +++ b/addons/medical/ACE_Settings.hpp @@ -10,7 +10,7 @@ class ACE_Settings { }; */ class GVAR(enableVehicleCrashes) { - movedToSQF = 1; + movedToSQF = 1; }; class GVAR(spontaneousWakeUpChance) { movedToSQF = 1; diff --git a/addons/medical/functions/fnc_addDamageToUnit.sqf b/addons/medical/functions/fnc_addDamageToUnit.sqf index f571d27726..e7d25536ae 100644 --- a/addons/medical/functions/fnc_addDamageToUnit.sqf +++ b/addons/medical/functions/fnc_addDamageToUnit.sqf @@ -9,7 +9,8 @@ * 2: Body part ("Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg") * 3: Projectile Type * 4: Source - * 5: Non-directional damage source array (Optional) + * 5: Non-directional damage source array (default: []) + * 6: Override Invulnerability (default: true) * * Return Value: * Successful @@ -22,8 +23,16 @@ */ // #define DEBUG_TESTRESULTS -params [["_unit", objNull, [objNull]], ["_damageToAdd", -1, [0]], ["_bodyPart", "", [""]], ["_typeOfDamage", "", [""]], ["_instigator", objNull, [objNull]], ["_damageSelectionArray", [], [[]]]]; -TRACE_6("addDamageToUnit",_unit,_damageToAdd,_bodyPart,_typeOfDamage,_instigator,_damageSelectionArray); +params [ + ["_unit", objNull, [objNull]], + ["_damageToAdd", -1, [0]], + ["_bodyPart", "", [""]], + ["_typeOfDamage", "", [""]], + ["_instigator", objNull, [objNull]], + ["_damageSelectionArray", [], [[]]], + ["_overrideInvuln", true, [true]] +]; +TRACE_7("addDamageToUnit",_unit,_damageToAdd,_bodyPart,_typeOfDamage,_instigator,_damageSelectionArray,_overrideInvuln); _bodyPart = toLower _bodyPart; private _bodyPartIndex = ALL_BODY_PARTS find _bodyPart; @@ -32,6 +41,10 @@ if (_bodyPartIndex < 0) exitWith {ERROR_1("addDamageToUnit - bad selection %1", if (isNull _unit || {!local _unit} || {!alive _unit}) exitWith {ERROR_2("addDamageToUnit - badUnit %1 [local %2]", _this, local _unit); false}; if (_damageToAdd < 0) exitWith {ERROR_1("addDamageToUnit - bad damage %1", _this); false}; +if (!_overrideInvuln && {!((isDamageAllowed _unit) && {_unit getVariable [QEGVAR(medical,allowDamage), true]})}) exitWith { + ERROR_1("addDamageToUnit - unit invulnerable %1", _this); false +}; + // Extension is case sensitive and expects this format (different from ALL_BODY_PARTS) _bodyPart = ["Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg"] select _bodyPartIndex; diff --git a/addons/medical/functions/script_component.hpp b/addons/medical/functions/script_component.hpp index ea579c04a5..140463d68d 100644 --- a/addons/medical/functions/script_component.hpp +++ b/addons/medical/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\medical\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\medical\script_component.hpp" diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 6c61ce2ee4..55424b618a 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -204,6 +204,7 @@ Las férulas sanan, pero no pueden trotar Шины вылечивают, но не дают бежать трусцой Szyny leczą, ale uniemożliwiają trucht + Schiene heilt, aber verhindert Sprinten Fracture Chance @@ -215,6 +216,7 @@ Szansa na złamanie Kırılma Şansı Probabilidad de fractura + Wahrscheinlichkeit einer Fraktur The probability of a fracture causing wound resulting in a fracture. @@ -226,6 +228,7 @@ Prawdopodobieństwo złamania kości w wyniku rany mogącej powodować złamania. Yaraya neden olan bir kırığın kırılma olasılığı. La probabilidad de que una herida que pueda provocar una fractura, provoque una fractura. + Die Wahrscheinlichkeit, dass eine Wunde, die eine Fraktur verursachen würde, tatsächlich zu einer Fraktur führt. Enabled for diff --git a/addons/medical_ai/initSettings.sqf b/addons/medical_ai/initSettings.sqf index 7d583382d7..c01492355a 100644 --- a/addons/medical_ai/initSettings.sqf +++ b/addons/medical_ai/initSettings.sqf @@ -1,5 +1,3 @@ -// CBA Settings [ADDON: ace_medical_ai]: - private _categoryArray = [ELSTRING(medical,Category), "STR_TEAM_SWITCH_AI"]; [ diff --git a/addons/medical_damage/CfgAmmo.hpp b/addons/medical_damage/CfgAmmo.hpp index 89dfb486bb..7ef0834161 100644 --- a/addons/medical_damage/CfgAmmo.hpp +++ b/addons/medical_damage/CfgAmmo.hpp @@ -71,7 +71,7 @@ class CfgAmmo { class BombDemine_01_Ammo_F: BombCore { ACE_damageType = "explosive"; }; - + // Autocannon rounds are special (#7401) class B_19mm_HE: BulletBase { ACE_damageType = "explosive"; diff --git a/addons/medical_damage/functions/script_component.hpp b/addons/medical_damage/functions/script_component.hpp index 66d3d51283..394e8aeed6 100644 --- a/addons/medical_damage/functions/script_component.hpp +++ b/addons/medical_damage/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\medical_damage\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\medical_damage\script_component.hpp" diff --git a/addons/medical_damage/stringtable.xml b/addons/medical_damage/stringtable.xml index c419394b40..5b7eb96f67 100644 --- a/addons/medical_damage/stringtable.xml +++ b/addons/medical_damage/stringtable.xml @@ -669,15 +669,35 @@ Thermal Burn + 熱傷 + Brûlure thermique + Термический ожог + Thermische Verbrennung + Oparzenie Minor Thermal Burn + 小さな熱傷 + Légère brûlure thermique + Незначительный термический ожог + Leichte thermische Verbrennung + Pomniejsze oparzenie Medium Thermal Burn + 中くらいの熱傷 + Brûlure thermique modérée + Средний термический ожог + Mittlere thermische Verbrennung + Średnie oparzenie Major Thermal Burn + 大きな熱傷 + Sévère brûlure thermique + Сильный термический ожог + Schwere thermische Verbrennung + Duże oparzenie Unit Damage Threshold @@ -708,6 +728,7 @@ 気絶確率 Probabilidad de inconsciencia por dolor Douleur - Chance d'évanouissement + Chance für Bewusslosigkeit durch Schmerz The probability of a person falling unconscious when their pain is above the tolerance threshold upon receiving damage. @@ -716,6 +737,7 @@ ユニットがダメージを受けた時に痛みが許容しきい値を超えた場合、気絶をする確率を設定します。 La probabilidad de que una persona caiga inconsciente cuando su dolor está por encima del umbral al haber recibido daño. La probabilité pour qu'une personne perde connaissance lorsque la douleur ressentie est supérieure à son seuil de tolérance. + Die Wahrscheinlichkeit, dass eine Person bewusstlos wird, wenn ihre Schmerzen bei einer Verwundung über der Toleranzschwelle liegen. Fatal Injury Death Chance @@ -724,6 +746,7 @@ Blessure mortelle - Chance de décès Szana na śmierć przy śmiertelej ranie 致命傷による死亡確率 + Tödliche Verletzung - Wahrscheinlichkeit des Todes The chance of dying to a fatal injury. @@ -732,6 +755,7 @@ La probabilité de mourir lors d'une "blessure mortelle".\nUne blessure mortelle est définie par des dommages importants à la tête ou au cœur. Szansa na śmierć po otrzymaniu śmiertelnej rany. 致命傷による死亡確率を設定します。 + Die Wahrscheinlichkeit, an einer eigentlich tödlichen Verletzung zu sterben. diff --git a/addons/medical_engine/CfgExtendedAnimation.hpp b/addons/medical_engine/CfgExtendedAnimation.hpp index 596418bb7b..03fde9fee4 100644 --- a/addons/medical_engine/CfgExtendedAnimation.hpp +++ b/addons/medical_engine/CfgExtendedAnimation.hpp @@ -1,9 +1,9 @@ class CfgExtendedAnimation { class Revive { - left = QGVAR(faceLeft_unconscious); - right = QGVAR(faceRight_unconscious); - front = QGVAR(faceDown_unconscious); - back = QGVAR(faceUp_unconscious); + left = QUNCON_ANIM(faceLeft); + right = QUNCON_ANIM(faceRight); + front = QUNCON_ANIM(faceDown); + back = QUNCON_ANIM(faceUp); }; }; diff --git a/addons/medical_engine/CfgMoves.hpp b/addons/medical_engine/CfgMoves.hpp index 0bf6ac4b56..7c99321887 100644 --- a/addons/medical_engine/CfgMoves.hpp +++ b/addons/medical_engine/CfgMoves.hpp @@ -8,75 +8,86 @@ class CfgMovesMaleSdr: CfgMovesBasic { weaponIK = 0; }; - class Unconscious; class DeadState; - class ace_unconscious_1: DeadState { + class UNCON_ANIM(1): DeadState { file = QPATHTO_T(data\ace_unconscious_1.rtm); }; - class ace_unconscious_2: ace_unconscious_1 { + + class UNCON_ANIM(2): UNCON_ANIM(1) { file = QPATHTO_T(data\ace_unconscious_2.rtm); }; - class ace_unconscious_3: ace_unconscious_1 { + + class UNCON_ANIM(3): UNCON_ANIM(1) { file = QPATHTO_T(data\ace_unconscious_3.rtm); }; - class ace_unconscious_4: ace_unconscious_1 { + + class UNCON_ANIM(4): UNCON_ANIM(1) { file = QPATHTO_T(data\ace_unconscious_4.rtm); }; - class ace_unconscious_5: ace_unconscious_1 { + + class UNCON_ANIM(5): UNCON_ANIM(1) { file = QPATHTO_T(data\ace_unconscious_5.rtm); }; - class ace_unconscious_6: ace_unconscious_1 { + + class UNCON_ANIM(6): UNCON_ANIM(1) { file = QPATHTO_T(data\ace_unconscious_6.rtm); }; - class ace_unconscious_7: ace_unconscious_1 { + + class UNCON_ANIM(7): UNCON_ANIM(1) { file = QPATHTO_T(data\ace_unconscious_7.rtm); }; - class ace_unconscious_8: ace_unconscious_1 { + + class UNCON_ANIM(8): UNCON_ANIM(1) { file = QPATHTO_T(data\ace_unconscious_8.rtm); }; - class ace_unconscious_1_1: ace_unconscious_1 { + + class UNCON_ANIM(1_1): UNCON_ANIM(1) { file = QPATHTO_T(data\ace_unconscious_1_1.rtm); }; - class ace_unconscious_2_1: ace_unconscious_1 { + + class UNCON_ANIM(2_1): UNCON_ANIM(1) { file = QPATHTO_T(data\ace_unconscious_2_1.rtm); }; - class ace_unconscious_3_1: ace_unconscious_1 { + + class UNCON_ANIM(3_1): UNCON_ANIM(1) { file = QPATHTO_T(data\ace_unconscious_3_1.rtm); }; - class ace_unconscious_4_1: ace_unconscious_1 { + + class UNCON_ANIM(4_1): UNCON_ANIM(1) { file = QPATHTO_T(data\ace_unconscious_4_1.rtm); }; - class ace_unconscious_5_1: ace_unconscious_1 { + + class UNCON_ANIM(5_1): UNCON_ANIM(1) { file = QPATHTO_T(data\ace_unconscious_5_1.rtm); }; - class ace_unconscious_6_1: ace_unconscious_1 { + + class UNCON_ANIM(6_1): UNCON_ANIM(1) { file = QPATHTO_T(data\ace_unconscious_6_1.rtm); }; - class ace_unconscious_7_1: ace_unconscious_1 { + + class UNCON_ANIM(7_1): UNCON_ANIM(1) { file = QPATHTO_T(data\ace_unconscious_7_1.rtm); }; - class ace_unconscious_8_1: ace_unconscious_1 { + + class UNCON_ANIM(8_1): UNCON_ANIM(1) { file = QPATHTO_T(data\ace_unconscious_8_1.rtm); }; + /* added for the "ace_unc" part */ class KIA_passenger_boat_holdleft; - class ace_unconscious_9: KIA_passenger_boat_holdleft { - }; + class UNCON_ANIM(9): KIA_passenger_boat_holdleft {}; + class KIA_driver_boat01; - class ace_unconscious_10: KIA_driver_boat01 { - }; + class UNCON_ANIM(10): KIA_driver_boat01 {}; - class GVAR(faceDown_unconscious): Unconscious { - }; + class Unconscious; + class UNCON_ANIM(faceDown): Unconscious {}; - class GVAR(faceLeft_unconscious): Unconscious { - }; + class UNCON_ANIM(faceLeft): Unconscious {}; - class GVAR(faceRight_unconscious): Unconscious { - }; + class UNCON_ANIM(faceRight): Unconscious {}; - class GVAR(faceUp_unconscious): Unconscious { - }; + class UNCON_ANIM(faceUp): Unconscious {}; class AmovPpneMstpSnonWnonDnon; class ACE_UnconsciousOutProne: AmovPpneMstpSnonWnonDnon { diff --git a/addons/medical_engine/XEH_preInit.sqf b/addons/medical_engine/XEH_preInit.sqf index 71c7a86595..7f9e8b9cdd 100644 --- a/addons/medical_engine/XEH_preInit.sqf +++ b/addons/medical_engine/XEH_preInit.sqf @@ -39,10 +39,10 @@ GVAR(armorCache) = false call CBA_fnc_createNamespace; GVAR(fixedStatics) = []; GVAR(animations) = [] call CBA_fnc_createNamespace; -GVAR(animations) setVariable [QGVAR(faceUp_unconscious), ["ace_unconscious_2","ace_unconscious_2_1","ace_unconscious_7_1","ace_unconscious_8_1","ace_unconscious_5_1","ace_unconscious_6_1"]]; -GVAR(animations) setVariable [QGVAR(faceDown_unconscious), ["ace_unconscious_1", "ace_unconscious_3", "ace_unconscious_4","unconscious","ace_unconscious_9","ace_unconscious_3_1","ace_unconscious_4_1"]]; -GVAR(animations) setVariable [QGVAR(faceLeft_unconscious), ["ace_unconscious_7","ace_unconscious_8","ace_unconscious_1_1","ace_unconscious_7_1","ace_unconscious_8_1"]]; -GVAR(animations) setVariable [QGVAR(faceRight_unconscious), ["ace_unconscious_5","ace_unconscious_6","ace_unconscious_10","ace_unconscious_5_1","ace_unconscious_6_1"]]; +GVAR(animations) setVariable [QUNCON_ANIM(faceUp), [QUNCON_ANIM(2),QUNCON_ANIM(2_1),QUNCON_ANIM(7_1),QUNCON_ANIM(8_1),QUNCON_ANIM(5_1),QUNCON_ANIM(6_1)]]; +GVAR(animations) setVariable [QUNCON_ANIM(faceDown), [QUNCON_ANIM(1),QUNCON_ANIM(3),QUNCON_ANIM(4),"unconscious",QUNCON_ANIM(9),QUNCON_ANIM(3_1),QUNCON_ANIM(4_1)]]; +GVAR(animations) setVariable [QUNCON_ANIM(faceLeft), [QUNCON_ANIM(7),QUNCON_ANIM(8),QUNCON_ANIM(1_1),QUNCON_ANIM(7_1),QUNCON_ANIM(8_1)]]; +GVAR(animations) setVariable [QUNCON_ANIM(faceRight), [QUNCON_ANIM(5),QUNCON_ANIM(6),QUNCON_ANIM(10),QUNCON_ANIM(5_1),QUNCON_ANIM(6_1)]]; private _fnc_fixStatic = { params ["_vehicle"]; @@ -69,7 +69,7 @@ addMissionEventHandler ["Loaded", { // Use object reference to indicate the waitUnit is already running (this prevents issues with respawning units keeping SetVars) if ((_unit getVariable [QGVAR(waitForAnim), objNull]) == _unit) exitWith {}; _unit setVariable [QGVAR(waitForAnim), _unit]; - [{(animationState _this) find QGVAR(face) != -1}, { + [{(animationState _this) find QUNCON_ANIM(face) != -1}, { [_this, animationState _this] call FUNC(applyAnimAfterRagdoll); }, _unit, 20] call CBA_fnc_waitUntilAndExecute; } else { diff --git a/addons/medical_engine/functions/fnc_applyAnimAfterRagdoll.sqf b/addons/medical_engine/functions/fnc_applyAnimAfterRagdoll.sqf index 7d97f8b3f8..116138306a 100644 --- a/addons/medical_engine/functions/fnc_applyAnimAfterRagdoll.sqf +++ b/addons/medical_engine/functions/fnc_applyAnimAfterRagdoll.sqf @@ -17,13 +17,16 @@ */ params ["_unit", "_anim"]; -TRACE_2("applyAnimAfterRagdoll",_unit,_unconsciousAnimation); +TRACE_2("applyAnimAfterRagdoll",_unit,_anim); if !(IS_UNCONSCIOUS(_unit) && // do not run if unit is conscious {alive _unit && // do not run if unit is dead {isNull objectParent _unit}}) exitWith {}; // do not run if unit in any vehicle -private _unconsciousAnimation = selectRandom (GVAR(animations) getVariable [_anim, [""]]); +private _animsArray = GVAR(animations) getVariable [_anim, [""]]; +private _random = (toArray (hashValue _unit)) param [0, 0]; +private _index = _random % (count _animsArray); +private _unconsciousAnimation = _animsArray select _index; if (_unconsciousAnimation isEqualTo "") exitWith { // not a valid animation found @@ -33,4 +36,5 @@ if (_unconsciousAnimation isEqualTo "") exitWith { // Apply the animation only locally on the machine and do not broadcast it to others // Reason is the nature of setUnconscious' end of ragdoll animation is not synced on all machines either // Not synced animations are preferred over units snapping from one to another animation +TRACE_2("switchMove",_unit,_unconsciousAnimation); _unit switchMove _unconsciousAnimation; diff --git a/addons/medical_engine/functions/fnc_setUnconsciousAnim.sqf b/addons/medical_engine/functions/fnc_setUnconsciousAnim.sqf index f71c550add..89de38dbea 100644 --- a/addons/medical_engine/functions/fnc_setUnconsciousAnim.sqf +++ b/addons/medical_engine/functions/fnc_setUnconsciousAnim.sqf @@ -59,7 +59,7 @@ if (_isUnconscious) then { if (!alive _unit) exitWith {}; // Fix unit being in locked animation with switchMove (If unit was unloaded from a vehicle, they may be in deadstate instead of unconscious) private _animation = animationState _unit; - if ((_animation == "unconscious" || {_animation == "deadstate" || {_animation find "ace_unconscious_" != -1}}) && {lifeState _unit != "INCAPACITATED"}) then { + if ((_animation == "unconscious" || {_animation == "deadstate" || {_animation find QGVAR(uncon_anim) != -1}}) && {lifeState _unit != "INCAPACITATED"}) then { [_unit, "AmovPpneMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation); TRACE_1("forcing SwitchMove",animationState _unit); }; diff --git a/addons/medical_engine/functions/fnc_updateDamageEffects.sqf b/addons/medical_engine/functions/fnc_updateDamageEffects.sqf index 107a1945c6..f3981127f0 100644 --- a/addons/medical_engine/functions/fnc_updateDamageEffects.sqf +++ b/addons/medical_engine/functions/fnc_updateDamageEffects.sqf @@ -35,8 +35,8 @@ if (EGVAR(medical,fractures) > 0) then { if (EGVAR(medical,fractures) in [2, 3]) then { // the limp with a splint will still cause effects // Block sprint / force walking based on fracture setting and leg splint status private _hasLegSplint = (_fractures select 4) == -1 || {(_fractures select 5) == -1}; - if (EGVAR(medical,fractures) == 2) then { - [_unit, "blockSprint", QEGVAR(medical,fracture), _hasLegSplint] call EFUNC(common,statusEffect_set); + if (EGVAR(medical,fractures) == 2) then { + [_unit, "blockSprint", QEGVAR(medical,fracture), _hasLegSplint] call EFUNC(common,statusEffect_set); } else { [_unit, "forceWalk", QEGVAR(medical,fracture), _hasLegSplint] call EFUNC(common,statusEffect_set); }; diff --git a/addons/medical_engine/script_component.hpp b/addons/medical_engine/script_component.hpp index e5e03e6d1f..2571883838 100644 --- a/addons/medical_engine/script_component.hpp +++ b/addons/medical_engine/script_component.hpp @@ -36,3 +36,6 @@ // don't change, these reflect hard coded engine behaviour #define DAMAGED_MIN_THRESHOLD 0.45 #define LIMPING_MIN_DAMAGE 0.5 + +#define UNCON_ANIM(var1) DOUBLES(GVAR(uncon_anim),var1) +#define QUNCON_ANIM(var1) QUOTE(UNCON_ANIM(var1)) diff --git a/addons/medical_engine/stringtable.xml b/addons/medical_engine/stringtable.xml index c90e6c57cf..7c008b0e6c 100644 --- a/addons/medical_engine/stringtable.xml +++ b/addons/medical_engine/stringtable.xml @@ -8,6 +8,7 @@ Blessures de collision (véhicules) Włącz obrażenia od kolizji pojazdu 車両衝突ダメージを有効化 + Aktiviere Verletzungen durch Fahrzeugunfälle Controls whether crew receives damage from vehicle collisions. @@ -16,6 +17,7 @@ Définit si les passagers à bord des véhicules peuvent être blessés en cas d'accident. Kontroluje czy załoga pojazdu otrzyma obrażenia podczas kolizji pojazdu. 車両が衝突をすると乗員がダメージを受けるかどうかを決定します。 + Kontrolliert, ob Besatzung eines Fahrzeugs Schaden durch Unfälle erleiden soll diff --git a/addons/medical_feedback/XEH_postInit.sqf b/addons/medical_feedback/XEH_postInit.sqf index c482be9ad1..96d15dbf21 100644 --- a/addons/medical_feedback/XEH_postInit.sqf +++ b/addons/medical_feedback/XEH_postInit.sqf @@ -89,13 +89,12 @@ GVAR(bloodTickCounter) = 0; if (_newCamera == "") then { // switched back to player view private _status = IS_UNCONSCIOUS(_unit); [!_status, _unit] call EFUNC(common,setVolume); - [QUOTE(ADDON), _volume, _status] call EFUNC(common,setHearingCapability); - ["unconscious", _status] call EFUNC(common,setDisableUserInputStatus); } else { // camera view [true, _unit] call EFUNC(common,setVolume); [QUOTE(ADDON), 1, false] call EFUNC(common,setHearingCapability); + ["unconscious", false] call EFUNC(common,setDisableUserInputStatus); }; }] call CBA_fnc_addPlayerEventHandler; diff --git a/addons/medical_feedback/functions/fnc_effectPain.sqf b/addons/medical_feedback/functions/fnc_effectPain.sqf index 96f233a4b9..9b8320244d 100644 --- a/addons/medical_feedback/functions/fnc_effectPain.sqf +++ b/addons/medical_feedback/functions/fnc_effectPain.sqf @@ -19,10 +19,10 @@ params ["_enable", "_intensity"]; if (!_enable || {_intensity == 0}) exitWith { - GVAR(ppPain) ppEffectEnable false; + if (GVAR(ppPain) != -1) then { GVAR(ppPain) ppEffectEnable false; }; GVAR(ppPainBlur) ppEffectEnable false; }; -GVAR(ppPain) ppEffectEnable true; +if (GVAR(ppPain) != -1) then { GVAR(ppPain) ppEffectEnable true; }; GVAR(ppPainBlur) ppEffectEnable true; // Trigger effect every 2s diff --git a/addons/medical_feedback/functions/fnc_initEffects.sqf b/addons/medical_feedback/functions/fnc_initEffects.sqf index 1d908c529d..eb2dc31f8b 100644 --- a/addons/medical_feedback/functions/fnc_initEffects.sqf +++ b/addons/medical_feedback/functions/fnc_initEffects.sqf @@ -33,7 +33,7 @@ private _fnc_createEffect = { // - Pain --------------------------------------------------------------------- if (!isNil QGVAR(ppPain)) then { TRACE_1("delete pain",GVAR(ppPain)); - ppEffectDestroy GVAR(ppPain) + if (GVAR(ppPain) != -1) then { ppEffectDestroy GVAR(ppPain); }; }; switch (GVAR(painEffectType)) do { case FX_PAIN_WHITE_FLASH: { @@ -57,6 +57,7 @@ switch (GVAR(painEffectType)) do { [0, 0, false] ] call _fnc_createEffect; }; + default { GVAR(ppPain) = -1; }; }; // Base blur on high pain if (isNil QGVAR(ppPainBlur)) then { diff --git a/addons/medical_feedback/stringtable.xml b/addons/medical_feedback/stringtable.xml index d695f8f5a4..2db6b75c8c 100644 --- a/addons/medical_feedback/stringtable.xml +++ b/addons/medical_feedback/stringtable.xml @@ -3,7 +3,7 @@ Feedback - Feedback + Rückmeldung 感触 Реакция на ранения Réaction aux blessures @@ -113,6 +113,7 @@ Efekt po utracie znacznej ilości krwi Düşük Kan Efekt Türü Tipo de efecto por volumen bajo de sangre + Effektart für "Niedriges Blutvolumen" Selects the used low blood volume effect type. @@ -123,6 +124,7 @@ Wybiera efekt ktory będzie pokazywany po utracie znacznej ilości krwi. Kullanılan düşük kan hacmi efekt türünü seçer. Selecciona el tipo de efecto a causa de un volumen bajo de sangre. + Wählt die verwendete Effektart für niedriges Blutvolumen. Color Fading @@ -133,6 +135,7 @@ Zanikanie kolorów Renk Soldurma Atenuación del color + Farbverblassen Icon @@ -143,6 +146,7 @@ Ikona Simge Icono + Symbol Icon + Color Fading @@ -153,6 +157,7 @@ Ikona + Zanikanie kolorów Simge + Renk Soldurma Icono + Atenuación del color + Symbol + Farbverblassen @@ -192,10 +197,18 @@ Enable Fracture/Tourniquet/Splint Indicators Включить индикаторы переломов/жгутов/шин + 骨折/止血帯の表記を有効化 + Indicateurs de fractures/garrots/attelles + Fraktur-/Tourniquet-/Schienen-Indikatoren aktivieren + Włącz wskaźniki złamań/stazy/szyny Enables indicators for fractures and applied tourniquets and splints over the Stance Indicator. Включает индикацию переломов, наложенных шин и жгутов поверх индикатора положения тела. + 体勢インジケータに骨折や添え木、止血帯の有無を表示するかどうかを設定できます。 + Affiche des icônes au niveau de l'indicateur de posture, indiquant si le personnage souffre de fractures ou si des garrots ou des attelles sont appliqués. + Aktiviert Indikatoren für Frakturen mit angelegte Tourniquets und Schienen über dem Haltungsindikator. + Włącza wskaźniki złamań oraz założonej staz/szyn przy ikonie stanu postawy diff --git a/addons/medical_gui/initSettings.sqf b/addons/medical_gui/initSettings.sqf index 16d0bdc4a9..9dc8693143 100644 --- a/addons/medical_gui/initSettings.sqf +++ b/addons/medical_gui/initSettings.sqf @@ -86,12 +86,13 @@ private _damageColors = [ [0.00, 0.00, 1.00, 1] ]; +private _categoryColors = [ELSTRING(medical,Category), format ["| %1 |", LELSTRING(common,subcategory_colors)]]; { [ - format ["%1_%2", QGVAR(bloodLossColor), _forEachIndex], + format ["%1_%2", QGVAR(bloodLossColor), _forEachIndex], "COLOR", [format [localize LSTRING(BloodLossColorX_DisplayName), _forEachIndex], LSTRING(BloodLossColor_Description)], - [ELSTRING(medical,Category), LSTRING(BloodLossColors)], + _categoryColors, _x, false // isGlobal ] call CBA_fnc_addSetting; @@ -102,7 +103,7 @@ private _damageColors = [ format ["%1_%2", QGVAR(damageColor), _forEachIndex], "COLOR", [format [localize LSTRING(DamageColorX_DisplayName), _forEachIndex], LSTRING(DamageColor_Description)], - [ELSTRING(medical,Category), LSTRING(DamageColors)], + _categoryColors, _x, false // isGlobal ] call CBA_fnc_addSetting; diff --git a/addons/medical_gui/stringtable.xml b/addons/medical_gui/stringtable.xml index 55c827ec40..84df4102d8 100644 --- a/addons/medical_gui/stringtable.xml +++ b/addons/medical_gui/stringtable.xml @@ -196,6 +196,7 @@ Mostrar nivel de triado en menú de interacción Показывать группу триажа в меню взаимодействий Pokaż poziom Triażu w menu interakcji + Zeige Triage-Einstufung im Interaktionsmenü Shows the patient's triage level by changing the color of the main and medical menu actions. @@ -204,6 +205,7 @@ Mostrar el nivel de triado en el paciente cambiando el color de acciones de menú principales y médicas Отображает установленную группу карты медицинской сортировки (триажа), изменяя цвет действий основного и медицинского меню. Pokazuje poziom Triażu pacjenta poprzez zmianę koloru ikony w menu interakcji. + Zeigt die Triage-Einstufung des Patienten durch Ändern der Farbe der Aktionen des Hauptmenüs und des medizinischen Menüs an. Medical @@ -974,6 +976,7 @@ Fracturada 骨折 Kırık + Gebrochen Splint Applied @@ -988,6 +991,7 @@ Tablilla aplicada 已用夹板固定 Atel Uygulandı + Schiene angelegt @@ -1125,30 +1129,55 @@ 患者情報 Hasta Bilgileri Información de paciente + Patienteninformation Blood Loss Colors Цвета кровопотери + 失血量カラー + Couleurs des hémorragies + Farben für Blutverlust + Kolory utraty krwi Blood Loss Colors, That Used in Medical GUI. 10 Color Gradient. Цвета кровопотери, которые используются в Медицинском интерфейсе. Градиент из 10 цветов. + 医療 GUI 内で失血量を 10 段階のカラーで表します。 + Couleurs utilisées pour afficher les hémorragies dans l'interface médicale. Dégradé de 10 couleurs. + Farben für Blutverlust, die in dem Medizinischen Menü verwendet werden. 10-Farben Farbverlauf. + Kolory używane do wyświetlania krwawienia w interfejsie medycznym. Gradient 10 kolorów. Blood Loss Color %1 Цвет кровопотери %1 + 失血量カラー %1 + Hémorragies - couleur %1 + Blutverlustfarbe %1 + Krwawienie - kolor %1 Damage Colors Цвета урона + 負傷カラー + Couleur des dégâts + Farben für Schaden + Kolory obrażeń Damage Colors, That Used in Medical GUI. 10 Color Gradient. Цвета урона, которые используются в Медицинском интерфейсе. Градиент из 10 цветов. + 医療 GUI 内で負傷を 10 段階のカラーで表します。 + Couleurs utilisées pour afficher les dégâts dans l'interface médicale. Dégradé de 10 couleurs. + Farben für Schaden, die in dem medizinischen Menü verwendet werden. 10-Farben Farbverlauf. + Kolory używane do wyświetlania obrażeń w interfejsie medycznym. Gradient 10 kolorów. Damage Color %1 Цвет урона %1 + 負傷カラー %1 + Dégâts - couleur %1 + Schadensfarbe %1 + Obrażenia - kolor %1 diff --git a/addons/medical_treatment/CfgVehicles.hpp b/addons/medical_treatment/CfgVehicles.hpp index fc832a7189..876078d484 100644 --- a/addons/medical_treatment/CfgVehicles.hpp +++ b/addons/medical_treatment/CfgVehicles.hpp @@ -18,6 +18,7 @@ class CfgVehicles { EGVAR(dragging,dragDirection) = 0; EGVAR(cargo,size) = 1; EGVAR(cargo,canLoad) = 1; + EGVAR(cargo,noRename) = 1; hiddenSelections[] = {"camo"}; hiddenSelectionsTextures[] = {QPATHTOEF(apl,data\bodybag_co.paa)}; class ACE_Actions { diff --git a/addons/medical_treatment/functions/fnc_canTreat.sqf b/addons/medical_treatment/functions/fnc_canTreat.sqf index 938e8a356d..f7790e548d 100644 --- a/addons/medical_treatment/functions/fnc_canTreat.sqf +++ b/addons/medical_treatment/functions/fnc_canTreat.sqf @@ -40,7 +40,7 @@ isClass _config if (_condition isEqualTo {}) exitWith { _condition = true; }; - + _condition = call _condition; }; diff --git a/addons/medical_treatment/functions/fnc_fullHealLocal.sqf b/addons/medical_treatment/functions/fnc_fullHealLocal.sqf index 0a1c498d41..3484811a32 100644 --- a/addons/medical_treatment/functions/fnc_fullHealLocal.sqf +++ b/addons/medical_treatment/functions/fnc_fullHealLocal.sqf @@ -20,6 +20,11 @@ TRACE_1("fullHealLocal",_patient); if (!alive _patient) exitWith {}; +// check if on fire, then put out the fire before healing +if ((["ace_fire"] call EFUNC(common,isModLoaded)) && {[_patient] call EFUNC(fire,isBurning)}) then { + _patient setVariable [QEGVAR(fire,intensity), 0, true]; +}; + private _state = GET_SM_STATE(_patient); TRACE_1("start",_state); diff --git a/addons/medical_treatment/functions/script_component.hpp b/addons/medical_treatment/functions/script_component.hpp index 86227531f9..83dfa4371b 100644 --- a/addons/medical_treatment/functions/script_component.hpp +++ b/addons/medical_treatment/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\medical_treatment\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\medical_treatment\script_component.hpp" diff --git a/addons/medical_treatment/stringtable.xml b/addons/medical_treatment/stringtable.xml index e85abf42d3..befe21cfeb 100644 --- a/addons/medical_treatment/stringtable.xml +++ b/addons/medical_treatment/stringtable.xml @@ -62,6 +62,8 @@ Activé & Diagnostic du décès/de l'arrêt cardiaque Włączone i pozwala zdiagnozować Śmierć/Zatrzymanie Akcji Serca 死亡/心停止状態でも診断許可 + Включено & Может диагностировать смерть/остановку сердца + Aktiviert & kann Tod/Herzstillstand diagnostizieren Advanced Medication @@ -127,6 +129,7 @@ Aktywne & możliwe ponowne otwarcie Etkinleştirildi ve Yeniden Açılabilir Habilitada y pueden reabrirse + Aktiviert und können sich wieder öffnen Wound Reopening Coefficient @@ -152,15 +155,35 @@ Clear Trauma + 外傷の削除 + Soigner les blessures + Очистить рану + Traumata entfernen + Leczenie ran Controls when hitpoint damage from wounds is healed. + 治療後に負傷箇所にある外傷の状態を決定できます。 + Définit à quel moment les blessures sont entièrement soignées. + Определяет, когда исцеляется урон от ран. + Steuert, wann Trefferpunktschaden von Wunden geheilt wird. + Kontroluje kiedy punkty obrażeń od odniesionych ran są w pełni wyleczone. After Bandage + 包帯を巻いた後 + Après bandage + После перевязки + Nach dem Bandagieren + Po zabandażowaniu After Stitch + 縫合後 + Après suture + После наложения швов + Nach dem Nähen + Po zszyciu Boost medical training when in medical vehicles or facilities. Untrained becomes medic, medic becomes doctor. @@ -239,6 +262,7 @@ Tiempo de tratamiento de autoinyección Время ввода автоинъектора Czas aplikacji autostrzykawki + Behandlungszeit des Autoinjektors Time, in seconds, required to administer medication using an autoinjector. @@ -247,6 +271,7 @@ Tiempo, en segundos, requerido para administrar medicación utilizando un autoinyectador. Время, необходимое для введения медикаментов автоинъектором (в секундах). Czas w sekundach potrzebny do aplikacji medykamentów za pomocą autostrzykawki. + Zeit in Sekunden, die benötigt wird, um Medikamente mittels Autoinjektor zu verabreichen. Tourniquet Treatment Time @@ -639,6 +664,7 @@ Tiempo de sutura de herida Время зашивания ран Czas szycia rany + Benötigte Zeit, um Wunden zu nähen Time, in seconds, required to stitch a single wound. @@ -647,6 +673,7 @@ Tiempo, en segundos, requerido para suturar una única herida. Время, необходимое для зашивания одной раны (в секундах). Czas w sekundach potrzebny na zaszycie pojedyńczej rany. + Zeit in Sekunden, um eine einzelne Wunde zu nähen. Self IV Transfusion @@ -681,6 +708,7 @@ Permitir bolsa para cuerpos inconsciente Разрешить упаковывать пациентов без сознания в мешки для трупов Nieprzytomni w worku na ciało + Erlaube Benutzung des Leichensackes mit bewusstlosen Personen Enables placing an unconscious patient in a body bag. @@ -689,6 +717,7 @@ Permitir colocar a un paciente inconsciente en una bolsa para cuerpos. Разрешает упаковывать пациентов без сознания в мешки для трупов. Zezwalaj na pakowanie nieprzytomnych osób do worka na ciało. + Aktiviert, Bewusstlose in Leichensack zu legen. Allow IV Transfusion @@ -719,6 +748,7 @@ Lieux perfusions IV Места введения пакетов внутривенного переливания Miejsca do transfuzji IV + Orte an denen IV-Transfusionen angelegt werden können Controls where IV transfusions can be performed. @@ -727,6 +757,7 @@ Définit les lieux où la pose de perfusions est autorisée. Определяет к каким частям тела разрешено применять пакеты внутренного переливания. Kontroluje w jakich miejscach można robić transfuzje IV. + Kontrolliert, wo IV-Transfusionen durchgeführt werden können. Convert Vanilla Items @@ -928,6 +959,7 @@ Минимальные шансы успеха СЛР Szansa na powodzenie CPR - Minimum 心肺蘇生の最低成功確率 + HLW Minimale Erfolgschance CPR Success Chance Maximum @@ -935,6 +967,7 @@ Максимальные шансы успеха СЛР Szansa na powodzenie CPR - Maksimum 心肺蘇生の最高成功確率 + HLW Maximale Erfolgschance Minimum probability that performing CPR will restore heart rhythm.\nThis minimum value is used when the patient has at least "Lost a fatal amount of blood".\nAn interpolated probability is used when the patient's blood volume is between the minimum and maximum thresholds. @@ -942,6 +975,7 @@ Минимальная вероятность того, что выполнение искусственного дыхания восстановит сердечный ритм.\nЭто минимальное значение используется, когда пациент, по крайней мере, получил статус "Фатальная кровопотеря".\n Интерполированная вероятность используется, когда объем крови пациента находится между минимальным и максимальным порогами. Minimalna wartość szansy na to że CPR przywróci bicie serca.\nTa minimalna wartość jest używana gdy pacjent ma status "Stracił krytyczną ilość krwi".\nInterpolowana wartość szansy jest używana gdy pacjent ma poziom krwi będący pomiędzy minimum a maksimum. 心肺蘇生を行うことで心拍が回復する最低成功確率を設定します。\nこの値は患者が"致命的な程失血している"時に使用されます。\n患者の血液量が最低値と最大値の間だった場合は、補完確率が適用されます。 + Minimale Wahrscheinlichkeit, dass die Durchführung einer HLW den Herzrhythmus wiederherstellt.\nDieser Mindestwert wird verwendet, wenn der Patient mindestens "eine tödliche Menge Blut verloren" hat.\nEine interpolierte Wahrscheinlichkeit wird verwendet, wenn das Blutvolumen des Patienten zwischen dem minimalen und dem maximalen Schwellenwert liegt. Maximum probability that performing CPR will restore heart rhythm.\nThis maximum value is used when the patient has at most "Lost some blood".\nAn interpolated probability is used when the patient's blood volume is between the minimum and maximum thresholds. @@ -949,6 +983,7 @@ Максимальная вероятность того, что выполнение искусственного дыхания восстановит сердечный ритм.\nЭто максимальное значение используется, когда пациент, по крайней мере, получил статус "Фатальная кровопотеря".\n Интерполированная вероятность используется, когда объем крови пациента находится между минимальным и максимальным порогами. Maksymalna wartość szansy na to że CPR przywróci bicie serca.\nTa maksymalna wartość jest używana gdy pacjent ma status "Stracił trochę krwi".\nInterpolowana wartość szansy jest używana gdy pacjent ma poziom krwi będący pomiędzy minimum a maksimum. 心肺蘇生を行うことで心拍が回復する最高成功確率を設定します。\nこの値は患者が"いくらか失血している"時以上の場合に使用されます。\n患者の血液量が最低値と最大値の間だった場合は、補完確率が適用されます。 + Maximale Wahrscheinlichkeit, dass die Durchführung einer HLW den Herzrhythmus wiederherstellt.\nDieser Maximalwert wird verwendet, wenn der Patient höchstens "Blut verloren" hat.\nEine interpolierte Wahrscheinlichkeit wird verwendet, wenn das Blutvolumen des Patienten zwischen dem minimalen und dem maximalen Schwellenwert liegt. CPR Treatment Time @@ -957,6 +992,7 @@ Tiempo de tratamiento de RCP Время проведения СЛР Czas potrzebny na wykonanie CPR + HLW Behandlungsdauer Time, in seconds, required to perform CPR on a patient. @@ -965,6 +1001,7 @@ Tiempo, en segundos, requerido para realizar RCP en un paciente. Время, необходимое для проведения сердечно-лёгочной реанимации (СЛР) (в секундах). Czas w sekundach jaki jest potrzebny do wykonania CPR na pacjencie. + Zeit in Sekunden, die benötigt wird, um eine HLW durzuführen. Holster Required @@ -3745,12 +3782,14 @@ %1 est inconscient, respire par intermittence et convulse. %1 jest nieresponsywny, ma płytki oddech oraz jest w konwulsjach %1 は反応せず、浅い呼吸とけいれんをしている + %1 reagiert nicht, schnappt nach Luft und verkrampft %1 is not responsive, motionless and cold %1 est inconscient, inanimé et froid. %1 jest nieresponsywny, nieruchomy oraz zimny %1 は反応せず、動かず冷たくなっている + %1 reagiert nicht, ist regungslos und kalt You checked %1 @@ -4441,6 +4480,7 @@ 身体が動き死んでないようだ! ¡El cuerpo se retorció y puede que no esté muerto! Ciało drgnęło i może nie być martwe! + Der Körper zuckte und kann nicht tot sein! diff --git a/addons/microdagr/functions/script_component.hpp b/addons/microdagr/functions/script_component.hpp index 13fbbcf5fe..487d569038 100644 --- a/addons/microdagr/functions/script_component.hpp +++ b/addons/microdagr/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\microdagr\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\microdagr\script_component.hpp" diff --git a/addons/microdagr/initSettings.sqf b/addons/microdagr/initSettings.sqf index 85614c9821..8810939302 100644 --- a/addons/microdagr/initSettings.sqf +++ b/addons/microdagr/initSettings.sqf @@ -1,9 +1,9 @@ -// CBA Settings [ADDON: ace_microdagr]: +private _category = [LELSTRING(common,categoryUncategorized), LLSTRING(itemName)]; [ QGVAR(mapDataAvailable), "LIST", [LSTRING(MapDataAvailable_DisplayName), LSTRING(MapDataAvailable_Description)], - ["ACE Uncategorized", "MicroDAGR"], + _category, [[0,1,2],[LSTRING(MapFill_None), LSTRING(MapFill_OnlyRoads), LSTRING(MapFill_Full)],2], // [values, titles, defaultIndex] true, // isGlobal {[QGVAR(mapDataAvailable), _this] call EFUNC(common,cbaSettings_settingChanged)}, @@ -13,7 +13,7 @@ [ QGVAR(waypointPrecision), "LIST", [LSTRING(WaypointPrecision_DisplayName), LSTRING(WaypointPrecision_Description)], - ["ACE Uncategorized", "MicroDAGR"], + _category, [[1, 2, 3], [LSTRING(WaypointPrecision_medium), LSTRING(WaypointPrecision_close), LSTRING(WaypointPrecision_exact)], 2], // [values, titles, defaultIndex] true, // isGlobal {[QGVAR(waypointPrecision), _this] call EFUNC(common,cbaSettings_settingChanged)}, diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml index 6bb267df13..74200ac4e6 100644 --- a/addons/microdagr/stringtable.xml +++ b/addons/microdagr/stringtable.xml @@ -590,6 +590,8 @@ MicroDAGR - Modo anterior MicroDAGR - Mode précédent MicroDAGR - 前のモードに + MicroDAGR - vorheriger Modus + MicroDAGR - Poprzedni Tryb MicroDAGR - Next Mode @@ -597,6 +599,8 @@ MicroDAGR - Modo siguiente MicroDAGR - Mode suivant MicroDAGR - 次のモードに + MicroDAGR - nächster Modus + MicroDAGR - Kolejny Tryb diff --git a/addons/missileguidance/XEH_pre_init.sqf b/addons/missileguidance/XEH_pre_init.sqf index 3281fdc6ab..a03b4bfbdd 100644 --- a/addons/missileguidance/XEH_pre_init.sqf +++ b/addons/missileguidance/XEH_pre_init.sqf @@ -6,7 +6,7 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -// Formally a ace_setting, users can still disable by `setting ace_missileguidance_enabled = x;` +// Formally a ace_setting, users can still disable by `setting ace_missileguidance_enabled = x;` // [0 - Off , 1 - PlayerOnly, 2 - PlayerAndAi] // As weapons take config changes, there is little point in being able to disable guidance if (isNil QGVAR(enabled)) then { GVAR(enabled) = 2; }; diff --git a/addons/missileguidance/functions/fnc_seekerType_MWR.sqf b/addons/missileguidance/functions/fnc_seekerType_MWR.sqf index bb3804c7a3..3a3c15812b 100644 --- a/addons/missileguidance/functions/fnc_seekerType_MWR.sqf +++ b/addons/missileguidance/functions/fnc_seekerType_MWR.sqf @@ -30,7 +30,7 @@ if (_isActive || { CBA_missionTime >= _timeWhenActive }) then { _seekerStateParams set [6, true]; TRACE_1("Missile Pitbull",_seekerStateParams); }; - + // Internal radar homing // For performance reasons only poll for target every so often instead of each frame if ((_lastTargetPollTime + ACTIVE_RADAR_POLL_FREQUENCY) - CBA_missionTime < 0) then { @@ -83,7 +83,7 @@ if (_isActive || { CBA_missionTime >= _timeWhenActive }) then { _target = _x; }; } forEach _nearestObjects; - + _expectedTargetPos = _searchPos; }; diff --git a/addons/missileguidance/functions/script_component.hpp b/addons/missileguidance/functions/script_component.hpp index 7046e9271d..6b1c1a864a 100644 --- a/addons/missileguidance/functions/script_component.hpp +++ b/addons/missileguidance/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\missileguidance\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\missileguidance\script_component.hpp" diff --git a/addons/missionmodules/CfgFactionClasses.hpp b/addons/missionmodules/CfgFactionClasses.hpp index fc4abc3606..bf0aea3a10 100644 --- a/addons/missionmodules/CfgFactionClasses.hpp +++ b/addons/missionmodules/CfgFactionClasses.hpp @@ -3,4 +3,4 @@ class CfgFactionClasses { class ACE_missionModules: NO_CATEGORY { displayName = CSTRING(Category_DisplayName); }; -}; \ No newline at end of file +}; diff --git a/addons/missionmodules/CfgVehicles.hpp b/addons/missionmodules/CfgVehicles.hpp index 6a2f74b934..880623d488 100644 --- a/addons/missionmodules/CfgVehicles.hpp +++ b/addons/missionmodules/CfgVehicles.hpp @@ -65,4 +65,4 @@ class CfgVehicles { sync[] = {}; }; }; -}; \ No newline at end of file +}; diff --git a/addons/missionmodules/functions/script_component.hpp b/addons/missionmodules/functions/script_component.hpp index 42d34d4801..cab9cb2dd8 100644 --- a/addons/missionmodules/functions/script_component.hpp +++ b/addons/missionmodules/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\missionmodules\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\missionmodules\script_component.hpp" diff --git a/addons/mk6mortar/functions/script_component.hpp b/addons/mk6mortar/functions/script_component.hpp index 9980d4fc88..76eefc205a 100644 --- a/addons/mk6mortar/functions/script_component.hpp +++ b/addons/mk6mortar/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\mk6mortar\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\mk6mortar\script_component.hpp" diff --git a/addons/mk6mortar/initSettings.sqf b/addons/mk6mortar/initSettings.sqf index 1b22600cbe..fc90029562 100644 --- a/addons/mk6mortar/initSettings.sqf +++ b/addons/mk6mortar/initSettings.sqf @@ -1,4 +1,3 @@ -// CBA Settings [ADDON: ace_mk6mortar]: // These settings effect gameplay difficutly: defaults will leave the mortar the same as vanilla private _category = [format ["ACE %1", localize "str_a3_cfgmarkers_nato_art"], localize LSTRING(DisplayName)]; diff --git a/addons/movement/functions/script_component.hpp b/addons/movement/functions/script_component.hpp index d33fa99b30..088b2beb1a 100644 --- a/addons/movement/functions/script_component.hpp +++ b/addons/movement/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\movement\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\movement\script_component.hpp" diff --git a/addons/nametags/functions/fnc_getVehicleData.sqf b/addons/nametags/functions/fnc_getVehicleData.sqf index ce7eec49b1..48eeab4626 100644 --- a/addons/nametags/functions/fnc_getVehicleData.sqf +++ b/addons/nametags/functions/fnc_getVehicleData.sqf @@ -69,7 +69,7 @@ private _fnc_addTurretUnit = { _role = FFV; }; - _data pushBack [_path, _role]; + _data pushBack [_path, _role]; }; @@ -84,7 +84,7 @@ private _fnc_addTurret = { for "_index" from 0 to (_count - 1) do { private _turretPath = _path + [_index - _offset]; private _turretConfig = _config select _index; - if (isClass _turretConfig) then { + if (isClass _turretConfig) then { [_turretConfig, _turretPath] call _fnc_addTurretUnit; [_turretConfig, _turretPath] call _fnc_addTurret; } else { diff --git a/addons/nametags/initSettings.sqf b/addons/nametags/initSettings.sqf index 8623433e50..5655be3496 100644 --- a/addons/nametags/initSettings.sqf +++ b/addons/nametags/initSettings.sqf @@ -1,5 +1,3 @@ -// CBA Settings [ADDON: ace_nametags]: - [ QGVAR(showPlayerNames), "LIST", [LSTRING(ShowPlayerNames), LSTRING(ShowPlayerNames_Desc)], @@ -68,7 +66,7 @@ QGVAR(tagSize), "LIST", [LSTRING(TagSize_Name), LSTRING(TagSize_Description)], format ["ACE %1", localize LSTRING(Module_DisplayName)], - [[0, 1, 2, 3, 4], ["str_very_small", "str_small", "str_medium", "str_large", "str_very_large"], 1], + [[0, 1, 2, 3, 4], ["str_very_small", "str_small", "str_medium", "str_large", "str_very_large"], 2], 0 ] call CBA_fnc_addSetting; diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index 831ef49a8e..f75530cc56 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -527,10 +527,18 @@ Nametag Ambient Brightness Coefficient Коэффициент окружающего освещения для меток игроков + 環境名札明るさ係数 + Coefficient de luminosité ambiante + Spielernamen Umgebungshelligkeitskoeffizient + Współczynnik jasności otoczenia Adjusts how strongly ambient brightness affects nametag view distance. Определяет как сильно окружающее освещение влияет на дальность отображения меток игроков. + 環境光の強さによって名札の描画距離を調整します。 + Définit à quel point le manque de lumière ambiante abaisse la distance de visibilité du nom des joueurs. + Stellt ein, wie stark sich die Umgebungshelligkeit auf die Sichtweite der Spielernamen auswirkt. + Definiuje jak bardzo jasność otoczenia wpływa na zasięg wyświetlania imion postaci. diff --git a/addons/nightvision/RscTitles.hpp b/addons/nightvision/RscTitles.hpp index 98c2b11cb3..1a4d030e01 100644 --- a/addons/nightvision/RscTitles.hpp +++ b/addons/nightvision/RscTitles.hpp @@ -22,7 +22,7 @@ class RscTitles { class Mask: RscPicture { idc = 1001; }; - + // Add blinders for side monitors for tripple monitors (mask won't cover them) class trippleHeadLeft: RscPicture { idc = 1002; diff --git a/addons/nightvision/functions/script_component.hpp b/addons/nightvision/functions/script_component.hpp index d79af487d7..74be58745a 100644 --- a/addons/nightvision/functions/script_component.hpp +++ b/addons/nightvision/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\nightvision\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\nightvision\script_component.hpp" diff --git a/addons/nightvision/initSettings.sqf b/addons/nightvision/initSettings.sqf index 1a42c74863..afcc7250c9 100644 --- a/addons/nightvision/initSettings.sqf +++ b/addons/nightvision/initSettings.sqf @@ -1,5 +1,3 @@ -// CBA Settings [ADDON: ace_nightVision]: - [ QGVAR(effectScaling), "SLIDER", [LSTRING(effectScaling_DisplayName), LSTRING(effectScaling_Description)], diff --git a/addons/nightvision/stringtable.xml b/addons/nightvision/stringtable.xml index b54b00d7e7..63752fb20c 100644 --- a/addons/nightvision/stringtable.xml +++ b/addons/nightvision/stringtable.xml @@ -22,6 +22,7 @@ ПНВ (Gen1, Коричневый) 暗視装置 (第1世代、ブラウン) Gogle noktowizyjne (Gen 1, Brązowe) + NS-Brille (1. Gen., braun) NV Goggles (Gen1, Black) @@ -29,6 +30,7 @@ ПНВ (Gen1, Чёрный) 暗視装置 (第1世代、ブラック) Gogle noktowizyjne (Gen 1, Czarne) + NS-Brille (1. Gen., schwarz) NV Goggles (Gen1, Green) @@ -36,6 +38,7 @@ ПНВ (Gen1, Зелёный) 暗視装置 (第1世代、グリーン) Gogle noktowizyjne (Gen 1, Zielone) + NS-Brille (1. Gen., grün) NV Goggles (Gen2, Brown) @@ -43,6 +46,7 @@ ПНВ (Gen2, Коричневый) 暗視装置 (第2世代、ブラウン) Gogle noktowizyjne (Gen 2, Brązowe) + NS-Brille (2. Gen., braun) NV Goggles (Gen2, Black) @@ -50,6 +54,7 @@ ПНВ (Gen2, Чёрный) 暗視装置 (第2世代、ブラック) Gogle noktowizyjne (Gen 2, Czarne) + NS-Brille (2. Gen., schwarz) NV Goggles (Gen2, Green) @@ -57,6 +62,7 @@ ПНВ (Gen2, Зелёный) 暗視装置 (第2世代、グリーン) Gogle noktowizyjne (Gen 2, Zielone) + NS-Brille (2. Gen., grün) NV Goggles (Gen3) @@ -132,6 +138,7 @@ ПНВ (Gen4, Коричневый) 暗視装置 (第4世代、ブラウン) Gogle noktowizyjne (Gen 4, Brązowe) + NS-Brille (4. Gen., braun) NV Goggles (Gen4, Black) @@ -139,6 +146,7 @@ ПНВ (Gen4, Чёрный) 暗視装置 (第3世代、ブラック) Gogle noktowizyjne (Gen 4, Czarne) + NS-Brille (4. Gen., schwarz) NV Goggles (Gen4, Green) @@ -146,6 +154,7 @@ ПНВ (Gen4, Зелёный) 暗視装置 (第3世代、グリーン) Gogle noktowizyjne (Gen 4, Zielone) + NS-Brille (4. Gen., grün) NV Goggles (Wide, Brown) @@ -153,6 +162,7 @@ ПНВ (Широкий, Коричневый) 暗視装置 (ワイド、ブラウン) Gogle noktowizyjne (Szerokie, Brązowe) + NS-Brille (Weit, braun) NV Goggles (Wide, Black) @@ -160,6 +170,7 @@ ПНВ (Широкий, Чёрный) 暗視装置 (ワイド、ブラック) Gogle noktowizyjne (Szerokie, Czarne) + NS-Brille (Weit, schwarz) NV Goggles (Wide, Green) @@ -167,6 +178,7 @@ ПНВ (Широкий, Зелёный) 暗視装置 (ワイド、グリーン) Gogle noktowizyjne (Szerokie, Zielone) + NS-Brille (Weit, grün) Brightness: %1 diff --git a/addons/nlaw/functions/fnc_keyDown.sqf b/addons/nlaw/functions/fnc_keyDown.sqf index c2ee6a8fb8..2f32cdfc44 100644 --- a/addons/nlaw/functions/fnc_keyDown.sqf +++ b/addons/nlaw/functions/fnc_keyDown.sqf @@ -65,7 +65,7 @@ playSound "ACE_Sound_Click"; _args set [3, false]; } else { // smoothing factor alpha - higher values will be more responsive to change, but also spike higher on jerky mouse movmeent - private _alpha = _deltaT / 3; + private _alpha = _deltaT / 3; GVAR(yawChange) = (_yawChange * _alpha) + GVAR(yawChange) * (1 - _alpha); GVAR(pitchChange) = (_pitchChange * _alpha) + GVAR(pitchChange) * (1 - _alpha); }; diff --git a/addons/noradio/XEH_preInit.sqf b/addons/noradio/XEH_preInit.sqf index 48463b70ef..35b9e9ec47 100644 --- a/addons/noradio/XEH_preInit.sqf +++ b/addons/noradio/XEH_preInit.sqf @@ -27,13 +27,4 @@ if (hasInterface) then { }, true] call CBA_fnc_addPlayerEventHandler; }; -[QGVAR(enabled), "CHECKBOX", [LSTRING(setting), LSTRING(setting_tooltip)], format ["ACE %1", localize ELSTRING(common,DisplayName)], true, true, { - params ["_enabled"]; - - if (_enabled) then { - [ACE_player, "isPlayer"] call EFUNC(common,muteUnit); - } else { - [ACE_player, "isPlayer"] call EFUNC(common,unmuteUnit); - }; -}, true // Needs mission restart -] call CBA_fnc_addSetting; +#include "initSettings.sqf" diff --git a/addons/noradio/initSettings.sqf b/addons/noradio/initSettings.sqf new file mode 100644 index 0000000000..82b8a37126 --- /dev/null +++ b/addons/noradio/initSettings.sqf @@ -0,0 +1,17 @@ +private _category = [LELSTRING(common,ACEKeybindCategoryCommon), QUOTE(COMPONENT_BEAUTIFIED)]; + +[ + QGVAR(enabled), "CHECKBOX", + [LSTRING(setting), LSTRING(setting_tooltip)], + _category, + true, + true, { + params ["_enabled"]; + + if (_enabled) then { + [ACE_player, "isPlayer"] call EFUNC(common,muteUnit); + } else { + [ACE_player, "isPlayer"] call EFUNC(common,unmuteUnit); + }; +}, true // Needs mission restart +] call CBA_fnc_addSetting; diff --git a/addons/optics/functions/script_component.hpp b/addons/optics/functions/script_component.hpp index 5613c1aec3..20e26bcb29 100644 --- a/addons/optics/functions/script_component.hpp +++ b/addons/optics/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\optics\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\optics\script_component.hpp" diff --git a/addons/optionsmenu/functions/script_component.hpp b/addons/optionsmenu/functions/script_component.hpp index dd11862f9d..cddc01fa3c 100644 --- a/addons/optionsmenu/functions/script_component.hpp +++ b/addons/optionsmenu/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\optionsmenu\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\optionsmenu\script_component.hpp" diff --git a/addons/optionsmenu/initSettings.sqf b/addons/optionsmenu/initSettings.sqf index 7a15e892ff..bf77a84fcc 100644 --- a/addons/optionsmenu/initSettings.sqf +++ b/addons/optionsmenu/initSettings.sqf @@ -1,7 +1,9 @@ +private _category = [LELSTRING(common,categoryUncategorized), LLSTRING(aceNews)]; + [ QGVAR(showNewsOnMainMenu), "CHECKBOX", LSTRING(showNewsOnMainMenu_name), - "ACE Uncategorized", + _category, true, 0 ] call CBA_fnc_addSetting; diff --git a/addons/overheating/CfgVehicles.hpp b/addons/overheating/CfgVehicles.hpp index beb6a910e4..e17f030a2b 100644 --- a/addons/overheating/CfgVehicles.hpp +++ b/addons/overheating/CfgVehicles.hpp @@ -38,7 +38,7 @@ class CfgVehicles { }; class GVAR(CoolWeaponWithItem) { displayName = CSTRING(CoolWeaponWithItem); - condition = QUOTE(GVAR(enabled) && {isClass(configfile >> 'CfgPatches' >> 'acex_field_rations')}); + condition = QUOTE(call FUNC(canCoolWeaponWithItem)); exceptions[] = {"isNotInside", "isNotSwimming", "isNotSitting"}; statement = "true"; showDisabled = 0; @@ -66,7 +66,7 @@ class CfgVehicles { }; class GVAR(CoolWeaponWithItem) { displayName = CSTRING(CoolWeaponWithItem); - condition = QUOTE(GVAR(enabled) && {isClass(configfile >> 'CfgPatches' >> 'acex_field_rations')}); + condition = QUOTE(call FUNC(canCoolWeaponWithItem)); exceptions[] = {"isNotInside", "isNotSwimming", "isNotSitting"}; statement = "true"; showDisabled = 0; diff --git a/addons/overheating/CfgWeapons.hpp b/addons/overheating/CfgWeapons.hpp index 03d44fe62f..67a2f0c765 100644 --- a/addons/overheating/CfgWeapons.hpp +++ b/addons/overheating/CfgWeapons.hpp @@ -8,10 +8,10 @@ class CfgWeapons { class Pistol_Base_F: Pistol {}; class hgun_Pistol_heavy_02_F: Pistol_Base_F { - GVAR(jamTypesAllowed) = ["Fire","Dud"]; + GVAR(jamTypesAllowed)[] = {"Fire", "Dud"}; }; class hgun_Pistol_Signal_F: Pistol_Base_F { - GVAR(jamTypesAllowed) = ["Fire","Dud"]; + GVAR(jamTypesAllowed)[] = {"Fire", "Dud"}; }; class RifleCore; @@ -95,7 +95,7 @@ class CfgWeapons { }; class sgun_HunterShotgun_01_base_F: Rifle_Long_Base_F { GVAR(closedBolt) = 1; - GVAR(jamTypesAllowed) = ["Fire","Dud"]; + GVAR(jamTypesAllowed)[] = {"Fire", "Dud"}; }; class ACE_ItemCore; class CBA_MiscItem_ItemInfo; diff --git a/addons/overheating/XEH_PREP.hpp b/addons/overheating/XEH_PREP.hpp index f4b56c3c3f..5a1d3c5387 100644 --- a/addons/overheating/XEH_PREP.hpp +++ b/addons/overheating/XEH_PREP.hpp @@ -6,19 +6,24 @@ PREP(canCheckSpareBarrelsTemperatures); PREP(checkSpareBarrelsTemperatures); PREP(checkTemperature); PREP(clearJam); +PREP(cookoffWeapon); PREP(coolWeaponWithItem); PREP(coolWeaponWithWaterSource); PREP(displayTemperature); PREP(firedEH); +PREP(getAmmoTemperature); PREP(getBarrelMass); PREP(getConsumableChildren); PREP(getWeaponData); +PREP(getWeaponTemperature); PREP(handleTakeEH); PREP(handleRespawn); PREP(jamWeapon); PREP(loadCoolestSpareBarrel); PREP(overheat); PREP(sendSpareBarrelsTemperaturesHint); +PREP(setAmmoTemperature); +PREP(setWeaponTemperature); PREP(swapBarrel); PREP(swapBarrelAssistant); PREP(swapBarrelCallback); diff --git a/addons/overheating/XEH_postInit.sqf b/addons/overheating/XEH_postInit.sqf index 4a932058bb..66bb7bebfd 100644 --- a/addons/overheating/XEH_postInit.sqf +++ b/addons/overheating/XEH_postInit.sqf @@ -44,9 +44,9 @@ if (hasInterface) then { if !(hasInterface) exitWith {}; - GVAR(cacheWeaponData) = call CBA_fnc_createNamespace; - GVAR(cacheAmmoData) = call CBA_fnc_createNamespace; - GVAR(cacheSilencerData) = call CBA_fnc_createNamespace; + GVAR(cacheWeaponData) = createHashMap; + GVAR(cacheAmmoData) = createHashMap; + GVAR(cacheSilencerData) = createHashMap; //Add Take EH if required if (GVAR(unJamOnReload) || {GVAR(cookoffCoef) > 0}) then { @@ -76,36 +76,45 @@ if (hasInterface) then { }] call CBA_fnc_addClassEventHandler; }; + // Reset all weapon heat to ambient on death to prevent cookoffs when a unit respawns. + ["CAManBase", "Killed", { + params ["_unit"]; + { + _unit setVariable [_x, ambientTemperature select 0]; + } forEach (_unit getVariable [QGVAR(trackedWeapons), []]); + _unit setVariable [QGVAR(trackedWeapons), []]; + }] call CBA_fnc_addClassEventHandler; + // Install event handler to display temp when a barrel was swapped [QGVAR(showWeaponTemperature), DFUNC(displayTemperature)] call CBA_fnc_addEventHandler; + // Install event handler to initiate an assisted barrel swap [QGVAR(initiateSwapBarrelAssisted), DFUNC(swapBarrel)] call CBA_fnc_addEventHandler; // Add an action to allow hot weapons to be cooled off in AceX Field Rations water sources - if (isClass(configfile >> "CfgPatches" >> "acex_field_rations")) then { + if (isClass (configfile >> "CfgPatches" >> "acex_field_rations")) then { [ - {acex_field_rations_enabled || CBA_missionTime > 1}, + {EXGVAR(field_rations,enabled) || CBA_missionTime > 1}, { - if (!acex_field_rations_enabled) exitWith {}; + if (!EXGVAR(field_rations,enabled)) exitWith {}; - _CoolWeaponWithWaterSourceAction = [ + private _coolWeaponWithWaterSourceAction = [ QGVAR(CoolWeaponWithWaterSource), LLSTRING(CoolWeaponWithWaterSource), - "\z\acex\addons\field_rations\ui\icon_water_tap.paa", + QPATHTOEF(field_rations,ui\icon_water_tap.paa), { - private _waterSource = _target getVariable ["acex_field_rations_waterSource", objNull]; + private _waterSource = _target getVariable [QEGVAR(field_rations,waterSource), objNull]; [_player, _waterSource] call FUNC(coolWeaponWithWaterSource); }, { - private _waterSource = _target getVariable ["acex_field_rations_waterSource", objNull]; - [_player, _waterSource] call acex_field_rations_fnc_canDrinkFromSource; + private _waterSource = _target getVariable [QEGVAR(field_rations,waterSource), objNull]; + [_player, _waterSource] call EFUNC(field_rations,canDrinkFromSource); } ] call EFUNC(interact_menu,createAction); - ["acex_field_rations_helper", 0, ["acex_field_rations_waterSource"], _CoolWeaponWithWaterSourceAction] call EFUNC(interact_menu,addActionToClass); + [QEGVAR(field_rations,helper), 0, [QEGVAR(field_rations,waterSource)], _coolWeaponWithWaterSourceAction] call EFUNC(interact_menu,addActionToClass); }, [] ] call CBA_fnc_waitUntilAndExecute; }; - }] call CBA_fnc_addEventHandler; diff --git a/addons/overheating/functions/fnc_calculateCooling.sqf b/addons/overheating/functions/fnc_calculateCooling.sqf index 8fd39c7024..db65fb1d2a 100644 --- a/addons/overheating/functions/fnc_calculateCooling.sqf +++ b/addons/overheating/functions/fnc_calculateCooling.sqf @@ -19,9 +19,12 @@ params ["_temperature", "_barrelMass", "_totalTime"]; -if (_temperature < 1) exitWith {0}; +// The lowest temperature a weapon can reach is the ambient air temperature. +private _ambientTemperature = ambientTemperature select 0; + // If a long time passed since the last shot, there's no need to calculate anything; the weapon should be cool -if (_totalTime > 1800) exitWith {0}; +if (_totalTime > 1800) exitWith {_ambientTemperature}; +if (_temperature <= _ambientTemperature) exitWith {_ambientTemperature}; //AR-15 (0.00570m bullet diameter) (barrel diameter usually 0.75" or 0.008255m radius) //Steel Denisty = 7850 m^3 / kg @@ -51,9 +54,9 @@ while {true} do { _convectionRate * _barrelSurface * _temperature // Radiative cooling + 0.4 * 5.67e-8 * _barrelSurface * ((_temperature + 273.15) ^ 4 - 273.15 ^ 4) - ) * _deltaTime / (_barrelMass * 466); + ) * GVAR(coolingCoef) * _deltaTime / (_barrelMass * 466); - if (_temperature < 1) exitWith {0}; + if (_temperature <= _ambientTemperature) exitWith {_ambientTemperature}; if (isNil "_temperature") exitWith { diag_log text format ["[ACE] ERROR: _totalTime = %1; _time = %2; _deltaTime = %3;", _totalTime, _time, _deltaTime]; @@ -61,5 +64,5 @@ while {true} do { }; _time = _time + _deltaTime; - if (_time >= _totalTime) exitWith { _temperature max 0 }; + if (_time >= _totalTime) exitWith {_temperature max _ambientTemperature}; }; diff --git a/addons/overheating/functions/fnc_canCoolWeaponWithItem.sqf b/addons/overheating/functions/fnc_canCoolWeaponWithItem.sqf new file mode 100644 index 0000000000..ba31bbebc5 --- /dev/null +++ b/addons/overheating/functions/fnc_canCoolWeaponWithItem.sqf @@ -0,0 +1,27 @@ +#include "script_component.hpp" +/* + * Author: drofseh + * Return true if the target's weapon can be cooled with an item in the player's inventory + * + * Arguments: + * 0: Target + * 1: Player + * + * Return Value: + * Bool + * + * Example: + * [cursorObject, player] call ace_overheating_fnc_canCoolWeaponWithItem + * + * Public: No + */ + +params ["_unit", "_player"]; +TRACE_2("canCoolWeaponWithItem",_unit,_player); + +GVAR(enabled) +&& {isClass (configfile >> "CfgPatches" >> "acex_field_rations")} +&& {!(_unit getVariable [QEGVAR(captives,isSurrendering), false])} // interaction point will overlap with ace_captives +&& {!(_unit getVariable [QEGVAR(captives,isHandcuffed), false])} +&& {[_unit, currentWeapon _unit] call FUNC(getWeaponTemperature) > (ambientTemperature select 0)} +&& {((_player call EFUNC(common,uniqueItems)) findIf {getNumber (configFile >> "CfgWeapons" >> _x >> QEXGVAR(field_rations,thirstQuenched)) > 0}) != -1} diff --git a/addons/overheating/functions/fnc_cookoffWeapon.sqf b/addons/overheating/functions/fnc_cookoffWeapon.sqf new file mode 100644 index 0000000000..ae2311243c --- /dev/null +++ b/addons/overheating/functions/fnc_cookoffWeapon.sqf @@ -0,0 +1,66 @@ +#include "script_component.hpp" +/* + * Author: drofseh + * Cookoff loaded round. + * + * Arguments: + * 0: Unit + * 1: Weapon + * 2: Is Weapon Jammed + * 3: Type of Jam + * + * Return Value: + * None + * + * Example: + * [player, currentWeapon player, true, "Fire"] call ace_overheating_fnc_cookoffWeapon + * + * Public: No + */ + +params ["_unit", "_weapon", "_canUnjam", "_jamType"]; +TRACE_4("params",_unit,_weapon,_canUnjam,_jamType); + +// a weapon with a failure to fire or dud type jam will be unjammed from cooking off +// this is first so that the fired event from the cookoff can also cause a jam +if (_canUnjam && {_jamType in ["Fire","Dud"]}) then { + [_unit, currentMuzzle _unit, true] call FUNC(clearJam); + + // clearJam will remove a dud round, but so will the forced fire, so give back the lost round and shoot it + if (_jamType isEqualTo "Dud") then { + _unit setAmmo [_weapon, (_unit ammo _weapon) + 1]; + }; +}; + +// get valid mode and muzzle for the main weapon, we don't want the cookoff to come from an underbarrel launcher +([_weapon] call FUNC(getWeaponData)) params ["", "", "", "_modes", "_muzzle", "_reloadTime"]; + +// get an appropriate firemode and muzzle, cache the current muzzle +// trying to match firemodes and switching back to the cached muzzle will hide the change from the player and prevent unexpected mode/muzzle changes (going from full auto to semi auto, or from underbarrel GL to rifle for example) +private _muzzleCache = currentMuzzle _unit; +private _mode = currentWeaponMode _unit; +if !(_mode in _modes) then { + _mode = _modes select 0; +}; + +// delay cookoff to ensure any previous animation from a fired event is finished +[ + { + params ["_unit", "_mode", "_muzzle", "_muzzleCache"]; + + // fire the cookoff + _unit forceWeaponFire [_muzzle, _mode]; + + // switch back to the cached muzzle if required + if (_muzzle != _muzzleCache) then { + _unit selectWeapon _muzzleCache; + }; + + [ + [localize LSTRING(WeaponCookedOff)], + true // allows the hint to be overwritten by another hint, such as a jam or another cookoff + ] call CBA_fnc_notify; + }, + [_unit, _mode, _muzzle, _muzzleCache], + _reloadTime +] call CBA_fnc_waitAndExecute; diff --git a/addons/overheating/functions/fnc_coolWeaponWithItem.sqf b/addons/overheating/functions/fnc_coolWeaponWithItem.sqf index ee3e1437f9..d089c04a64 100644 --- a/addons/overheating/functions/fnc_coolWeaponWithItem.sqf +++ b/addons/overheating/functions/fnc_coolWeaponWithItem.sqf @@ -25,8 +25,8 @@ private _config = configFile >> "CfgWeapons" >> _item; private _weapon = currentWeapon _target; private _tempVarName = format [QGVAR(%1_temp), _weapon]; private _temperature = _target getVariable [_tempVarName, 0]; -private _replacementItem = getText (_config >> "acex_field_rations_replacementItem"); -private _liquidAmount = getNumber (_config >> "acex_field_rations_thirstQuenched"); +private _replacementItem = getText (_config >> QEXGVAR(field_rations,replacementItem)); +private _liquidAmount = getNumber (_config >> QEXGVAR(field_rations,thirstQuenched)); private _consumeText = format [LLSTRING(CoolingWeaponWithItem), getText (configFile >> "CfgWeapons" >> _weapon >> "displayName"), getText (_config >> "displayName")]; /* // to be added when licence compatible audio can be found or recorded @@ -61,7 +61,7 @@ private _fnc_onSuccess = { }; // cool the weapon - private _barrelMass = _weapon call FUNC(getBarrelMass); + private _barrelMass = ([_weapon] call FUNC(getWeaponData)) select 7; _temperature = [_temperature, _barrelMass, _liquidAmount * 10] call FUNC(calculateCooling); [_target, _tempVarName, _temperature, TEMP_TOLERANCE] call EFUNC(common,setApproximateVariablePublic); }; @@ -95,4 +95,4 @@ private _fnc_condition = { {}, //_fnc_onFailure, _consumeText, _fnc_condition -] call EFUNC(common,progressBar); \ No newline at end of file +] call EFUNC(common,progressBar); diff --git a/addons/overheating/functions/fnc_coolWeaponWithWaterSource.sqf b/addons/overheating/functions/fnc_coolWeaponWithWaterSource.sqf index 5e7269d065..5879ea6b6c 100644 --- a/addons/overheating/functions/fnc_coolWeaponWithWaterSource.sqf +++ b/addons/overheating/functions/fnc_coolWeaponWithWaterSource.sqf @@ -28,7 +28,7 @@ private _fnc_onFinish = { params ["_args"]; _args params ["_player", "_target", "_weapon", "_tempVarName"]; - private _water = _target call acex_field_rations_fnc_getRemainingWater; + private _water = _target call EFUNC(field_rations,getRemainingWater); if (_water <= 0 && {_water != -10}) exitWith { [ @@ -46,7 +46,7 @@ private _fnc_condition = { _args params ["_player", "_target", "_weapon", "_tempVarName"]; private _temperature = _player getVariable [_tempVarName, 0]; - private _water = _target call acex_field_rations_fnc_getRemainingWater; + private _water = _target call EFUNC(field_rations,getRemainingWater); if (_water <= 0 && {_water != -10}) exitWith {false}; @@ -55,11 +55,11 @@ private _fnc_condition = { //Remove water from the source, unless it's unlimited if (_water != -10) then { - [_target, _water - 1] call acex_field_rations_fnc_setRemainingWater; + [_target, _water - 1] call EFUNC(field_rations,setRemainingWater); }; //Cool the weapon down - private _barrelMass = _weapon call FUNC(getBarrelMass); + private _barrelMass = ([_weapon] call FUNC(getWeaponData)) select 7; _temperature = [_temperature, _barrelMass, 20] call FUNC(calculateCooling); [_player, _tempVarName, _temperature, TEMP_TOLERANCE] call EFUNC(common,setApproximateVariablePublic); diff --git a/addons/overheating/functions/fnc_firedEH.sqf b/addons/overheating/functions/fnc_firedEH.sqf index 5f43ca1881..a6a2a2c0c1 100644 --- a/addons/overheating/functions/fnc_firedEH.sqf +++ b/addons/overheating/functions/fnc_firedEH.sqf @@ -89,8 +89,10 @@ if (_scaledTemperature > 0.1) then { // Only compute jamming for the local player if (_unit != ACE_player) exitWith {END_COUNTER(firedEH);}; +private _ammoCount = _unit ammo _weapon; + // Compute new temperature once every 3 bullets -if ((_unit ammo _weapon) % 3 == 0) then { +if (_ammoCount % 3 == 0) then { _this call FUNC(overheat); }; @@ -102,7 +104,8 @@ if (GVAR(cookoffCoef) > 0) then { // decrease time to next shot as heat increases, value is a coef where 1 is unchanged and 0 is instant, 0.8 is a 25% faster ROF. // this could be filtered by weapon type, but I think the heat gain and rate of fire on non-automatic weapons is low enough not to bother -if (GVAR(overheatingRateOfFire)) then { +// do not set when empty to prevent animation glitches +if (GVAR(overheatingRateOfFire) && {_ammoCount > 0}) then { _unit setWeaponReloadingTime [_unit, _muzzle, linearConversion [0, 0.5, _scaledTemperature, 1, 0.909, true]]; }; diff --git a/addons/overheating/functions/fnc_getAmmoTemperature.sqf b/addons/overheating/functions/fnc_getAmmoTemperature.sqf new file mode 100644 index 0000000000..9855335101 --- /dev/null +++ b/addons/overheating/functions/fnc_getAmmoTemperature.sqf @@ -0,0 +1,23 @@ +#include "script_component.hpp" +/* + * Author: drofseh + * Get current temperature of weapon's ammo. + * + * Arguments: + * 0: Unit + * 1: Weapon + * + * Return Value: + * Current ammunition temperature + * + * Example: + * [player, currentWeapon player] call ace_overheating_fnc_getAmmoTemperature + * + * Public: Yes + */ + +params ["_unit", "_weapon"]; + +private _ammoTempVarName = format [QGVAR(%1_ammoTemp), _weapon]; + +_unit getVariable [_ammoTempVarName, ambientTemperature select 0] diff --git a/addons/overheating/functions/fnc_getBarrelMass.sqf b/addons/overheating/functions/fnc_getBarrelMass.sqf index 1504442a60..a8eb9797ad 100644 --- a/addons/overheating/functions/fnc_getBarrelMass.sqf +++ b/addons/overheating/functions/fnc_getBarrelMass.sqf @@ -17,4 +17,6 @@ params ["_weapon"]; -METAL_MASS_RATIO * (getNumber (configFile >> "CfgWeapons" >> _weapon >> "WeaponSlotsInfo" >> "mass") / 22.0) max 1.0; +private _barrelMass = ([_weapon] call FUNC(getWeaponData)) select 7; + +_barrelMass diff --git a/addons/overheating/functions/fnc_getConsumableChildren.sqf b/addons/overheating/functions/fnc_getConsumableChildren.sqf index a46c32a88a..697b4bccd9 100644 --- a/addons/overheating/functions/fnc_getConsumableChildren.sqf +++ b/addons/overheating/functions/fnc_getConsumableChildren.sqf @@ -25,7 +25,7 @@ private _fnc_getActions = { { private _config = _cfgWeapons >> _x; - if (getNumber (_config >> "acex_field_rations_thirstQuenched") > 0) then { + if (getNumber (_config >> QEXGVAR(field_rations,thirstQuenched)) > 0) then { private _displayName = getText (_config >> "displayName"); private _picture = getText (_config >> "picture"); diff --git a/addons/overheating/functions/fnc_getWeaponData.sqf b/addons/overheating/functions/fnc_getWeaponData.sqf index c5cfb40d4a..2a9dc406b9 100644 --- a/addons/overheating/functions/fnc_getWeaponData.sqf +++ b/addons/overheating/functions/fnc_getWeaponData.sqf @@ -7,9 +7,14 @@ * 0: weapon type * * Return Value: - * 0: dispresion + * 0: dispersion * 1: slowdownFactor * 2: jamChance + * 3: modes + * 4: muzzle + * 5: reloadTime + * 6: closedBolt + * 7: barrelMass * * Example: * ["gun"] call ace_overheating_fnc_getWeaponData @@ -20,7 +25,7 @@ params ["_weapon"]; // Look in the cache first -private _weaponData = GVAR(cacheWeaponData) getVariable _weapon; +private _weaponData = GVAR(cacheWeaponData) get _weapon; if (!isNil "_weaponData") exitWith {_weaponData}; // Search the config @@ -71,11 +76,16 @@ private _muzzle = getArray (configFile >> "CfgWeapons" >> _weapon >> "muzzles") if (_muzzle == "this") then { _muzzle = _weapon; }; + private _reloadTime = getNumber (configfile >> "CfgWeapons" >> _weapon >> (_modes select 0) >> "reloadTime"); +private _closedBolt = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(closedBolt)); + +private _barrelMass = METAL_MASS_RATIO * (getNumber (configFile >> "CfgWeapons" >> _weapon >> "WeaponSlotsInfo" >> "mass") / 22.0) max 1.0; + // Cache the values -_weaponData = [_dispersion, _slowdownFactor, _jamChance, _modes, _muzzle, _reloadTime]; +_weaponData = [_dispersion, _slowdownFactor, _jamChance, _modes, _muzzle, _reloadTime, _closedBolt, _barrelMass]; TRACE_2("building cache",_weapon,_weaponData); -GVAR(cacheWeaponData) setVariable [_weapon, _weaponData]; +GVAR(cacheWeaponData) set [_weapon, _weaponData]; _weaponData diff --git a/addons/overheating/functions/fnc_getWeaponTemperature.sqf b/addons/overheating/functions/fnc_getWeaponTemperature.sqf new file mode 100644 index 0000000000..7aa49d9d0b --- /dev/null +++ b/addons/overheating/functions/fnc_getWeaponTemperature.sqf @@ -0,0 +1,23 @@ +#include "script_component.hpp" +/* + * Author: drofseh + * Get current temperature of weapon. + * + * Arguments: + * 0: Unit + * 1: Weapon + * + * Return Value: + * Current ammunition temperature + * + * Example: + * [player, currentWeapon player] call ace_overheating_fnc_getWeaponTemperature + * + * Public: Yes + */ + +params ["_unit", "_weapon"]; + +private _weaponTempVarName = format [QGVAR(%1_temp), _weapon]; + +_unit getVariable [_weaponTempVarName, ambientTemperature select 0]; diff --git a/addons/overheating/functions/fnc_jamWeapon.sqf b/addons/overheating/functions/fnc_jamWeapon.sqf index c4e74f201f..3f6f0838c3 100644 --- a/addons/overheating/functions/fnc_jamWeapon.sqf +++ b/addons/overheating/functions/fnc_jamWeapon.sqf @@ -32,9 +32,9 @@ _unit setVariable [QGVAR(jammedWeapons), _jammedWeapons]; // Cookoffs only happen on Fire and Dud, dud rounds are lost on jam clear. // Reduce chance of duds as temp increases (functionally increasing the chance of the others but with fewer commands) private _temp = 1 max (_unit getVariable [format [QGVAR(%1_temp), _weapon], 0]); -private _jamTypesAllowed = getArray (configFile >> 'CfgWeapons' >> currentWeapon _player >> QGVAR(jamTypesAllowed)); +private _jamTypesAllowed = getArray (configFile >> 'CfgWeapons' >> currentWeapon _unit >> QGVAR(jamTypesAllowed)); -if (_jamTypesAllowed == []) then { +if (_jamTypesAllowed isEqualTo []) then { _jamTypesAllowed = ["Eject", 1, "Extract", 1, "Feed", 1, "Fire", 1, "Dud", (5 / (_temp / 5))]; } else { for "_i" from count _jamTypesAllowed to 1 step -1 do { @@ -51,7 +51,9 @@ if (_jamTypesAllowed == []) then { }; }; -_unit setVariable [format [QGVAR(%1_jamType), _weapon], selectRandomWeighted _jamTypesAllowed]; +private _jamType = selectRandomWeighted _jamTypesAllowed; +_unit setVariable [format [QGVAR(%1_jamType), _weapon], _jamType]; + // Stop current burst _unit setAmmo [_weapon, 0]; @@ -72,7 +74,7 @@ if (_weapon == primaryWeapon _unit) then { // only display the hint once, after you try to shoot an already jammed weapon GVAR(knowAboutJam) = false; -["ace_weaponJammed", [_unit,_weapon]] call CBA_fnc_localEvent; +["ace_weaponJammed", [_unit, _weapon, _jamType]] call CBA_fnc_localEvent; if (_unit getVariable [QGVAR(JammingActionID), -1] == -1) then { diff --git a/addons/overheating/functions/fnc_overheat.sqf b/addons/overheating/functions/fnc_overheat.sqf index f1eb7b16c0..d63dfe919d 100644 --- a/addons/overheating/functions/fnc_overheat.sqf +++ b/addons/overheating/functions/fnc_overheat.sqf @@ -26,9 +26,9 @@ TRACE_4("params",_unit,_weapon,_ammo,_projectile); BEGIN_COUNTER(overheat); // Get bullet parameters -private _energyIncrement = GVAR(cacheAmmoData) getVariable _ammo; +private _energyIncrement = GVAR(cacheAmmoData) get _ammo; if (isNil "_energyIncrement") then { - _bulletMass = getNumber (configFile >> "CfgAmmo" >> _ammo >> "ACE_BulletMass"); + private _bulletMass = getNumber (configFile >> "CfgAmmo" >> _ammo >> "ACE_BulletMass"); if (_bulletMass == 0) then { // If the bullet mass is not configured, estimate it _bulletMass = 3.4334 + 0.5171 * (getNumber (configFile >> "CfgAmmo" >> _ammo >> "hit") + getNumber (configFile >> "CfgAmmo" >> _ammo >> "caliber")); @@ -38,28 +38,27 @@ if (isNil "_energyIncrement") then { // Ref: https://en.wikipedia.org/wiki/Physics_of_firearms // Muzzle Engergy = 1/2 * m * v^2 = (1/2 * 0.001 g/kg * bulletMass (grams) * v^2) // Multiple by 3 becase we only calc every 3rd bullet: (3 * 1/2 * 0.001) = 0.0015 - _energyIncrement = 0.0015 * _bulletMass * (vectorMagnitudeSqr velocity _projectile); + _energyIncrement = GVAR(heatCoef) * 0.0015 * _bulletMass * (vectorMagnitudeSqr velocity _projectile); - GVAR(cacheAmmoData) setVariable [_ammo, _energyIncrement]; + GVAR(cacheAmmoData) set [_ammo, _energyIncrement]; }; // Increase overheating depending on how obstrusive is the current supressor, // if any. Typical arma supressors have visibleFire=0.5 and audibleFire=0.3, // so they produce x2.1 overheating -private _silencer = switch (_weapon) do { +private _suppressor = switch (_weapon) do { case (primaryWeapon _unit) : {(primaryWeaponItems _unit) select 0}; case (handgunWeapon _unit) : {(handgunItems _unit) select 0}; default {""}; }; -if (_silencer != "") then { - private _silencerCoef = GVAR(cacheSilencerData) getVariable _silencer; - if (isNil "_silencerCoef") then { - _silencerCoef = 1 + - (1 - getNumber (configFile >> "CfgWeapons" >> _silencer >> "ItemInfo" >> "AmmoCoef" >> "audibleFire")) + - (1 - getNumber (configFile >> "CfgWeapons" >> _silencer >> "ItemInfo" >> "AmmoCoef" >> "visibleFire")); - GVAR(cacheSilencerData) setVariable [_silencer, _silencerCoef]; +if (_suppressor != "" && {GVAR(suppressorCoef) > 0}) then { + private _suppressorCoef = GVAR(cacheSilencerData) get _suppressor; + if (isNil "_suppressorCoef") then { + private _config = configFile >> "CfgWeapons" >> _suppressor >> "ItemInfo" >> "AmmoCoef"; + _suppressorCoef = GVAR(suppressorCoef) * (1 + (1 - getNumber (_config >> "audibleFire")) + (1 - getNumber (_config >> "visibleFire"))); + GVAR(cacheSilencerData) set [_suppressor, _suppressorCoef]; }; - _energyIncrement = _energyIncrement * _silencerCoef; + _energyIncrement = _energyIncrement * _suppressorCoef; }; TRACE_1("heat",_energyIncrement); diff --git a/addons/overheating/functions/fnc_setAmmoTemperature.sqf b/addons/overheating/functions/fnc_setAmmoTemperature.sqf new file mode 100644 index 0000000000..b999d609ac --- /dev/null +++ b/addons/overheating/functions/fnc_setAmmoTemperature.sqf @@ -0,0 +1,24 @@ +#include "script_component.hpp" +/* + * Author: drofseh + * Set weapon's ammo to specific temperature. + * + * Arguments: + * 0: Unit + * 1: Weapon + * 2: Temperature + * + * Return Value: + * None + * + * Example: + * [player, currentWeapon player] call ace_overheating_fnc_setAmmoTemperature + * + * Public: Yes + */ + +params ["_unit", "_weapon", "_temp"]; + +private _ammoTempVarName = format [QGVAR(%1_ammoTemp), _weapon]; + +_unit setVariable [_ammoTempVarName, _temp]; diff --git a/addons/overheating/functions/fnc_setWeaponTemperature.sqf b/addons/overheating/functions/fnc_setWeaponTemperature.sqf new file mode 100644 index 0000000000..06e183f91f --- /dev/null +++ b/addons/overheating/functions/fnc_setWeaponTemperature.sqf @@ -0,0 +1,24 @@ +#include "script_component.hpp" +/* + * Author: drofseh + * Set weapon to specific temperature. + * + * Arguments: + * 0: Unit + * 1: Weapon + * 2: Temperature + * + * Return Value: + * None + * + * Example: + * [player, currentWeapon player] call ace_overheating_fnc_setWeaponTemperature + * + * Public: Yes + */ + +params ["_unit", "_weapon", "_temp"]; + +private _ammoTempVarName = format [QGVAR(%1_ammoTemp), _weapon]; + +_unit setVariable [_ammoTempVarName, _temp]; diff --git a/addons/overheating/functions/fnc_swapBarrelCallback.sqf b/addons/overheating/functions/fnc_swapBarrelCallback.sqf index 1f458bcc26..e385e09844 100644 --- a/addons/overheating/functions/fnc_swapBarrelCallback.sqf +++ b/addons/overheating/functions/fnc_swapBarrelCallback.sqf @@ -34,7 +34,7 @@ if (GVAR(unJamOnSwapBarrel) && {[_gunner] call FUNC(canUnjam)}) then { [localize LSTRING(SwappedBarrel), QPATHTOF(UI\spare_barrel_ca.paa)] call EFUNC(common,displayTextPicture); private _temp = _gunner getVariable [format [QGVAR(%1_temp), _weapon], 0]; -private _barrelMass = _weapon call FUNC(getBarrelMass); +private _barrelMass = ([_weapon] call FUNC(getWeaponData)) select 7; // Instruct the server to load the coolest spare barrel into the weapon and // store the removed barrel with the former weapon temperature. The server diff --git a/addons/overheating/functions/fnc_updateAmmoTemperature.sqf b/addons/overheating/functions/fnc_updateAmmoTemperature.sqf index 12944774b7..b612446b7b 100644 --- a/addons/overheating/functions/fnc_updateAmmoTemperature.sqf +++ b/addons/overheating/functions/fnc_updateAmmoTemperature.sqf @@ -9,7 +9,7 @@ * 2: Barrel Temperature * * Return Value: - * Current ammunition temperature + * New temperature * * Example: * [player, currentWeapon player, 600] call ace_overheating_fnc_updateAmmoTemperature @@ -20,23 +20,25 @@ params ["_unit", "_weapon", "_barrelTemperature"]; TRACE_3("params",_unit,_weapon,_barrelTemperature); -private _closedBolt = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(closedBolt)); +private _closedBolt = ([_weapon] call FUNC(getWeaponData)) select 6; private _canUnjam = [_unit] call FUNC(canUnjam); +private _jamType = _unit getVariable [format [QGVAR(%1_jamType), _weapon], "None"]; // Skip if no ammo in chamber if ( _unit ammo _weapon < 1 // closed bolt, and jammed and type not failure to fire - || {_closedBolt == 1 && {_canUnjam} && {!(_unit getVariable [format [QGVAR(%1_jamType), _weapon], "None"] in ["Fire","Dud"])}} + || {_closedBolt == 1 && {_canUnjam} && {!(_jamType in ["Fire","Dud"])}} // open bolt, and not jammed, or jammed and type not failure to fire - || {_closedBolt == 0 && {!_canUnjam || {_canUnjam && {!(_unit getVariable [format [QGVAR(%1_jamType), _weapon], "None"] in ["Fire","Dud"])}}}} + || {_closedBolt == 0 && {!_canUnjam || {_canUnjam && {!(_jamType in ["Fire","Dud"])}}}} ) exitWith { - _unit setVariable [format [QGVAR(%1_ammoTemp), _weapon], 0]; - 0 + private _ambientTemperature = ambientTemperature select 0; + _unit setVariable [format [QGVAR(%1_ammoTemp), _weapon], _ambientTemperature]; + _ambientTemperature }; private _ammoTempVarName = format [QGVAR(%1_ammoTemp), _weapon]; -private _ammoTemperature = _unit getVariable [_ammoTempVarName, 0]; +private _ammoTemperature = _unit getVariable [_ammoTempVarName, ambientTemperature select 0]; // heat or cool the ammo if (_ammoTemperature < _barrelTemperature) then { @@ -47,58 +49,12 @@ if (_ammoTemperature < _barrelTemperature) then { _ammoTemperature = _barrelTemperature; }; -// check for cook off +// cookoff if too hot if (_ammoTemperature > (GUNPOWDER_IGNITION_TEMP * GVAR(cookoffCoef))) then { + [_unit, _weapon, _canUnjam, _jamType] call FUNC(cookoffWeapon); - // a weapon with a failure to fire or dud type jam will be unjammed from cooking off - // this is first so that the fired event from the cookoff can also cause a jam - private _jamType = _unit getVariable [format [QGVAR(%1_jamType), _weapon], "None"]; - if (_canUnjam && {_jamType in ["Fire","Dud"]}) then { - - [_unit, currentMuzzle _unit, true] call FUNC(clearJam); - - // clearJam will remove a dud round, but so will the forced fire, so give back the lost round and shoot it - if (_jamType isEqualTo "Dud") then { - private _ammo = _unit ammo _weapon; - _unit setAmmo [_weapon, _ammo + 1]; - }; - }; - - // get valid mode and muzzle for the main weapon, we don't want the cookoff to come from an underbarrel launcher - ([_weapon] call FUNC(getWeaponData)) params ["", "", "", "_modes", "_muzzle", "_reloadTime"]; - - // get an appropriate firemode and muzzle, cache the current muzzle - // trying to match firemodes and switching back to the cached muzzle will hide the change from the player and prevent unexpected mode/muzzle changes (going from full auto to semi auto, or from underbarrel GL to rifle for example) - private _muzzleCache = currentMuzzle _unit; - private _mode = currentWeaponMode _unit; - if !(_mode in _modes) then { - _mode = _modes select 0; - }; - - // delay cookoff to ensure any previous animation from a fired event is finished - [ - { - params ["_unit", "_muzzleCache", "_mode", "_muzzle"]; - - // fire the cookoff - _unit forceWeaponFire [_muzzle, _mode]; - - // switch back to the cached muzzle if required - if (_muzzle != _muzzleCache) then { - _unit selectWeapon _muzzleCache; - }; - - [ - [localize LSTRING(WeaponCookedOff)], - true // allows the hint to be overwritten by another hint, such as a jam or another cookoff - ] call CBA_fnc_notify; - }, - [_unit, _muzzleCache, _mode, _muzzle], - _reloadTime - ] call CBA_fnc_waitAndExecute; - - // if the cookoff happened then the next round should start at 0 - _ammoTemperature = 0; + // since a cookoff happened then the next round should start at the ambient temperature. + _ammoTemperature = ambientTemperature select 0; }; _unit setVariable [_ammoTempVarName, _ammoTemperature]; diff --git a/addons/overheating/functions/fnc_updateAmmoTemperatureThread.sqf b/addons/overheating/functions/fnc_updateAmmoTemperatureThread.sqf index 2b191102d5..4fff0f59db 100644 --- a/addons/overheating/functions/fnc_updateAmmoTemperatureThread.sqf +++ b/addons/overheating/functions/fnc_updateAmmoTemperatureThread.sqf @@ -15,6 +15,11 @@ * Public: No */ +// If the ace_overheating_cookoffCoef setting is set to 0 mid mission we want to exit right away or it will immediate cause all player weapons to cook off. +if (GVAR(cookoffCoef) isEqualTo 0) exitWith { + WARNING_1("'%1' has been set to 0 mid mission. Changing this setting requires mission restart.",GVAR(cookoffCoef)); +}; + private _currentWeapon = currentWeapon ACE_player; if ((_currentWeapon != "") && {_currentWeapon == primaryWeapon ACE_player || {_currentWeapon == handgunWeapon ACE_player}}) then { private _temperature = ACE_player getVariable [format [QGVAR(%1_temp), _currentWeapon], 0]; diff --git a/addons/overheating/functions/fnc_updateTemperature.sqf b/addons/overheating/functions/fnc_updateTemperature.sqf index 351323d54a..27d49cd2d1 100644 --- a/addons/overheating/functions/fnc_updateTemperature.sqf +++ b/addons/overheating/functions/fnc_updateTemperature.sqf @@ -9,7 +9,7 @@ * 2: Heat increment (J) * * Return Value: - * Current temperature + * New temperature * * Example: * [player, currentWeapon player, 2000] call ace_overheating_fnc_updateTemperature @@ -27,18 +27,23 @@ private _timeVarName = format [QGVAR(%1_time), _weapon]; private _temperature = _unit getVariable [_tempVarName, 0]; private _lastTime = _unit getVariable [_timeVarName, 0]; -private _barrelMass = _weapon call FUNC(getBarrelMass); +// keep track of weapons that have heat, so they can be set to ambient temperaure on killed/respawn +private _trackedWeapons = _unit getVariable [QGVAR(trackedWeapons), []]; +_trackedWeapons pushBackUnique _tempVarName; +_unit setVariable [QGVAR(trackedWeapons), _trackedWeapons]; // Calculate cooling +private _barrelMass = ([_weapon] call FUNC(getWeaponData)) select 7; _temperature = [_temperature, _barrelMass, CBA_missionTime - _lastTime] call FUNC(calculateCooling); TRACE_1("cooledTo",_temperature); // Calculate heating // Steel Heat Capacity = 466 J/(Kg.K) -_temperature = _temperature + _heatIncrement * GVAR(heatCoef) / (_barrelMass * 466); +_temperature = _temperature + _heatIncrement / (_barrelMass * 466); // Publish the temperature variable [_unit, _tempVarName, _temperature, TEMP_TOLERANCE] call EFUNC(common,setApproximateVariablePublic); + // Store the update time locally _unit setVariable [_timeVarName, CBA_missionTime]; diff --git a/addons/overheating/functions/script_component.hpp b/addons/overheating/functions/script_component.hpp index a8668e5b4f..7905d3b527 100644 --- a/addons/overheating/functions/script_component.hpp +++ b/addons/overheating/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\overheating\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\overheating\script_component.hpp" diff --git a/addons/overheating/initSettings.sqf b/addons/overheating/initSettings.sqf index 3b7f1618d4..b3eaf24029 100644 --- a/addons/overheating/initSettings.sqf +++ b/addons/overheating/initSettings.sqf @@ -15,7 +15,37 @@ private _category = format ["ACE %1", localize LSTRING(DisplayName)]; [LSTRING(heatCoef_displayName), LSTRING(heatCoef_description)], _category, [0, 5, 1, 2], - 1 + 1, + { + if (!GVAR(enabled)) exitWith {}; + TRACE_2("reseting cache",GVAR(heatCoef),count GVAR(cacheAmmoData)); + GVAR(cacheAmmoData) = createHashMap; + }, + false +] call CBA_fnc_addSetting; + +[ + QGVAR(coolingCoef), "SLIDER", + [LSTRING(coolingCoef_displayName), LSTRING(coolingCoef_description)], + _category, + [0, 5, 1, 2], + 1, + {}, + true +] call CBA_fnc_addSetting; + +[ + QGVAR(suppressorCoef), "SLIDER", + [LSTRING(suppressorCoef_displayName), LSTRING(suppressorCoef_description)], + _category, + [0, 5, 1, 2], + 1, + { + if (!GVAR(enabled)) exitWith {}; + TRACE_2("reseting cache",GVAR(suppressorCoef),count GVAR(cacheSilencerData)); + GVAR(cacheSilencerData) = createHashMap; + }, + false ] call CBA_fnc_addSetting; [ @@ -75,7 +105,7 @@ private _category = format ["ACE %1", localize LSTRING(DisplayName)]; [LSTRING(jamChanceCoef_displayName), LSTRING(jamChanceCoef_description)], _category, [0, 5, 1, 2], - 0 + 1 ] call CBA_fnc_addSetting; [ diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml index dc1cfed94b..63b53d3d39 100644 --- a/addons/overheating/stringtable.xml +++ b/addons/overheating/stringtable.xml @@ -48,9 +48,31 @@ Heating Coefficient + 過熱係数 + Coefficient de surchauffe + Коэффициент нагрева + Erhitzungs-Koeffizient + Współczynnik nagrzewania Coefficient for the amount of heat a weapon generates per shot.\nHigher value increases heat. + 射撃毎に武器が生み出す熱量の係数を設定します。\n高い値であるほど熱量が増加します。 + Coefficient impactant la quantité de chaleur générée par l'arme à chaque tir. + Коэффициент количества тепла, выделяемого оружием за выстрел. \nБольшие значения увеличивают нагрев. + Koeffizient für die Menge an Hitze, die eine Waffe pro Schuss erzeugt.\nHöhere Werte beschleunigen die Erhitzung. + Współczynnik wpływający na ilość ciepła generowanego przez broń przy każdym strzale. + + + Cooling Coefficient + + + Coefficient for how quickly a weapon cools down.\nHigher value increases cooling speed. + + + Suppressor Coefficient + + + Coefficient for how much additional heat is added from having a suppressor attached.\nHigher value increases heat, 0 means no additional heat from the suppressor. Display Text on Jam @@ -182,21 +204,51 @@ Distance for Effects and Dispersion + エフェクトと分散用距離 + Distance des effets et de la dispersion + Дистанция для Еффектов и Разброса + Abstand für Effekte und Dispersion + Odległość efektów i rozproszenia The distance, in meters, from the player within which overheating particle effects and dispersion are visible. + プレイヤーが過熱パーティクル エフェクトと分散を見えるようになる距離 (m) を設定します。 + Définit la distance en mètres, jusqu'à laquelle les effets de particules et la dispersion sont visibles. + Дистанция в метрах, с которой видны эффекты частиц и разброса при перегреве. + Der Abstand in Metern vom Spieler, in dem Überhitzungspartikeleffekte und Dispersion sichtbar sind. + Określa odległość w metrach, do której widoczne są efekty cząsteczkowe i rozproszenie. Heat Increases Fire Rate + 熱による連射速度上昇 + La chaleur augmente la cadence de tir + Нагрев увеличивает темп стрельбы + Hitze erhöht die Feuerrate + Ciepło zwiększa szybkostrzelność As weapons heat up, their rate of fire increases by up to 10%. + 武器が熱を帯び始めると、連射速度が 10% 上昇します。 + Lorsqu'une arme chauffe, sa cadence de tir peut augmenter jusqu'à 10%. + При нареве орудия, его темп стрельбы увеличивается до 10%. + Wenn sich Waffen erhitzen, erhöht sich ihre Feuerrate um bis zu 10%. + Gdy broń się nagrzewa, jej szybkostrzelność może wzrosnąć nawet o 10%. Jam Chance Coefficient + 弾詰まり係数 + Coefficient du risque d'enrayement + Шанс заклинивания оружия + Koeffizient für Ladehemmung + Szansa na zacięcie Coefficient for the chance that a weapon will jam from overheating.\nHigher value make jams more likely.\nSet to 0 to disable jamming. + 武器が過熱によって弾詰まりする確立係数を設定します。\n高い値では弾詰まりが起こりやすくなり、0 で弾詰まりが無効化されます。 + Coefficient modifiant les chances qu'une arme s'enraye à cause de la surchauffe.\nPlus la valeur est élevée, plus grand est le risque que l'arme s'enraye.\nDéfinir à 0 pour désactiver l'enrayement des armes. + Шанс заклинивания оружия от перегрева.\nБольшие значения повышают шанс заклинивания.\nУстановите 0 для отключения заклинивания. + Koeffizient für die Wahrscheinlichkeit, dass eine Waffe eine Ladehemmung hat.\Höhere Werte erhöhen die Wahrscheinlichkeit.\Auf 0 setzen, um Ladehemmungen zu deaktivieren. + Współczynnik zmieniający szansę na zacięcie się broni z powodu przegrzania.\nIm wyższa wartość, tym większe ryzyko zacięcia się broni.\nUstaw na 0, aby wyłączyć zacinanie się broni. Unjam Weapon on Reload @@ -232,9 +284,18 @@ Unjam on Barrel Swap + 銃身交換で弾詰まり解消 + Désenrayer l'arme au changement de canon + Замена ствола устраняет заклинивание оружия. + Usuń zacięcie przy wymianie lufy Controls whether swapping barrels clears a weapon jam. + 銃身を交換して弾詰まりの解消をできるようにします。 + Les armes se désenrayent lors d'un remplacement de canon. + Определяет, устраняет ли замена ствола заклинивание оружия. + Bestimmt, ob das Wechseln des Laufes eine Ladehemmung behebt. + Określa, czy wymiana lufy usuwa zacięcie się broni. Chance of Unjam Failing @@ -270,9 +331,19 @@ Overheating Cookoff Coefficient + 過熱誘爆係数 + Coefficient de l'auto-inflammation + Коеффициент возгорания при перегреве + Selbstzündungskoeffizient bei Überhitzung + Współczynnik samozapłonu Coefficient for the heat required for cookoffs to occur.\nHigher values require more heat to cookoff.\nSet to 0 to disable cookoff. + 過熱によって誘爆が起きる確立係数を設定します。\n高い値では誘爆までに必要な過熱量が増加し、0 で誘爆が無効化されます。 + Coefficient modifiant la quantité de chaleur requise pour que les munitions s'auto-inflamment dans la chambre de l'arme.\nPlus la valeur est élevée, plus l'arme doit être chaude pour que les munitions s'auto-inflamment.\nDéfinir sur 0 pour désactiver l'auto-inflammation. + Коеффициент нагрева, при котором возникает возгорание. + Koeffizient für die zum Selbstzünden erforderliche Hitze.\nHöhere Werte erfordern mehr Hitze zum Selbstzünden.\nAuf 0 setzen, um das Selbstzünden zu deaktivieren. + Współczynnik modyfikujący ilość ciepła wymaganego do samozapłonu amunicji w komorze broni.\nIm wyższa wartość, tym gorętsza musi być broń, aby amunicja uległa samozapłonowi\nUstaw 0, aby wyłączyć samozapłon. Spare barrel @@ -324,18 +395,43 @@ Weapon cooked off! + 武器が誘爆した! + Auto-inflammation des munitions ! + Оружие сдетонировало! + Munition durchgezündet! + Samozapłon amunicji! Failure to eject. + 排莢に失敗しました。 + Défaut d'éjection. + Не удалось достать. + Hülse wurde nicht ausgeworfen. + Nie udało się wyrzucić łuski. Failure to extract. + 排出に失敗しました。 + Défaut d'extraction. + Не удалось извлечь. + Hülse wurde nicht ausgezogen. + Nie udało się wyjąć łuski. Failure to feed. + 給弾に失敗しました。 + Défaut d'alimentation. + Не удалось подать. + Patrone wurde nicht zugeführt. + Nie udało się załadować naboju. Failure to fire. + 撃発に失敗しました。 + Défaut de tir. + Не удалось выстрелить. + Patrone wurde nicht gezündet! + Nie udało się strzelić. Clear jam @@ -512,21 +608,51 @@ Cool weapon with... + 次で武器を冷ます・・・ + Refroidir l'arme avec... + Охладить оружие с... + Waffe mit... kühlen + Schłódź broń za pomocą... Cooling %1 with %2. + %1 を %2 で冷ましています。 + Refroidissement du %1 avec %2... + Охлаждение %1 с %2. + Kühle %1 mit %2. + Chłodzenie %1 za pomocą %2. Cool weapon in water source. + 水源で武器を冷ます + Refroidir l'arme dans la source d'eau. + Охладить оружие в воде. + Kühle Waffe aus Wasserquelle. + Schłódź broń wodą. Cooling weapon in water source. + 水源で武器を冷ましています・・・ + Refroidissement de l'arme dans la source d'eau... + Охлаждение оружия в воде. + Waffe wird aus Wasserquelle gekühlt. + Chłodzenie broni wodą. Container doesn't have enough water. + 水源には十分な水量がありません。 + Le récipient ne contient pas suffisamment d'eau. + Воды недостаточно для охлаждения. + Behälter beinhaltet nicht genug Wasser. + Zbiornik nie ma wystarczającej ilości wody Weapon is cool enough the water has stopped boiling. + 武器が冷まりきり、水が沸騰していません。 + L'arme est suffisamment froide pour que l'eau ait cessé de bouillir. + Оружие достаточно холодное для прекращения кипения воды. + Waffe ist kalt genug, dass Wasser hat aufgehört zu kochen. + Broń jest wystarczająco schłodzona. Woda przestała się gotować. Temperature diff --git a/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf index 7e984f993c..2626004e87 100644 --- a/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf +++ b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf @@ -15,7 +15,7 @@ * 1: Range * 2: Damage * - * Example: + * Example: * ["cannon_125mm","Sh_125mm_APFSDS_T_Green","24Rnd_125mm_APFSDS_T_Green"] call ace_overpressure_fnc_cacheOverPressureValues * * Public: No diff --git a/addons/overpressure/functions/script_component.hpp b/addons/overpressure/functions/script_component.hpp index d66ac7aec3..0091d8048b 100644 --- a/addons/overpressure/functions/script_component.hpp +++ b/addons/overpressure/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\overpressure\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\overpressure\script_component.hpp" diff --git a/addons/overpressure/initSettings.sqf b/addons/overpressure/initSettings.sqf index df93c5ac3a..1ffff4f1aa 100644 --- a/addons/overpressure/initSettings.sqf +++ b/addons/overpressure/initSettings.sqf @@ -1,7 +1,9 @@ +private _category = [LELSTRING(common,categoryUncategorized), QUOTE(COMPONENT_BEAUTIFIED)]; + [ QGVAR(distanceCoefficient), "SLIDER", [LSTRING(distanceCoefficient_displayName), LSTRING(distanceCoefficient_toolTip)], - "ACE Uncategorized", - [-1, 10, 5, 1], + _category, + [-1, 10, 1, 1], 1 ] call CBA_fnc_addSetting; diff --git a/addons/parachute/CfgVehicles.hpp b/addons/parachute/CfgVehicles.hpp index 245d1a73be..f764494224 100644 --- a/addons/parachute/CfgVehicles.hpp +++ b/addons/parachute/CfgVehicles.hpp @@ -57,7 +57,7 @@ class CfgVehicles { MACRO_HASRESERVE }; class Bag_Base; - class B_Parachute:Bag_Base { + class B_Parachute: Bag_Base { MACRO_HASRESERVE }; class B_B_Parachute_02_F: B_Parachute { diff --git a/addons/parachute/XEH_preInit.sqf b/addons/parachute/XEH_preInit.sqf index ee8e31486b..cb77025b4d 100644 --- a/addons/parachute/XEH_preInit.sqf +++ b/addons/parachute/XEH_preInit.sqf @@ -8,23 +8,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -[ - QGVAR(hideAltimeter), - "CHECKBOX", - [LSTRING(HideAltimeter), LSTRING(HideAltimeter_tooltip)], - ["ACE Uncategorized", localize "str_dn_parachute"], - true, - false, - {[QGVAR(hideAltimeter), _this, false] call EFUNC(common,cbaSettings_settingChanged)} -] call CBA_fnc_addSetting; - -[ - QGVAR(failureChance), - "SLIDER", - LSTRING(FailureChance), - ["ACE Uncategorized", localize "str_dn_parachute"], - [0, 1, 0, 2, true], - 1 -] call CBA_fnc_addSetting; +#include "initSettings.sqf" ADDON = true; diff --git a/addons/parachute/initSettings.sqf b/addons/parachute/initSettings.sqf new file mode 100644 index 0000000000..0cfc3f8ca0 --- /dev/null +++ b/addons/parachute/initSettings.sqf @@ -0,0 +1,20 @@ +private _category = [LELSTRING(common,categoryUncategorized), localize "str_dn_parachute"]; + +[ + QGVAR(hideAltimeter), + "CHECKBOX", + [LSTRING(HideAltimeter), LSTRING(HideAltimeter_tooltip)], + _category, + true, + false, + {[QGVAR(hideAltimeter), _this, false] call EFUNC(common,cbaSettings_settingChanged)} +] call CBA_fnc_addSetting; + +[ + QGVAR(failureChance), + "SLIDER", + LSTRING(FailureChance), + _category, + [0, 1, 0, 2, true], + 1 +] call CBA_fnc_addSetting; diff --git a/addons/parachute/stringtable.xml b/addons/parachute/stringtable.xml index fd937d70e5..38108c2c5c 100644 --- a/addons/parachute/stringtable.xml +++ b/addons/parachute/stringtable.xml @@ -139,6 +139,7 @@ Chance de défaillance du parachute 開傘失敗率 Szansa na nieotwarcie się spadochronu + Wahrscheinlichkeit, dass ein Fallschirm sich nicht öffnet diff --git a/addons/pylons/XEH_postInit.sqf b/addons/pylons/XEH_postInit.sqf index 3e0b9bb4f0..ed45222d3c 100644 --- a/addons/pylons/XEH_postInit.sqf +++ b/addons/pylons/XEH_postInit.sqf @@ -17,7 +17,7 @@ GVAR(loadoutAction) = [ // create action private _cfgVehicle = configFile >> "CfgVehicles"; _vehicles findIf {getNumber (_cfgVehicle >> typeOf _x >> "transportAmmo") > 0} != -1; }; - + (_isRearmVehicle && {[ace_player, _target] call FUNC(canConfigurePylons)}) } ] call EFUNC(interact_menu,createAction); diff --git a/addons/quickmount/stringtable.xml b/addons/quickmount/stringtable.xml index 58c4f56e09..19669fa088 100644 --- a/addons/quickmount/stringtable.xml +++ b/addons/quickmount/stringtable.xml @@ -75,6 +75,7 @@ Tato možnost umožňuje rychle nastoupit do vozidla na které se díváte. Эта опция разрешает быстро залезть в транспорт, на который вы смотрите. Esta opción permite entrar rápidamente al vehículo al que estás mirando + Diese Option erlaubt es, schnell in das Fahrzeug, auf das der Spieler gerade zeigt, einzusteigen. Distance diff --git a/addons/realisticnames/stringtable.xml b/addons/realisticnames/stringtable.xml index 1d9eb9d4d2..235d29b979 100644 --- a/addons/realisticnames/stringtable.xml +++ b/addons/realisticnames/stringtable.xml @@ -1331,6 +1331,7 @@ Carga de demolición M183 (Lanzable) M183 Комплектный подрывной заряд (Бросаемый) Ładunek burzący M183 (Rzucany) + M183 Geballte Sprengladung (Werfbar) M112 Demolition Block @@ -1357,6 +1358,7 @@ Bloque de demolición M112 (Lanzable) M112 подрывной заряд (Бросаемый) Ładunek burzący M112 (Rzucany) + M112 Sprengladung (Werfbar) M67 Fragmentation Grenade @@ -1656,7 +1658,7 @@ FNX-45 Tactical (Verde) FNX-45 Tactical (Verde) FNX-45 Tactical (Yeşil) - FNX-45 タクティカル (緑) + FNX-45 タクティカル (グリーン) FNX-45 Tactical (초록) FNX-45戰術型手槍 (綠色) FNX-45战术型手枪 (绿色) @@ -1741,7 +1743,7 @@ RPG-32 (Verde) RPG-32 (Verde) RPG-32 (Yeşil) - RPG-32 (緑) + RPG-32 (グリーン) RPG-32 (초록) RPG-32"哈希姆"火箭發射器 (綠色) RPG-32"哈希姆"火箭发射器 (绿色) @@ -1803,7 +1805,7 @@ "麥士蒂索人"-M型反坦克導彈(棕色) "麦士蒂索人"-M型反坦克导弹(棕色) Metis-M (Marrone) - メチス-M (茶) + メチス-M (ブラウン) Metis-M (Brązowy) Metis-M (Marrom) Metis-M (hnědý) @@ -1818,7 +1820,7 @@ "麥士蒂索人"-M型反坦克導彈(綠色) "麦士蒂索人"-M型反坦克导弹(绿色) Metis-M (Verde) - メチス-M (緑) + メチス-M (グリーン) Metis-M (Zielony) Metis-M (Verde) Metis-M (zelený) @@ -1853,7 +1855,7 @@ MX (Чёрный) MX (Preto) MX (Nero) - MX (黒) + MX (ブラック) MX (검정) MX突擊步槍 (黑色) MX突击步枪 (黑色) @@ -1903,7 +1905,7 @@ MXC (Чёрный) MXC (Preto) MXC (Nero) - MXC (黒) + MXC (ブラック) MXC (검정) MXC卡賓步槍 (黑色) MXC卡宾步枪 (黑色) @@ -1953,7 +1955,7 @@ MX 3GL (Чёрный) MX 3GL (Preto) MX 3GL (Nero) - MX 3GL (黒) + MX 3GL (ブラック) MX 3GL (검정) MX突擊步槍 (3連裝榴彈-黑色) MX突击步枪 (3连装榴弹-黑色) @@ -2003,7 +2005,7 @@ MX LSW (Чёрный) MX LSW (Preto) MX LSW (Nero) - MX LSW (黒) + MX LSW (ブラック) MX LSW (검정) MX輕型機槍 (黑色) MX轻型机枪 (黑色) @@ -2171,7 +2173,7 @@ F2000 Tactical (Камо) F2000 Tactical (Camo) F2000 Tactical (Camo) - F2000 タクティカル (迷彩) + F2000 タクティカル (カモフラージュ) F2000 Tactical (위장) F2000戰術型突擊步槍 (迷彩) F2000战术型突击步枪 (迷彩) @@ -3912,6 +3914,7 @@ ELCAN SpecterOS (Zelený Hex) ELCAN SpecterOS (Yeşil Hex) ELCAN SpecterOS (Verde Hex) + ELCAN SpecterOS (Hex Grün) ELCAN SpecterOS (2D) @@ -3946,22 +3949,37 @@ ELCAN SpecterOS (Lush) ELCAN SpecterOS (Leśny) + ELCAN SpecterOS (Forêt) + ELCAN SpecterOS (緑地) + ELCAN SpecterOS (Grün) ELCAN SpecterOS (Arid) ELCAN SpecterOS (Jałowy) + ELCAN SpecterOS (Désert) + ELCAN SpecterOS (乾燥地帯) + ELCAN SpecterOS (Trocken) ELCAN SpecterOS 7.62 (Black) ELCAN SpecterOS 7.62 (Czarny) + ELCAN SpecterOS 7.62 (Noire) + ELCAN SpecterOS 7.62 (ブラック) + ELCAN SpecterOS 7.62 (Schwarz) ELCAN SpecterOS 7.62 (Lush) ELCAN SpecterOS 7.62 (Leśny) + ELCAN SpecterOS 7.62 (Forêt) + ELCAN SpecterOS 7.62 (緑地) + ELCAN SpecterOS 7.62 (Grün) ELCAN SpecterOS 7.62 (Arid) ELCAN SpecterOS 7.62 (Jałowy) + ELCAN SpecterOS 7.62 (Désert) + ELCAN SpecterOS 7.62 (乾燥地帯) + ELCAN SpecterOS 7.62 (Trocken) SIG BRAVO4 / ROMEO3 (Black) @@ -4021,6 +4039,7 @@ Nightforce NXS Nightforce NXS Nightforce NXS + Nightforce NXS Nightforce NXS (Green Hex) @@ -4035,6 +4054,7 @@ Nightforce NXS (Zelený Hex) Nightforce NXS (Yeşil Hex) Nightforce NXS (Verde Hex) + Nightforce NXS (Hex Grün) Nightforce NXS (Jungle) @@ -4064,6 +4084,7 @@ Nightforce NXS (2D) Nightforce NXS (2D) Nightforce NXS (2D) + Nightforce NXS (2D) Nightforce NXS (PIP) @@ -4078,6 +4099,7 @@ Nightforce NXS (PIP) Nightforce NXS (PIP) Nightforce NXS (PIP) + Nightforce NXS (BIB) US Optics MR-10 (Black) @@ -4092,6 +4114,7 @@ US Optics MR-10 (Černá) US Optics MR-10 (Siyah) US Optics MR-10 (Negra) + US Optics MR-10 (Schwarz) US Optics MR-10 (Khaki) @@ -4106,6 +4129,7 @@ US Optics MR-10 (Khaki) US Optics MR-10 (Haki) US Optics MR-10 (Caqui) + US Optics MR-10 (Khaki) US Optics MR-10 (Sand) @@ -4120,6 +4144,7 @@ US Optics MR-10 (Písková) US Optics MR-10 (Kum) US Optics MR-10 (Arena) + US Optics MR-10 (Sand) KAHLES Helia (Black) @@ -4134,6 +4159,7 @@ KAHLES Helia (Černá) KAHLES Helia (Siyah) KAHLES Helia (Negra) + KAHLES Helia (Schwarz) KAHLES Helia (Hex) @@ -4148,6 +4174,7 @@ KAHLES Helia (Hex) KAHLES Helia (Hex) KAHLES Helia (Hex) + KAHLES Helia (Hex) KAHLES Helia (Old) @@ -4162,6 +4189,7 @@ KAHLES Helia (Stará) KAHLES Helia (Eski) KAHLES Helia (Vieja) + KAHLES Helia (Alt) KAHLES Helia (Tan) @@ -4176,6 +4204,7 @@ KAHLES Helia (Žlutohnědá) KAHLES Helia (Tan) KAHLES Helia (Tan) + KAHLES Helia (Tan) Burris XTR II @@ -4190,6 +4219,7 @@ Burris XTR II Burris XTR II Burris XTR II + Burris XTR II Burris XTR II (Green Hex) @@ -4204,14 +4234,21 @@ Burris XTR II (Zelený Hex) Burris XTR II (Yeşil Hex) Burris XTR II (Verde Hex) + Burris XTR II (Hex Grün) Burris XTR II (Old) Burris XTR II (Stary) + Burris XTR II (Usée) + Burris XTR II (使い古し) + Burris XTR II (Alt) Burris XTR II (ASP-1 Kir) Burris XTR II (ASP-1 Kir) + Burris XTR II (ASP-1 Kir) + Burris XTR II (ASP-1 Kir) + Burris XTR II (ASP-1 Kir) EOTech XPS3 (Tan) @@ -4261,10 +4298,16 @@ EOTech XPS3 (Lush) EOTech XPS3 (Leśny) + EOTech XPS3 (Forêt) + EOTech XPS3 (緑地) + EOTech XPS3 (Grün) EOTech XPS3 (Arid) EOTech XPS3 (Jałowy) + EOTech XPS3 (Désert) + EOTech XPS3 (乾燥地帯) + EOTech XPS3 (Trocken) EOTech XPS3 SMG (Tan) @@ -4324,6 +4367,7 @@ IOR-Valdada Pitbull 2 IOR-Valdada Pitbull 2 IOR-Valdada Pitbull 2 + IOR-Valdada Pitbull 2 IOR-Valdada Pitbull 2 (2D) @@ -4338,6 +4382,7 @@ IOR-Valdada Pitbull 2 (2D) IOR-Valdada Pitbull 2 (2D) IOR-Valdada Pitbull 2 (2D) + IOR-Valdada Pitbull 2 (2D) IOR-Valdada Pitbull 2 (PIP) @@ -4352,6 +4397,7 @@ IOR-Valdada Pitbull 2 (PIP) IOR-Valdada Pitbull 2 (PIP) IOR-Valdada Pitbull 2 (PIP) + IOR-Valdada Pitbull 2 (BIB) Burris FastFire 2 @@ -4366,13 +4412,14 @@ Burris FastFire 2 Burris FastFire 2 Burris FastFire 2 + Burris FastFire 2 C-More Railway (Red) C-More Railway (Rot) C-More Railway (紅色) C-More Railway (红色) - C-More レイルウェイ (赤) + C-More レイルウェイ (レッド) C-More Railway (Rosso) C-More Railway (Czerwony) C-More Railway (Красный) @@ -4387,7 +4434,7 @@ C-More Railway (Grün) C-More Railway (綠色) C-More Railway (绿色) - C-More レイルウェイ (緑) + C-More レイルウェイ (グリーン) C-More Railway (Verde) C-More Railway (Zielony) C-More Railway (Зеленый) @@ -4402,7 +4449,7 @@ C-More Railway SMG (Rot) C-More Railway SMG (紅色) C-More Railway SMG (红色) - C-More レイルウェイ SMG (赤) + C-More レイルウェイ SMG (レッド) C-More Railway SMG (Rosso) C-More Railway SMG (Czerwony) C-More Railway SMG (Красный) @@ -4417,7 +4464,7 @@ C-More Railway SMG (Grün) C-More Railway SMG (綠色) C-More Railway SMG (绿色) - C-More レイルウェイ SMG (緑) + C-More レイルウェイ SMG (グリーン) C-More Railway SMG (Verde) C-More Railway SMG (Zielony) C-More Railway SMG (Зеленый) @@ -5018,7 +5065,7 @@ MSBS Grot MSBS Grot MSBS Grot - MSBS Grot + MSBS グロート MSBS Grot MSBS Grot @@ -5035,7 +5082,7 @@ MSBS Grot (Preto) MSBS Grot (검정) MSBS Grot(黑色) - MSBS Grot(ブラック) + MSBS グロート (ブラック) MSBS Grot (Siyah) MSBS Grot (Fekete) @@ -5052,7 +5099,7 @@ MSBS Grot (Camo) MSBS Grot (위장) MSBS Grot(迷彩) - MSBS Grot (カモフラージュ) + MSBS グロート (カモフラージュ) MSBS Grot (Kamuflaj) MSBS Grot (Terepmintás) @@ -5069,7 +5116,7 @@ MSBS Grot (Deserto) MSBS Grot (모래) MSBS Grot(沙色) - MSBS Grot (サンド) + MSBS グロート (サンド) MSBS Grot (Kum) MSBS Grot (Homok) @@ -5086,7 +5133,7 @@ MSBS Grot GL MSBS Grot GL MSBS Grot GL - MSBS Grot GL + MSBS グロート GL MSBS Grot GL MSBS Grot GL @@ -5103,7 +5150,7 @@ MSBS Grot GL (Preto) MSBS Grot GL (검정) MSBS Grot GL(黑色) - MSBS Grot GL(ブラック) + MSBS グロート GL(ブラック) MSBS Grot GL (Siyah) MSBS Grot GL (Fekete) @@ -5120,7 +5167,7 @@ MSBS Grot GL (Camo) MSBS Grot GL (위장) MSBS Grot GL(迷彩) - MSBS Grot GL (カモフラージュ) + MSBS グロート GL (カモフラージュ) MSBS Grot GL (Kamuflaj) MSBS Grot GL (Terepmintás) @@ -5137,7 +5184,7 @@ MSBS Grot GL (Deserto) MSBS Grot GL (모래) MSBS Grot GL(沙色) - MSBS Grot GL (サンド) + MSBS グロート GL (サンド) MSBS Grot GL (Kum) MSBS Grot GL (Homok) @@ -5154,7 +5201,7 @@ MSBS Grot MR MSBS Grot MR MSBS Grot MR - MSBS Grot MR + MSBS グロート MR MSBS Grot MR MSBS Grot MR @@ -5171,7 +5218,7 @@ MSBS Grot MR (Preto) MSBS Grot MR (검정) MSBS Grot MR(黑色) - MSBS Grot MR (ブラック) + MSBS グロート MR (ブラック) MSBS Grot MR (Siyah) MSBS Grot MR (Fekete) @@ -5188,7 +5235,7 @@ MSBS Grot MR (Camo) MSBS Grot MR (위장) MSBS Grot MR(迷彩) - MSBS Grot MR (カモフラージュ) + MSBS グロート MR (カモフラージュ) MSBS Grot MR (Kamuflaj) MSBS Grot MR (Terepmintás) @@ -5205,7 +5252,7 @@ MSBS Grot MR (Deserto) MSBS Grot MR (모래) MSBS Grot MR(沙色) - MSBS Grot MR (サンド) + MSBS グロート MR (サンド) MSBS Grot MR (Kum) MSBS Grot MR (Homok) @@ -5222,7 +5269,7 @@ MSBS Grot SG MSBS Grot SG MSBS Grot SG - MSBS Grot SG + MSBS グロート SG MSBS Grot SG MSBS Grot SG @@ -5239,7 +5286,7 @@ MSBS Grot SG (Preto) MSBS Grot SG (검정) MSBS Grot SG(黑色) - MSBS Grot SG(ブラック) + MSBS グロート SG (ブラック) MSBS Grot SG (Siyah) MSBS Grot SG (Fekete) @@ -5256,7 +5303,7 @@ MSBS Grot SG (Camo) MSBS Grot SG (위장) MSBS Grot SG(迷彩) - MSBS Grot SG (カモフラージュ) + MSBS グロート SG (カモフラージュ) MSBS Grot SG (Kamuflaj) MSBS Grot SG (Terepmintás) @@ -5273,7 +5320,7 @@ MSBS Grot SG (Deserto) MSBS Grot SG (모래) MSBS Grot SG(沙色) - MSBS Grot SG (サンド) + MSBS グロート SG (サンド) MSBS Grot SG (Kum) MSBS Grot SG (Homok) diff --git a/addons/rearm/CfgVehicles.hpp b/addons/rearm/CfgVehicles.hpp index 98a4f5a3bd..221b01b249 100644 --- a/addons/rearm/CfgVehicles.hpp +++ b/addons/rearm/CfgVehicles.hpp @@ -143,17 +143,17 @@ class CfgVehicles { }; class ReammoBox_F; - class NATO_Box_Base: ReammoBox_F{}; + class NATO_Box_Base: ReammoBox_F {}; class Box_NATO_AmmoVeh_F: NATO_Box_Base { transportAmmo = 0; GVAR(defaultSupply) = 1200; }; - class EAST_Box_Base: ReammoBox_F{}; + class EAST_Box_Base: ReammoBox_F {}; class Box_East_AmmoVeh_F: EAST_Box_Base { transportAmmo = 0; GVAR(defaultSupply) = 1200; }; - class IND_Box_Base: ReammoBox_F{}; + class IND_Box_Base: ReammoBox_F {}; class Box_IND_AmmoVeh_F: IND_Box_Base { transportAmmo = 0; GVAR(defaultSupply) = 1200; diff --git a/addons/rearm/XEH_preStart.sqf b/addons/rearm/XEH_preStart.sqf index 022888575e..b092699f9b 100644 --- a/addons/rearm/XEH_preStart.sqf +++ b/addons/rearm/XEH_preStart.sqf @@ -1,3 +1,9 @@ #include "script_component.hpp" #include "XEH_PREP.hpp" + +// Test binarization one time at startup - ref https://github.com/acemod/ACE3/pull/8093 +private _test = getText (configFile >> "Cfg3DEN" >> "Object" >> "AttributeCategories" >> "ace_attributes" >> "Attributes" >> "ace_rearm_rearmCargo" >> "defaultValue"); +if (!("else {" in _test)) then { + ERROR("3den attribute has ERROR [check binarization]"); +}; diff --git a/addons/rearm/functions/fnc_canStoreAmmo.sqf b/addons/rearm/functions/fnc_canStoreAmmo.sqf index b0f22b6e07..af503011dd 100644 --- a/addons/rearm/functions/fnc_canStoreAmmo.sqf +++ b/addons/rearm/functions/fnc_canStoreAmmo.sqf @@ -17,7 +17,7 @@ */ params ["_truck", "_unit"]; - + (alive _unit) && {!isNull (_unit getVariable [QGVAR(dummy), objNull])} && {alive _truck} diff --git a/addons/rearm/functions/fnc_getNeedRearmMagazines.sqf b/addons/rearm/functions/fnc_getNeedRearmMagazines.sqf index e49729eac7..af1ae10d51 100644 --- a/addons/rearm/functions/fnc_getNeedRearmMagazines.sqf +++ b/addons/rearm/functions/fnc_getNeedRearmMagazines.sqf @@ -66,7 +66,7 @@ private _turrets = [_vehicle] call FUNC(getAllRearmTurrets); if (_turretPath isEqualTo _turretCurrent) then { _magazineClasses pushBackUnique _className; }; - } forEach (magazinesAllTurrets _vehicle); + } forEach (magazinesAllTurrets _vehicle); } else { _magazineClasses = [_vehicle, _turretPath] call FUNC(getTurretConfigMagazines); _magazineClasses = _magazineClasses arrayIntersect _magazineClasses; diff --git a/addons/rearm/functions/fnc_isSource.sqf b/addons/rearm/functions/fnc_isSource.sqf index c79c78308c..93f45be6a1 100644 --- a/addons/rearm/functions/fnc_isSource.sqf +++ b/addons/rearm/functions/fnc_isSource.sqf @@ -21,7 +21,7 @@ params [ ]; if ((_target getVariable [QGVAR(currentSupply), 0]) < 0) exitWith {false}; - + private _vehCfg = configOf _target; private _vanillaCargoConfig = getNumber (_vehCfg >> "transportAmmo"); private _rearmCargoConfig = getNumber (_vehCfg >> QGVAR(defaultSupply)); diff --git a/addons/rearm/functions/fnc_makeSource.sqf b/addons/rearm/functions/fnc_makeSource.sqf index 36f3fba553..c697925380 100644 --- a/addons/rearm/functions/fnc_makeSource.sqf +++ b/addons/rearm/functions/fnc_makeSource.sqf @@ -30,7 +30,7 @@ params [ ["_addToCurrent", false, [false]] ]; TRACE_3("makeSource",_source,_rearmCargo,_addToCurrent); - + if (isNull _source) exitWith {}; private _currentSupply = if (_addToCurrent) then { diff --git a/addons/rearm/initSettings.sqf b/addons/rearm/initSettings.sqf index 08494ae582..c2d6136bd7 100644 --- a/addons/rearm/initSettings.sqf +++ b/addons/rearm/initSettings.sqf @@ -1,5 +1,3 @@ -// CBA Settings [ADDON: ace_rearm]: - [ QGVAR(level), "LIST", [LSTRING(RearmSettings_level_DisplayName), LSTRING(RearmSettings_level_Description)], diff --git a/addons/recoil/functions/script_component.hpp b/addons/recoil/functions/script_component.hpp index 24cb1ba776..62bacef4b6 100644 --- a/addons/recoil/functions/script_component.hpp +++ b/addons/recoil/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\recoil\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\recoil\script_component.hpp" diff --git a/addons/refuel/initSettings.sqf b/addons/refuel/initSettings.sqf index deb6c2adee..160c3ef22d 100644 --- a/addons/refuel/initSettings.sqf +++ b/addons/refuel/initSettings.sqf @@ -1,5 +1,3 @@ -// CBA Settings [ADDON: ace_refuel]: - [ QGVAR(rate), "SLIDER", [LSTRING(RefuelSettings_speed_DisplayName), LSTRING(RefuelSettings_speed_Description)], diff --git a/addons/reload/CfgMagazines.hpp b/addons/reload/CfgMagazines.hpp index 965bc3c225..e7a7d8e041 100644 --- a/addons/reload/CfgMagazines.hpp +++ b/addons/reload/CfgMagazines.hpp @@ -12,6 +12,9 @@ class CfgMagazines { class 150Rnd_93x64_Mag: CA_Magazine { // Mag for HK121 (MMG_01) [DLC Opfor Heavy Gunner] ACE_isBelt = 1; }; + class 10Rnd_93x64_DMR_05_Mag: 150Rnd_93x64_Mag { // Mag for Cyrus (DMR_05) [DLC Opfor Sharpshooter] + ACE_isBelt = 0; + }; class 130Rnd_338_Mag: CA_Magazine { // Mag for LWMMG (MMG_02) [DLC Blufor Heavy Gunner] ACE_isBelt = 1; }; diff --git a/addons/reload/functions/script_component.hpp b/addons/reload/functions/script_component.hpp index 572f1fca84..a95b9c989a 100644 --- a/addons/reload/functions/script_component.hpp +++ b/addons/reload/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\reload\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\reload\script_component.hpp" diff --git a/addons/reload/stringtable.xml b/addons/reload/stringtable.xml index 07d8cd605a..478c512200 100644 --- a/addons/reload/stringtable.xml +++ b/addons/reload/stringtable.xml @@ -44,6 +44,7 @@ Sempre mostrar a opção de checar a própria munição Всегда показывать проверку боеприпасов в меню взаимодействия с собой Mostrar siempre la autointeracción de comprobar munición + Zeige immer die Selbstinteraktion zur Prüfung der Munition an. Shows check ammo self interaction even when not in static weapons. @@ -56,6 +57,7 @@ Mostra a opção de ver sua própria munição mesmo quando não em armas estáticas. Показывать проверку боеприпасов даже вне стационарного орудия Mostrar la comprobación de la munición incluso cuando no está en armas estáticas + Zeigt die Selbstinteraktion der Munitionsüberprüfung an, auch wenn nicht in statischen Waffen. Check Ammo diff --git a/addons/reloadlaunchers/functions/script_component.hpp b/addons/reloadlaunchers/functions/script_component.hpp index 9c129f36b1..18d4eefebd 100644 --- a/addons/reloadlaunchers/functions/script_component.hpp +++ b/addons/reloadlaunchers/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\reloadlaunchers\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\reloadlaunchers\script_component.hpp" diff --git a/addons/repair/CfgEden.hpp b/addons/repair/CfgEden.hpp index 3edc9420b0..d9df86a036 100644 --- a/addons/repair/CfgEden.hpp +++ b/addons/repair/CfgEden.hpp @@ -17,7 +17,7 @@ class Cfg3DEN { attributeLoad = "(_this controlsGroupCtrl 100) lbSetCurSel (((_value + 1) min 3) max 0);"; attributeSave = "(lbCurSel (_this controlsGroupCtrl 100)) - 1"; class Controls: Controls { - class Title: Title{}; + class Title: Title {}; class Value: ctrlToolbox { idc = 100; style = "0x02"; diff --git a/addons/repair/CfgVehicles.hpp b/addons/repair/CfgVehicles.hpp index 1c9a44d4e5..6d7a053df2 100644 --- a/addons/repair/CfgVehicles.hpp +++ b/addons/repair/CfgVehicles.hpp @@ -106,7 +106,6 @@ class CfgVehicles { class values { class None { name = "None"; value = 0; default = 1;}; class ToolKit { name = "ToolKit"; value = 1; }; - class gm_repairkit_01 { name = "GM Repair Kit"; value = 1; }; }; }; }; @@ -328,6 +327,7 @@ class CfgVehicles { class ACE_Track: ACE_RepairItem_Base { EGVAR(cargo,size) = 2; EGVAR(cargo,canLoad) = 1; + EGVAR(cargo,noRename) = 1; author = "Hawkins"; scope = 2; model = QPATHTOF(data\ace_track.p3d); @@ -358,6 +358,7 @@ class CfgVehicles { class ACE_Wheel: ACE_RepairItem_Base { EGVAR(cargo,size) = 1; EGVAR(cargo,canLoad) = 1; + EGVAR(cargo,noRename) = 1; author = "Hawkins"; scope = 2; model = QPATHTOF(data\ace_wheel.p3d); diff --git a/addons/repair/XEH_PREP.hpp b/addons/repair/XEH_PREP.hpp index 7c2e5a1f15..45fcb0206b 100644 --- a/addons/repair/XEH_PREP.hpp +++ b/addons/repair/XEH_PREP.hpp @@ -17,6 +17,7 @@ PREP(doReplaceWheel); PREP(getClaimObjects); PREP(getHitPointString); PREP(getPostRepairDamage); +PREP(getRepairItems); PREP(getWheelHitPointsWithSelections); PREP(hasItems); PREP(isEngineer); diff --git a/addons/repair/XEH_preInit.sqf b/addons/repair/XEH_preInit.sqf index 216a16fcf7..2fd97fbf01 100644 --- a/addons/repair/XEH_preInit.sqf +++ b/addons/repair/XEH_preInit.sqf @@ -8,6 +8,8 @@ PREP_RECOMPILE_END; #include "initSettings.sqf" +GVAR(allToolKits) = call (uiNamespace getVariable QGVAR(allToolKits)); + ["ACE_RepairItem_Base", "killed", { params ["_object"]; diff --git a/addons/repair/XEH_preStart.sqf b/addons/repair/XEH_preStart.sqf index 022888575e..a01df24b79 100644 --- a/addons/repair/XEH_preStart.sqf +++ b/addons/repair/XEH_preStart.sqf @@ -1,3 +1,8 @@ #include "script_component.hpp" #include "XEH_PREP.hpp" + +uiNamespace setVariable [ + QGVAR(allToolKits), + compileFinal str (QUOTE(getNumber (_x >> 'ItemInfo' >> 'type') == TYPE_TOOLKIT) configClasses (configFile >> "CfgWeapons") apply {configName _x}) +]; diff --git a/addons/repair/dev/draw_showRepairInfo.sqf b/addons/repair/dev/draw_showRepairInfo.sqf index b5516d6b98..52b180392f 100644 --- a/addons/repair/dev/draw_showRepairInfo.sqf +++ b/addons/repair/dev/draw_showRepairInfo.sqf @@ -14,7 +14,7 @@ addMissionEventHandler ["Draw3D", { ([cursorObject] call FUNC(getWheelHitPointsWithSelections)) params ["_wheelHitPoints", "_wheelHitSelections"]; private _output = []; - + { private _selection = _x; private _hitpoint = _hitPoints select _forEachIndex; diff --git a/addons/repair/functions/fnc_canRepair.sqf b/addons/repair/functions/fnc_canRepair.sqf index e6873649cb..11a5dea209 100644 --- a/addons/repair/functions/fnc_canRepair.sqf +++ b/addons/repair/functions/fnc_canRepair.sqf @@ -37,12 +37,7 @@ private _engineerRequired = if (isNumber (_config >> "requiredEngineer")) then { }; if !([_caller, _engineerRequired] call FUNC(isEngineer)) exitWith {false}; -// Items can be an array of required items or a string to a missionNamespace variable -private _items = if (isArray (_config >> "items")) then { - getArray (_config >> "items"); -} else { - missionNamespace getVariable [getText (_config >> "items"), []] -}; +private _items = _config call FUNC(getRepairItems); if (count _items > 0 && {!([_caller, _items] call FUNC(hasItems))}) exitWith {false}; private _return = true; diff --git a/addons/repair/functions/fnc_getPostRepairDamage.sqf b/addons/repair/functions/fnc_getPostRepairDamage.sqf index cf0ff923bd..0eac151e45 100644 --- a/addons/repair/functions/fnc_getPostRepairDamage.sqf +++ b/addons/repair/functions/fnc_getPostRepairDamage.sqf @@ -7,7 +7,7 @@ * 0: Unit that does the repairing * * Return Value: - * 0: Rpair Damage Threshold + * 0: Repair Damage Threshold * * Example: * [unit] call ace_repair_fnc_getPostRepairDamage diff --git a/addons/repair/functions/fnc_getRepairItems.sqf b/addons/repair/functions/fnc_getRepairItems.sqf new file mode 100644 index 0000000000..809a6a5da7 --- /dev/null +++ b/addons/repair/functions/fnc_getRepairItems.sqf @@ -0,0 +1,37 @@ +#include "script_component.hpp" +/* + * Author: veteran29 + * Returns the items required for repair. + * + * Arguments: + * 0: Repair config + * + * Return Value: + * 0: Required items + * + * Example: + * [_config] call ace_repair_fnc_getRepairItems + * + * Public: No + */ + +params [["_config", configNull]]; + +// Items can be an array of required items or a string to a missionNamespace variable +private _items = if (isArray (_config >> "items")) then { + getArray (_config >> "items"); +} else { + missionNamespace getVariable [getText (_config >> "items"), []] +}; + +// handle "any toolkit" setting +if (_items isEqualTo [ANY_TOOLKIT_FAKECLASS]) then { + TRACE_1("any toolkit",_items); + + // array element inside items array means "any of these items" + _items = [GVAR(allToolKits)]; +}; + +TRACE_2("get repair items",_config,_items); + +_items diff --git a/addons/repair/functions/fnc_hasItems.sqf b/addons/repair/functions/fnc_hasItems.sqf index 9b54647c8d..a27f9c3202 100644 --- a/addons/repair/functions/fnc_hasItems.sqf +++ b/addons/repair/functions/fnc_hasItems.sqf @@ -29,4 +29,4 @@ private _return = true; }; } forEach _items; -_return; +_return diff --git a/addons/repair/functions/fnc_modifyInteraction.sqf b/addons/repair/functions/fnc_modifyInteraction.sqf index 235afd9223..2edf515bac 100644 --- a/addons/repair/functions/fnc_modifyInteraction.sqf +++ b/addons/repair/functions/fnc_modifyInteraction.sqf @@ -24,4 +24,4 @@ params ["_target", "", "", "_actionData"]; private _color = ceil linearConversion [0, 1, damage _target, 0, 8, true]; TRACE_2("Modifying icon color",_target,_color); (_actionData select 2) set [1, DAMAGE_COLOR_SCALE select _color]; - + diff --git a/addons/repair/functions/fnc_repair.sqf b/addons/repair/functions/fnc_repair.sqf index 12cc2c3946..51fdea90fe 100644 --- a/addons/repair/functions/fnc_repair.sqf +++ b/addons/repair/functions/fnc_repair.sqf @@ -43,12 +43,7 @@ if ((isEngineOn _target) && {!GVAR(autoShutOffEngineWhenStartingRepair)}) exitWi false }; -// Items can be an array of required items or a string to a missionNamespace variable -private _items = if (isArray (_config >> "items")) then { - getArray (_config >> "items"); -} else { - missionNamespace getVariable [getText (_config >> "items"), []] -}; +private _items = _config call FUNC(getRepairItems); if (count _items > 0 && {!([_caller, _items] call FUNC(hasItems))}) exitWith {false}; private _return = true; @@ -137,7 +132,7 @@ if (_callbackProgress == "") then { _callbackProgress = { (_this select 0) params ["_caller", "_target", "", "", "", "", "_claimObjectsAvailable"]; ( - (alive _target) && + (alive _target) && {(abs speed _target) < 1} && // make sure vehicle doesn't drive off {_claimObjectsAvailable findIf {!alive _x || {_x getVariable [QEGVAR(common,owner), objNull] isNotEqualTo _caller}} == -1} // make sure claim objects are still available ) diff --git a/addons/repair/initSettings.sqf b/addons/repair/initSettings.sqf index 5f2f98a763..fddd22b541 100644 --- a/addons/repair/initSettings.sqf +++ b/addons/repair/initSettings.sqf @@ -94,7 +94,7 @@ "LIST", [LSTRING(WheelRepairRequiredItems_DisplayName), LSTRING(WheelRepairRequiredItems_Description)], [localize ELSTRING(OptionsMenu,CategoryLogistics), localize "str_state_repair"], - [[[], ["ToolKit"]], ["STR_A3_None", "STR_A3_CfgWeapons_Toolkit0"], 0], + [[[], [ANY_TOOLKIT_FAKECLASS]], ["STR_A3_None", "STR_A3_CfgWeapons_Toolkit0"], 0], true ] call CBA_fnc_addSetting; @@ -103,7 +103,7 @@ "LIST", [LSTRING(MiscRepairRequiredItems_DisplayName), LSTRING(MiscRepairRequiredItems_Description)], [localize ELSTRING(OptionsMenu,CategoryLogistics), localize "str_state_repair"], - [[[], ["ToolKit"]], ["STR_A3_None", "STR_A3_CfgWeapons_Toolkit0"], 1], + [[[], [ANY_TOOLKIT_FAKECLASS]], ["STR_A3_None", "STR_A3_CfgWeapons_Toolkit0"], 1], true ] call CBA_fnc_addSetting; @@ -112,7 +112,7 @@ "LIST", [LSTRING(FullRepairRequiredItems_DisplayName), LSTRING(FullRepairRequiredItems_Description)], [localize ELSTRING(OptionsMenu,CategoryLogistics), localize "str_state_repair"], - [[[], ["ToolKit"]], ["STR_A3_None", "STR_A3_CfgWeapons_Toolkit0"], 1], + [[[], [ANY_TOOLKIT_FAKECLASS]], ["STR_A3_None", "STR_A3_CfgWeapons_Toolkit0"], 1], true ] call CBA_fnc_addSetting; diff --git a/addons/repair/script_component.hpp b/addons/repair/script_component.hpp index 7ec3be3233..35ab2f4f8c 100644 --- a/addons/repair/script_component.hpp +++ b/addons/repair/script_component.hpp @@ -19,3 +19,5 @@ #define TRACK_HITPOINTS ["hitltrack", "hitrtrack"] #define DAMAGE_COLOR_SCALE ["#FFFFFF", "#FFFF7E", "#FFEC4D", "#FFD52C", "#FCB121", "#FF9916", "#FF7D16", "#FF4400", "#FF0000"] + +#define ANY_TOOLKIT_FAKECLASS QGVAR(anyToolKit) diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index 3eb9fdc951..9009b15537 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -263,6 +263,11 @@ Boost engineer training when in repair vehicles or facilities. Untrained becomes engineer, engineer becomes advanced engineer. + Améliore les compétences en ingénierie des unités en fonction du lieu où elles se trouvent ; notamment dans les véhicules de réparation ou les ateliers.\nUn soldat non formé devient ingénieur, un ingénieur devient ingénieur avancé. + 修理車両か施設内では工兵能力を上昇させます。兵士は工兵になり、工兵は上級工兵になります。 + Повысьте подготовку инженеров при ремонте транспортных средств или объектов. Нетренированный становится инженером, инженер становится продвинутым инженером. + Steigert die Ausbildung von Pionieren, wenn Sie sich in Reparaturfahrzeugen oder -einrichtungen befinden. Aus Ungelerntem wird Pionier, aus Pionier wird ein fortgeschrittener Pionier. + Zwiększ wyszkolenie inżynierów w pojazdach i budynkach naprawczych. Niewyszkoleni zostają inżynierami, inżynierowie zostają zaawansowanymi inżynierami. Full Repair Locations diff --git a/addons/respawn/functions/script_component.hpp b/addons/respawn/functions/script_component.hpp index eeb32a47bd..d2a247f08c 100644 --- a/addons/respawn/functions/script_component.hpp +++ b/addons/respawn/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\respawn\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\respawn\script_component.hpp" diff --git a/addons/safemode/functions/script_component.hpp b/addons/safemode/functions/script_component.hpp index a25fbfa4c7..eda6cd66ff 100644 --- a/addons/safemode/functions/script_component.hpp +++ b/addons/safemode/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\safemode\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\safemode\script_component.hpp" diff --git a/addons/sandbag/functions/script_component.hpp b/addons/sandbag/functions/script_component.hpp index 1d6f10c806..9964e2ea35 100644 --- a/addons/sandbag/functions/script_component.hpp +++ b/addons/sandbag/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\sandbag\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\sandbag\script_component.hpp" diff --git a/addons/scopes/ACE_Settings.hpp b/addons/scopes/ACE_Settings.hpp index c1f767f1ae..c3aa151de7 100644 --- a/addons/scopes/ACE_Settings.hpp +++ b/addons/scopes/ACE_Settings.hpp @@ -6,7 +6,7 @@ class ACE_Settings { class GVAR(forceUseOfAdjustmentTurrets) { movedToSQF = 1; }; - + // Auto corrects the zeroing in both vanilla- and advanced ballistics class GVAR(correctZeroing) { movedToSQF = 1; @@ -19,7 +19,7 @@ class ACE_Settings { class GVAR(defaultZeroRange) { movedToSQF = 1; }; - + // Only relevant when advanced ballistics is enabled class GVAR(zeroReferenceTemperature) { movedToSQF = 1; @@ -33,11 +33,11 @@ class ACE_Settings { class GVAR(deduceBarometricPressureFromTerrainAltitude) { movedToSQF = 1; }; - + class GVAR(useLegacyUI) { movedToSQF = 1; }; - + class GVAR(simplifiedZeroing) { movedToSQF = 1; }; diff --git a/addons/scopes/CfgWeapons.hpp b/addons/scopes/CfgWeapons.hpp index de712b378f..8b6650cfc0 100644 --- a/addons/scopes/CfgWeapons.hpp +++ b/addons/scopes/CfgWeapons.hpp @@ -5,55 +5,55 @@ class Mode_FullAuto; class CfgWeapons { class ItemCore; class InventoryOpticsItem_Base_F; - + class optic_Yorris: ItemCore { ACE_ScopeHeightAboveRail = 2.77224; }; - + class optic_MRD: ItemCore { ACE_ScopeHeightAboveRail = 2.8; }; - + class optic_Aco: ItemCore { ACE_ScopeHeightAboveRail = 3.69248; }; - + class optic_ACO_grn: ItemCore { ACE_ScopeHeightAboveRail = 3.69248; }; - + class optic_ACO_grn_smg: ItemCore { ACE_ScopeHeightAboveRail = 3.69248; }; - + class optic_ACO_smg: ItemCore { ACE_ScopeHeightAboveRail = 3.69248; }; - + class optic_Holosight: ItemCore { ACE_ScopeHeightAboveRail = 4.66933; }; - + class optic_Holosight_smg: ItemCore { ACE_ScopeHeightAboveRail = 4.66933; }; - + class optic_Arco: ItemCore { ACE_ScopeHeightAboveRail = 4.89287; }; - + class optic_ERCO_blk_F: optic_Arco { ACE_ScopeHeightAboveRail = 3.48836; }; - + class optic_Hamr: ItemCore { ACE_ScopeHeightAboveRail = 4.48584; }; - + class optic_MRCO: ItemCore { ACE_ScopeHeightAboveRail = 3.88405; }; - + class optic_Nightstalker: ItemCore { ACE_ScopeHeightAboveRail = 5.54325; ACE_ScopeAdjust_Vertical[] = {-4, 30}; @@ -69,7 +69,7 @@ class CfgWeapons { }; }; }; - + class optic_NVS: ItemCore { ACE_ScopeHeightAboveRail = 5.54325; ACE_ScopeAdjust_Vertical[] = {-4, 30}; @@ -85,7 +85,7 @@ class CfgWeapons { }; }; }; - + class optic_TWS: ItemCore { ACE_ScopeHeightAboveRail = 5.52874; ACE_ScopeAdjust_Vertical[] = {-4, 30}; @@ -101,7 +101,7 @@ class CfgWeapons { }; }; }; - + class optic_LRPS: ItemCore { ACE_ScopeHeightAboveRail = 4.2098; ACE_ScopeAdjust_Vertical[] = {0, 27}; @@ -308,7 +308,7 @@ class CfgWeapons { }; class arifle_katiba_Base_F: Rifle_Base_F {}; - + class arifle_Katiba_F: arifle_katiba_Base_F { ACE_RailHeightAboveBore = 5.75468; ACE_IronSightBaseAngle = 0.011459; @@ -337,7 +337,7 @@ class CfgWeapons { }; class SDAR_base_F: Rifle_Base_F {}; - + class arifle_SDAR_F: SDAR_base_F { ACE_RailHeightAboveBore = 0; ACE_IronSightBaseAngle = -0.042972; @@ -448,7 +448,7 @@ class CfgWeapons { class MMG_01_hex_F: MMG_01_base_F { ACE_RailHeightAboveBore = 4.73961; ACE_IronSightBaseAngle = -0.003438; - }; + }; class MMG_02_camo_F: MMG_02_base_F { ACE_RailHeightAboveBore = 5.01913; ACE_IronSightBaseAngle = 0.010886; diff --git a/addons/scopes/XEH_PREP.hpp b/addons/scopes/XEH_PREP.hpp index 58b4e494f2..70af49a716 100644 --- a/addons/scopes/XEH_PREP.hpp +++ b/addons/scopes/XEH_PREP.hpp @@ -6,7 +6,7 @@ PREP(calculateZeroAngleCorrection); PREP(canAdjustZero); PREP(canResetZero); PREP(firedEH); -PREP(getBaseAngle); +PREP(getBaseAngle); PREP(getBoreHeight); PREP(getCurrentZeroRange); PREP(getOptics); diff --git a/addons/scopes/functions/fnc_firedEH.sqf b/addons/scopes/functions/fnc_firedEH.sqf index 8870592885..6508050679 100644 --- a/addons/scopes/functions/fnc_firedEH.sqf +++ b/addons/scopes/functions/fnc_firedEH.sqf @@ -30,7 +30,7 @@ TRACE_1("Adjusting With",_zeroing); if (GVAR(correctZeroing) || GVAR(simplifiedZeroing)) then { private _advancedBallistics = missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]; private _baseAngle = (_unit getVariable [QGVAR(baseAngle), [0,0,0]]) select _weaponIndex; - private _boreHeight = (_unit getVariable [QGVAR(boreHeight), [0,0,0]]) select _weaponIndex; + private _boreHeight = (_unit getVariable [QGVAR(boreHeight), [0,0,0]]) select _weaponIndex; private _oldZeroRange = currentZeroing _unit; private _newZeroRange = [_unit] call FUNC(getCurrentZeroRange); private _zeroCorrection = missionNamespace getVariable format[QGVAR(%1_%2_%3_%4_%5_%6_%7), _oldZeroRange, _newZeroRange, _boreHeight, _weapon, _ammo, _magazine, _advancedBallistics]; diff --git a/addons/scopes/functions/fnc_getBaseAngle.sqf b/addons/scopes/functions/fnc_getBaseAngle.sqf index da5e965938..a966ffa167 100644 --- a/addons/scopes/functions/fnc_getBaseAngle.sqf +++ b/addons/scopes/functions/fnc_getBaseAngle.sqf @@ -18,10 +18,10 @@ params ["_unit", "_weaponIndex"]; -if (_weaponIndex < 0 || {_weaponIndex > 2}) exitWith { 0 }; +if (_weaponIndex < 0 || {_weaponIndex > 2}) exitWith { 0 }; -private _weaponClass = [primaryWeapon _unit, secondaryWeapon _unit, handgunWeapon _unit] select _weaponIndex; -private _opticsClass = ([_unit] call FUNC(getOptics)) select _weaponIndex; +private _weaponClass = [primaryWeapon _unit, secondaryWeapon _unit, handgunWeapon _unit] select _weaponIndex; +private _opticsClass = ([_unit] call FUNC(getOptics)) select _weaponIndex; private _weaponConfig = configFile >> "CfgWeapons" >> _weaponClass; private _baseAngle = getNumber(_weaponConfig >> "ACE_IronSightBaseAngle"); diff --git a/addons/scopes/functions/fnc_getBoreHeight.sqf b/addons/scopes/functions/fnc_getBoreHeight.sqf index 8926585989..e0b9c0c22e 100644 --- a/addons/scopes/functions/fnc_getBoreHeight.sqf +++ b/addons/scopes/functions/fnc_getBoreHeight.sqf @@ -18,10 +18,10 @@ params ["_unit", "_weaponIndex"]; -if (_weaponIndex < 0 || {_weaponIndex > 2}) exitWith { 0 }; +if (_weaponIndex < 0 || {_weaponIndex > 2}) exitWith { 0 }; -private _weaponClass = [primaryWeapon _unit, secondaryWeapon _unit, handgunWeapon _unit] select _weaponIndex; -private _opticsClass = ([_unit] call FUNC(getOptics)) select _weaponIndex; +private _weaponClass = [primaryWeapon _unit, secondaryWeapon _unit, handgunWeapon _unit] select _weaponIndex; +private _opticsClass = ([_unit] call FUNC(getOptics)) select _weaponIndex; if (_opticsClass == "") then { _opticsClass = _weaponClass; }; diff --git a/addons/sitting/CfgVehicles.hpp b/addons/sitting/CfgVehicles.hpp index 6b71101b44..ad2e7db2d2 100644 --- a/addons/sitting/CfgVehicles.hpp +++ b/addons/sitting/CfgVehicles.hpp @@ -2,7 +2,7 @@ class CfgVehicles { class ACE_Module; class ACEX_ModuleSitting: ACE_Module { author = ECSTRING(common,ACETeam); - category = "ACEX"; + category = "ACE"; displayName = CSTRING(ModuleDisplayName); function = QFUNC(moduleInit); scope = 1; diff --git a/addons/sitting/README.md b/addons/sitting/README.md index 76cbcdd88a..e4d52bfa6d 100644 --- a/addons/sitting/README.md +++ b/addons/sitting/README.md @@ -2,3 +2,7 @@ ace_sitting =============== The Sitting module introduces ability to sit on chairs. + +## ACEX Conversion - things still using acex prefix +- All settings +- CfgVehicles Config Entries (e.g. `acex_sitting_canSit`) diff --git a/addons/sitting/config.cpp b/addons/sitting/config.cpp index 9f91f342b0..ab5c53047d 100644 --- a/addons/sitting/config.cpp +++ b/addons/sitting/config.cpp @@ -13,10 +13,7 @@ class CfgPatches { VERSION_CONFIG; }; - class XADDON: ADDON { - units[] = {}; - weapons[] = {}; - }; + BWC_CONFIG(XADDON); }; #include "ACE_Settings.hpp" diff --git a/addons/sitting/functions/fnc_addSitActions.sqf b/addons/sitting/functions/fnc_addSitActions.sqf index 99f7145cf4..6edb30c5c8 100644 --- a/addons/sitting/functions/fnc_addSitActions.sqf +++ b/addons/sitting/functions/fnc_addSitActions.sqf @@ -25,7 +25,7 @@ if (_seat isEqualType objNull) then { private _configFile = configFile >> "CfgVehicles" >> _type; // Exit if sitting disabled or the object is not specified as a seat -if (!XGVAR(enable) || {getNumber (_configFile >> QGVAR(canSit)) != 1}) exitWith {}; +if (!XGVAR(enable) || {getNumber (_configFile >> QXGVAR(canSit)) != 1}) exitWith {}; // Exit if class already initialized if (_type in GVAR(initializedClasses)) exitWith {}; @@ -33,8 +33,8 @@ GVAR(initializedClasses) pushBack _type; TRACE_1("Adding Sit Action",_type); -private _sitPosition = getArray (_configFile >> QGVAR(sitPosition)); -private _interactPosition = getArray (_configFile >> QGVAR(interactPosition)); +private _sitPosition = getArray (_configFile >> QXGVAR(sitPosition)); +private _interactPosition = getArray (_configFile >> QXGVAR(interactPosition)); if (count _sitPosition != count _interactPosition) exitWith { WARNING_1("Invalid sitting configuration of %1!",_type); diff --git a/addons/sitting/functions/fnc_sit.sqf b/addons/sitting/functions/fnc_sit.sqf index cbf7b7141f..144607b2b7 100644 --- a/addons/sitting/functions/fnc_sit.sqf +++ b/addons/sitting/functions/fnc_sit.sqf @@ -38,8 +38,8 @@ private _actionID = _player addAction [ // Read config private _configFile = configFile >> "CfgVehicles" >> typeOf _seat; -private _sitDirection = (getDir _seat) + (_seat getVariable [QGVAR(sitDirection), getNumber (_configFile >> QGVAR(sitDirection))]); -private _sitPositionAll = _seat getVariable [QGVAR(sitPosition), getArray (_configFile >> QGVAR(sitPosition))]; +private _sitDirection = (getDir _seat) + (_seat getVariable [QXGVAR(sitDirection), getNumber (_configFile >> QXGVAR(sitDirection))]); +private _sitPositionAll = _seat getVariable [QXGVAR(sitPosition), getArray (_configFile >> QXGVAR(sitPosition))]; private _multiSitting = (_sitPositionAll select 0) isEqualType []; private _sitPosition = _sitPositionAll; diff --git a/addons/sitting/functions/fnc_stand.sqf b/addons/sitting/functions/fnc_stand.sqf index bbc5769f75..80ef06a2c2 100644 --- a/addons/sitting/functions/fnc_stand.sqf +++ b/addons/sitting/functions/fnc_stand.sqf @@ -10,7 +10,7 @@ * None * * Example: - * player call acex_sitting_fnc_stand + * player call ace_sitting_fnc_stand * * Public: No */ diff --git a/addons/spectator/functions/script_component.hpp b/addons/spectator/functions/script_component.hpp index d5034cb39c..83581f08f7 100644 --- a/addons/spectator/functions/script_component.hpp +++ b/addons/spectator/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\spectator\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\spectator\script_component.hpp" diff --git a/addons/spottingscope/CfgVehicles.hpp b/addons/spottingscope/CfgVehicles.hpp index 660a3d6749..6be6d70d63 100644 --- a/addons/spottingscope/CfgVehicles.hpp +++ b/addons/spottingscope/CfgVehicles.hpp @@ -41,7 +41,7 @@ class CfgVehicles { EGVAR(dragging,dragPosition)[] = {0,1,0}; EGVAR(dragging,dragDirection) = 0; - class ACE_Actions: ACE_Actions{ + class ACE_Actions: ACE_Actions { class ACE_MainActions: ACE_MainActions { selection = "main_turret_axis"; class ACE_Pickup { diff --git a/addons/spottingscope/functions/script_component.hpp b/addons/spottingscope/functions/script_component.hpp index 504cde2ca6..12dfdc4e3e 100644 --- a/addons/spottingscope/functions/script_component.hpp +++ b/addons/spottingscope/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\spottingscope\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\spottingscope\script_component.hpp" diff --git a/addons/tacticalladder/functions/script_component.hpp b/addons/tacticalladder/functions/script_component.hpp index 53bdb8be62..6c29debfd9 100644 --- a/addons/tacticalladder/functions/script_component.hpp +++ b/addons/tacticalladder/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\tacticalladder\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\tacticalladder\script_component.hpp" diff --git a/addons/tagging/functions/script_component.hpp b/addons/tagging/functions/script_component.hpp index bc860f2283..9bb3bf1d72 100644 --- a/addons/tagging/functions/script_component.hpp +++ b/addons/tagging/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\tagging\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\tagging\script_component.hpp" diff --git a/addons/tagging/initSettings.sqf b/addons/tagging/initSettings.sqf index 72672032ff..4fc35b83d1 100644 --- a/addons/tagging/initSettings.sqf +++ b/addons/tagging/initSettings.sqf @@ -1,7 +1,9 @@ +private _category = [LELSTRING(common,categoryUncategorized), LLSTRING(Tagging)]; + [ QGVAR(quickTag), "LIST", [LLSTRING(QuickTag), LLSTRING(QuickTagDesc)], - ["ACE Uncategorized", LLSTRING(Tagging)], + _category, [[0,1,2,3], [LELSTRING(Common,Disabled), LLSTRING(LastUsed), LLSTRING(RandomX), LLSTRING(Random)], 1], // [values, titles, defaultIndex] false, // isGlobal {[QGVAR(quickTag), _this] call EFUNC(common,cbaSettings_settingChanged)}, diff --git a/addons/towing/functions/fnc_attachRopePFH.sqf b/addons/towing/functions/fnc_attachRopePFH.sqf index 5fd9fd6f32..8164060b84 100644 --- a/addons/towing/functions/fnc_attachRopePFH.sqf +++ b/addons/towing/functions/fnc_attachRopePFH.sqf @@ -50,7 +50,7 @@ if (_intersections isNotEqualTo []) then { GVAR(attachHelper) setVariable [QGVAR(object), _intersectObject]; }; - + }; if (_source isNotEqualTo [0, 0, 0]) then { diff --git a/addons/towing/functions/fnc_startTow.sqf b/addons/towing/functions/fnc_startTow.sqf index d216576499..fb0755285c 100644 --- a/addons/towing/functions/fnc_startTow.sqf +++ b/addons/towing/functions/fnc_startTow.sqf @@ -28,6 +28,7 @@ if (_ropeLength == 0) then { _unit removeItem _ropeClass; +GVAR(cancel) = false; GVAR(canAttach) = false; [LINKFUNC(towStateMachinePFH), 0, [TOW_STATE_ATTACH_PARENT, _unit, _target, objNull, _ropeLength, _ropeClass]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/towing/functions/fnc_towStateMachinePFH.sqf b/addons/towing/functions/fnc_towStateMachinePFH.sqf index ef642e5cc8..7981329d9f 100644 --- a/addons/towing/functions/fnc_towStateMachinePFH.sqf +++ b/addons/towing/functions/fnc_towStateMachinePFH.sqf @@ -20,15 +20,16 @@ _args params ["_state", "_unit", "_parent", "_rope", "_length", "_ropeClass"]; private _exitCondition = !( (alive GVAR(attachHelper)) && - { alive _target } && + { alive _parent } && { alive _unit } && { "" isEqualTo currentWeapon _unit || { _unit call EFUNC(common,isSwimming) }} && { [_unit, objNull, [INTERACTION_EXCEPTIONS]] call EFUNC(common,canInteractWith) } && { "unconscious" isNotEqualTo toLower animationState _unit } && - { !(_unit getVariable ["ACE_isUnconscious", false]) } + { !(_unit getVariable ["ACE_isUnconscious", false]) } && + { ACE_player == _unit } ); -if (_exitCondition) then { +if (_exitCondition && {_state < TOW_STATE_CANCEL}) then { _state = TOW_STATE_CANCEL; }; @@ -45,8 +46,9 @@ switch (_state) do { _args set [3, _rope]; }; - if (GVAR(mouseRight)) then { + if (GVAR(mouseRight) || GVAR(cancel)) then { _args set [0, TOW_STATE_CANCEL]; + GVAR(cancel) = false; }; }; case TOW_STATE_ATTACH_CHILD: { @@ -74,6 +76,11 @@ switch (_state) do { ERROR_MSG("_child isEqualTo _parent"); }; + if (GVAR(cancel)) exitWith { + _args set [0, TOW_STATE_CANCEL]; + GVAR(cancel) = false; + }; + [QGVAR(setTowParent), [_parent, _child], _parent] call CBA_fnc_targetEvent; GVAR(attachHelper) ropeDetach _rope; @@ -127,9 +134,12 @@ switch (_state) do { }; case TOW_STATE_CANCEL: { TRACE_1("state cancel",_rope); - ropeDestroy _rope; + if !(isNull _rope) then { + ropeDestroy _rope; + }; [_unit, _ropeClass, true] call CBA_fnc_addItem; _args set [0, TOW_STATE_CLEANUP]; + GVAR(cancel) = false; (localize LSTRING(canceled)) call CBA_fnc_notify; }; diff --git a/addons/towing/functions/script_component.hpp b/addons/towing/functions/script_component.hpp index cb87a08576..6ebd098f2d 100644 --- a/addons/towing/functions/script_component.hpp +++ b/addons/towing/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\towing\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\towing\script_component.hpp" diff --git a/addons/towing/script_component.hpp b/addons/towing/script_component.hpp index d3c12463c9..2d9790ac20 100644 --- a/addons/towing/script_component.hpp +++ b/addons/towing/script_component.hpp @@ -17,7 +17,7 @@ #include "\z\ace\addons\main\script_macros.hpp" #define TOW_ACTION_DISTANCE 3 -#define INTERACTION_EXCEPTIONS "isNotInside", "isNotOnLadder", "isNotSwimming" +#define INTERACTION_EXCEPTIONS "isNotOnLadder", "isNotSwimming" #define TOW_STATE_ATTACH_PARENT 0 #define TOW_STATE_ATTACH_CHILD 1 diff --git a/addons/towing/stringtable.xml b/addons/towing/stringtable.xml index aaf5e6a234..4efe789ff6 100644 --- a/addons/towing/stringtable.xml +++ b/addons/towing/stringtable.xml @@ -3,36 +3,91 @@ Towing + けん引 + Remorquage + Буксирование + Abschleppen + Holowanie Attach Tow Rope + けん引ロープを取り付け + Attacher la corde de remorquage + Прикрепить буксировочный канат + Abschleppseil befestigen + Przypnij linkę holowniczą Attaching Cancelled + 取り付けを中止しました + Attachage annulé + Прикрепление отменено + Befestigen Abgebrochen + Przyczepianie anulowane Attach Tow Rope (3.2m) + けん引ロープ (3.2m) を取り付け + Attacher la corde (3,2 m) + Прикрепить буксировочный канат (3.2м) + Befestige Seil (3.2m) + Przypnij linkę holowniczą (3,2m) Attach Tow Rope (6.2m) + けん引ロープ (6.2m) を取り付け + Attacher la corde (6,2 m) + Прикрепить буксировочный канат (6.2м) + Befestige Seil (6.2m) + Przypnij linkę holowniczą (6,2m) Attach Tow Rope (12.2m) + けん引ロープ (12.2m) を取り付け + Attacher la corde (12,2 m) + Прикрепить буксировочный канат (12.2м) + Befestige Seil (12.2m) + Przypnij linkę holowniczą (12,2m) Attach Tow Rope (15.2m) + けん引ロープ (15.2m) を取り付け + Attacher la corde (15,2 m) + Прикрепить буксировочный канат (15.2м) + Befestige Seil (15.2m) + Przypnij linkę holowniczą (15,2m) - Attach Tow Rope (18.2m) + Attach Tow Rope (18.3m) + けん引ロープ (18.3m) を取り付け + Attacher la corde (18,3 m) + Прикрепить буксировочный канат (18.3м) + Befestige Seil (18.3m) + Przypnij linkę holowniczą (18,3m) - Attach Tow Rope (27.2m) + Attach Tow Rope (27.4m) + けん引ロープ (27.4m) を取り付け + Attacher la corde (27,4 m) + Прикрепить буксировочный канат (27.4м) + Befestige Seil (27.4m) + Przypnij linkę holowniczą (27,4m) - Attach Tow Rope (36.2m) + Attach Tow Rope (36.6m) + けん引ロープ (36.6m) を取り付け + Attacher la corde (36,6 m) + Прикрепить буксировочный канат (36.6м) + Befestige Seil (36.6m) + Przypnij linkę holowniczą (36,6m) Detach Tow Rope + けん引ロープを外す + Détacher la corde + Отцепить буксировочный канат + Entferne Abschleppseil + Odepnij linkę holowniczą - \ No newline at end of file + diff --git a/addons/trenches/functions/script_component.hpp b/addons/trenches/functions/script_component.hpp index 3747e01219..2509d7da50 100644 --- a/addons/trenches/functions/script_component.hpp +++ b/addons/trenches/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\trenches\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\trenches\script_component.hpp" diff --git a/addons/trenches/initSettings.sqf b/addons/trenches/initSettings.sqf index 7abce22295..13e373d25d 100644 --- a/addons/trenches/initSettings.sqf +++ b/addons/trenches/initSettings.sqf @@ -1,36 +1,36 @@ // Trenches dig/remove durations [ - QGVAR(smallEnvelopeDigDuration), - "TIME", + QGVAR(smallEnvelopeDigDuration), + "TIME", [LSTRING(SmallEnvelopeDigDuration_DisplayName), LSTRING(SmallEnvelopeDigDuration_Description)], LSTRING(Category), - [5, 600, 20], + [5, 600, 20], true ] call CBA_fnc_addSetting; [ - QGVAR(smallEnvelopeRemoveDuration), - "TIME", + QGVAR(smallEnvelopeRemoveDuration), + "TIME", [LSTRING(SmallEnvelopeRemoveDuration_DisplayName), LSTRING(SmallEnvelopeRemoveDuration_Description)], LSTRING(Category), - [5, 600, 12], + [5, 600, 12], true ] call CBA_fnc_addSetting; [ - QGVAR(bigEnvelopeDigDuration), - "TIME", + QGVAR(bigEnvelopeDigDuration), + "TIME", [LSTRING(BigEnvelopeDigDuration_DisplayName), LSTRING(BigEnvelopeDigDuration_Description)], LSTRING(Category), - [5, 600, 25], + [5, 600, 25], true ] call CBA_fnc_addSetting; [ - QGVAR(bigEnvelopeRemoveDuration), - "TIME", + QGVAR(bigEnvelopeRemoveDuration), + "TIME", [LSTRING(BigEnvelopeRemoveDuration_DisplayName), LSTRING(BigEnvelopeRemoveDuration_Description)], LSTRING(Category), - [5, 600, 15], + [5, 600, 15], true ] call CBA_fnc_addSetting; diff --git a/addons/trenches/stringtable.xml b/addons/trenches/stringtable.xml index bcbf18e942..682c2a7e82 100644 --- a/addons/trenches/stringtable.xml +++ b/addons/trenches/stringtable.xml @@ -249,6 +249,7 @@ ACE 塹壕 ACETrincheras ACE Okopy + ACE Gräben Small Trench Dig Duration @@ -257,6 +258,7 @@ 小型塹壕の完成時間 Tiempo de cavar trinchera pequeña Czas kopania małego okopu + Kleiner Graben - Aushebungsdauer Time, in seconds, required to dig a small trench. @@ -265,6 +267,7 @@ 小型塹壕が完成するまでの時間 (秒) を設定できます。 Tiempo, en segundos, requerido para cavar una trinchera pequeña. Czas, w sekundach wymagany do wykopania małego okopu + Zeit in Sekunden, um einen kleinen Graben auszuheben. Small Trench Remove Duration @@ -273,6 +276,7 @@ 小型塹壕の削除時間 Tiempo de eliminar trinchera pequeña Czas usuwania małego okopu + Kleiner Graben - Aufschüttdauer Time, in seconds, required to remove a small trench. @@ -281,6 +285,7 @@ 小型塹壕が削除されるまでの時間 (秒) を設定できます。 Tiempo, en segundos, requerido para eliminar una trinchera pequeña. Czas, w sekundach wymagany do usunięcia małego okopu + Zeit in Sekunden, um einen kleinen Graben aufzuschütten. Big Trench Dig Duration @@ -289,6 +294,7 @@ 大型塹壕の完成時間 Tiempo de cavar trinchera grande Czas kopania dużego okopu + Große Graben - Aushebungsdauer Time, in seconds, required to dig a big trench. @@ -297,6 +303,7 @@ 大型塹壕が完成するまでの時間 (秒) を設定できます。 Tiempo, en segundos, requerido para cavar una trinchera grande Czas, w sekundach wymagany do wykopania dużego okopu + Zeit in Sekunden, um einen großen Graben auszuheben. Big Trench Remove Duration @@ -305,6 +312,7 @@ 大型塹壕の削除時間 Tiempo de eliminar trinchera grande Czas usuwania dużego okopu + Kleiner Graben - Aufschüttdauer Time, in seconds, required to remove a big trench. @@ -313,6 +321,7 @@ 大型塹壕が削除されるまでの時間 (秒) を設定できます。 Tiempo, en segundos, requerido para eliminar una trinchera grande Czas, w sekundach wymagany do usunięcia dużego okopu + Zeit in Sekunden, um einen großen Graben aufzuschütten. diff --git a/addons/tripod/functions/script_component.hpp b/addons/tripod/functions/script_component.hpp index 4fa165afc7..c35681b54e 100644 --- a/addons/tripod/functions/script_component.hpp +++ b/addons/tripod/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\tripod\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\tripod\script_component.hpp" diff --git a/addons/ui/XEH_clientInit.sqf b/addons/ui/XEH_clientInit.sqf index 5c311f5dd6..66aa0b3650 100644 --- a/addons/ui/XEH_clientInit.sqf +++ b/addons/ui/XEH_clientInit.sqf @@ -40,7 +40,7 @@ GVAR(elementsSet) = call CBA_fnc_createNamespace; if (_name in ELEMENTS_BASIC) then { [true] call FUNC(setElements); } else { - private _nameNoPrefix = toLower (_name select [_delimPos]); + private _nameNoPrefix = toLower (_name select [7]); private _cachedElement = GVAR(configCache) getVariable _nameNoPrefix; if (!isNil "_cachedElement") then { [_nameNoPrefix, _value, true] call FUNC(setAdvancedElement); diff --git a/addons/ui/stringtable.xml b/addons/ui/stringtable.xml index f27926dc7a..ba961711f0 100644 --- a/addons/ui/stringtable.xml +++ b/addons/ui/stringtable.xml @@ -164,6 +164,7 @@ Filigrane version de développement Znak wodny wersji deweloperskiej 開発版ウォーターマーク + Wasserzeichen für Entwicklungsversion Weapon Name @@ -669,11 +670,17 @@ Enable movement speed indicator Włącz wskaźnik prędkości poruszania 移動速度インジケータを有効化 + Indicateur de vitesse de déplacement + Включить индикатор скорости передвижения + Aktiviere Bewegungsgeschwindigkeits-Indikator Enables movement speed indicator for player character. Włącza wskaźnik prędkości poruszania się dla postaci gracza. プレイヤー キャラの移動速度を表示します。 + Affiche un indicateur permettant de visualiser la vitesse de déplacement du personnage. + Включает индикатор скорости передвижения персонажа игрока. + Aktiviere den Bewegungsgeschwindigkeits-Indikator des Spielers. diff --git a/addons/vector/functions/script_component.hpp b/addons/vector/functions/script_component.hpp index d4007d8aa4..a4a813c374 100644 --- a/addons/vector/functions/script_component.hpp +++ b/addons/vector/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\vector\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\vector\script_component.hpp" diff --git a/addons/vehicle_damage/CfgAmmo.hpp b/addons/vehicle_damage/CfgAmmo.hpp index 0c29bd55f0..23f582a814 100644 --- a/addons/vehicle_damage/CfgAmmo.hpp +++ b/addons/vehicle_damage/CfgAmmo.hpp @@ -10,7 +10,7 @@ class CfgAmmo { class BombCore; class DirectionalBombCore; class PipeBombCore; - + class B_30mm_HE; class GrenadeHand; class R_PG32V_F; @@ -20,10 +20,10 @@ class CfgAmmo { class M_SPG9_HEAT; class R_MRAAWS_HEAT_F; class B_338_Ball; - + class ACE_G_40mm_HE; - - CREATE_INCENDIARY_AMMO(BulletBase, BulletCore, 0.5); + + CREATE_INCENDIARY_AMMO(BulletBase, BulletCore, 0.1); CREATE_INCENDIARY_AMMO(ShellBase, ShellCore, 1.0); CREATE_INCENDIARY_AMMO(ammo_Penetrator_Base, ShellBase, 1.0); CREATE_INCENDIARY_AMMO(MissileBase, MissileCore, 1.0); @@ -40,7 +40,7 @@ class CfgAmmo { CREATE_INCENDIARY_AMMO(ammo_Gun30mmAABase, BulletBase, 0.7); CREATE_INCENDIARY_AMMO(ammo_Gun35mmAABase, BulletBase, 0.7); CREATE_INCENDIARY_AMMO(ammo_Missile_CannonLaunchedBase, MissileBase, 1.0); - + CREATE_INCENDIARY_AMMO(B_127x99_Ball, BulletBase, 0.2); CREATE_INCENDIARY_AMMO(B_127x99_SLAP, B_127x99_Ball, 0.8); CREATE_INCENDIARY_AMMO(B_127x108_Ball, BulletBase, 0.3); @@ -62,50 +62,50 @@ class CfgAmmo { CREATE_INCENDIARY_AMMO(ammo_Penetrator_120mm, ammo_Penetrator_Base, 1.0); CREATE_INCENDIARY_AMMO(ammo_Penetrator_Rocket_03_AP, ammo_Penetrator_Base, 0.7); CREATE_INCENDIARY_AMMO(ammo_Penetrator_Rocket_04_AP, ammo_Penetrator_Base, 0.7); - + CREATE_INCENDIARY_AMMO(Sh_120mm_HE, ShellBase, 0.4); CREATE_INCENDIARY_AMMO(Sh_120mm_APFSDS, ShellBase, 0.1); CREATE_INCENDIARY_AMMO(Sh_120mm_HEAT_MP, ShellBase, 0.8); CREATE_INCENDIARY_AMMO(Sh_155mm_AMOS, ShellBase, 0.4); CREATE_INCENDIARY_AMMO(Sh_82mm_AMOS, Sh_155mm_AMOS, 0.1); - + CREATE_INCENDIARY_AMMO(Bo_Mk82, BombCore, 0.8); CREATE_INCENDIARY_AMMO(R_TBG32V_F, R_PG32V_F, 0.2); - + CREATE_INCENDIARY_AMMO(R_80mm_HE, RocketBase, 0.2); CREATE_INCENDIARY_AMMO(R_60mm_HE, R_80mm_HE, 0.1); - + CREATE_INCENDIARY_AMMO(R_230mm_HE, SubmunitionBase, 0.9); CREATE_INCENDIARY_AMMO(R_230mm_fly, ShellBase, 0.9); - + CREATE_INCENDIARY_AMMO(G_40mm_HE, GrenadeBase, 0.1); CREATE_INCENDIARY_AMMO(G_20mm_HE, G_40mm_HE, 0.3); CREATE_INCENDIARY_AMMO(G_40mm_HEDP, G_40mm_HE, 0.8); - + CREATE_INCENDIARY_AMMO(Mo_cluster_AP, ShellBase, 0.9); CREATE_INCENDIARY_AMMO(M_Titan_AT, MissileBase, 1.0); CREATE_INCENDIARY_AMMO(M_Titan_AP, M_Titan_AT, 0.3); - + CREATE_INCENDIARY_AMMO(Sh_125mm_APFSDS, Sh_120mm_APFSDS, 0.15); CREATE_INCENDIARY_AMMO(Sh_125mm_HEAT, Sh_125mm_HE, 1.0); - + CREATE_INCENDIARY_AMMO(Gatling_30mm_HE_Plane_CAS_01_F, BulletBase, 0.6); - + CREATE_INCENDIARY_AMMO(Missile_AGM_02_F, MissileBase, 1.0); CREATE_INCENDIARY_AMMO(M_Mo_82mm_AT, MissileBase, 1.0); CREATE_INCENDIARY_AMMO(Rocket_04_HE_F, MissileBase, 0.4); CREATE_INCENDIARY_AMMO(Rocket_04_AP_F, Rocket_04_HE_F, 0.1); - + CREATE_INCENDIARY_AMMO(Sh_105mm_HEAT_MP, Sh_125mm_HEAT, 0.8); - + CREATE_INCENDIARY_AMMO(APERSTripMine_Wire_Ammo, DirectionalBombBase, 0.0); - + CREATE_INCENDIARY_AMMO(B_127x54_Ball, BulletBase, 0.8); CREATE_INCENDIARY_AMMO(B_93x64_Ball, BulletBase, 0.5); - + CREATE_INCENDIARY_AMMO(M_Vorona_HE, M_Vorona_HEAT, 0.2); CREATE_INCENDIARY_AMMO(M_SPG9_HE, M_SPG9_HEAT, 0.2); CREATE_INCENDIARY_AMMO(R_MRAAWS_HE_F, R_MRAAWS_HEAT_F, 0.4); - + CREATE_INCENDIARY_AMMO(B_20mm_AP, BulletBase, 0.2); }; diff --git a/addons/vehicle_damage/CfgVehicles.hpp b/addons/vehicle_damage/CfgVehicles.hpp index b34f793e0f..9ea47711ea 100644 --- a/addons/vehicle_damage/CfgVehicles.hpp +++ b/addons/vehicle_damage/CfgVehicles.hpp @@ -16,7 +16,7 @@ class CfgVehicles { model = "\A3\Structures_F\Wrecks\Wreck_T72_turret_F.p3d"; icon = "\A3\armor_f_gamma\MBT_02\Data\UI\map_MBT_02_ca.paa"; }; - + class Tank; class Car_F; class Tank_F: Tank { @@ -148,13 +148,13 @@ class CfgVehicles { "HitERA_Top_Front", "HitERA_Top_Left", "HitERA_Top_Right" }; }; - + class O_MBT_02_base_F; class O_MBT_02_cannon_F: O_MBT_02_base_F { GVAR(turret)[] = { QGVAR(Turret_MBT_02), {0, -1, 0} }; GVAR(canHaveFireRing) = 1; }; - + class APC_Tracked_02_base_F: Tank_F { GVAR(hullDetonationProb) = 0; GVAR(turretDetonationProb) = 0; @@ -227,7 +227,7 @@ class CfgVehicles { GVAR(engineFireProb) = 0.7; GVAR(detonationDuringFireProb) = 0.9; GVAR(slatHitpoints)[] = { - "HitSLAT_Left_1", "HitSLAT_Left_2", "HitSLAT_Left_3", + "HitSLAT_Left_1", "HitSLAT_Left_2", "HitSLAT_Left_3", "HitSLAT_Right_1", "HitSLAT_Right_2", "HitSLAT_Right_3", "HitSLAT_back", "HitSLAT_front" @@ -267,7 +267,7 @@ class CfgVehicles { GVAR(engineFireProb) = 0.7; GVAR(detonationDuringFireProb) = 0.5; GVAR(slatHitpoints)[] = { - "HitSLAT_Left_1", "HitSLAT_Left_2", "HitSLAT_Left_3", + "HitSLAT_Left_1", "HitSLAT_Left_2", "HitSLAT_Left_3", "HitSLAT_Right_1", "HitSLAT_Right_2", "HitSLAT_Right_3", "HitSLAT_back", "HitSLAT_front" @@ -282,7 +282,7 @@ class CfgVehicles { GVAR(engineFireProb) = 0.5; GVAR(detonationDuringFireProb) = 0.7; GVAR(slatHitpoints)[] = { - "HitSLAT_Left", "HitSLAT_Right", "HitSLAT_back", + "HitSLAT_Left", "HitSLAT_Right", "HitSLAT_back", "HitSLAT_top_left", "HitSLAT_top_right", "HitSLAT_top_back" }; GVAR(canHaveFireRing) = 1; diff --git a/addons/vehicle_damage/XEH_postInit.sqf b/addons/vehicle_damage/XEH_postInit.sqf index 88b29928e0..ce563302e3 100644 --- a/addons/vehicle_damage/XEH_postInit.sqf +++ b/addons/vehicle_damage/XEH_postInit.sqf @@ -24,7 +24,7 @@ ["Tank", "init", LINKFUNC(addEventHandler), true, [], true] call CBA_fnc_addClassEventHandler; ["Wheeled_APC_F", "init", LINKFUNC(addEventHandler), true, [], true] call CBA_fnc_addClassEventHandler; - + if (GVAR(enableCarDamage)) then { ["Car", "init", LINKFUNC(addEventHandler), true, [], true] call CBA_fnc_addClassEventHandler; }; @@ -45,10 +45,8 @@ params ["_vehicle", "_turret"]; { - if (_vehicle in curatorEditableObjects _x) then { - _x addCuratorEditableObjects [[_turret], false]; - }; - } forEach allCurators; + _x addCuratorEditableObjects [[_turret], false]; + } forEach (objectCurators _vehicle); }] call CBA_fnc_addEventHandler; }; }; diff --git a/addons/vehicle_damage/functions/fnc_addEventHandler.sqf b/addons/vehicle_damage/functions/fnc_addEventHandler.sqf index 39a101d3b8..5c14a2f469 100644 --- a/addons/vehicle_damage/functions/fnc_addEventHandler.sqf +++ b/addons/vehicle_damage/functions/fnc_addEventHandler.sqf @@ -20,7 +20,7 @@ TRACE_2("addEventHandler",_vehicle,GVAR(enabled)); if !(GVAR(enabled)) exitWith { #ifdef DEBUG_MODE_FULL - [{ ["Warning: Vehicle Damage not enabled...", 2] call CBA_fnc_notify; }, [], 5] call CBA_fnc_waitAndExecute; + [{ ["Warning: Vehicle Damage not enabled...", 2] call CBA_fnc_notify; }, [], 5] call CBA_fnc_waitAndExecute; #endif }; @@ -51,7 +51,7 @@ private _iterateThroughConfig = { private _isEra = _configName in _eraHitpoints; private _isSlat = _configName in _slatHitpoints; private _isMisc = false; - + // prevent incompatibilites with old mods if ((toLower _configName) isEqualTo "hitturret") then { _isTurret = true; @@ -59,7 +59,7 @@ private _iterateThroughConfig = { if ((toLower _configName) isEqualTo "hitgun") then { _isGun = true; }; - + private _hash = _vehicle getVariable QGVAR(hitpointHash); { _x params ["_hitType", "_hitPoints"]; @@ -68,7 +68,7 @@ private _iterateThroughConfig = { _isMisc = true; }; } forEach _hitpointAliases; - + if (_isGun || _isTurret || _isEra || _isSlat || _isMisc) then { TRACE_6("found gun/turret/era/slat/misc",_isGun,_isTurret,_isEra,_isSlat,_isMisc,_hash); if (_isGun) then { diff --git a/addons/vehicle_damage/functions/fnc_calculatePenetrationInfo.sqf b/addons/vehicle_damage/functions/fnc_calculatePenetrationInfo.sqf index f8dd6f5b7b..48792bdbcb 100644 --- a/addons/vehicle_damage/functions/fnc_calculatePenetrationInfo.sqf +++ b/addons/vehicle_damage/functions/fnc_calculatePenetrationInfo.sqf @@ -26,13 +26,13 @@ _projectileData params ["_projectileType", "_projectileConfig"]; Perforation Calculation of APFSDS: Tungsten/Depleted Uranium: Rods P/Lw = a * (1 / tanh(b0 + b1 * (Lw/D))) * cos^m (theta) * sqrt (Pp / Pt) * e^((-(c0 + c1 * BHNT) * BHNT) / (Pp * Vt^2)) - + Steel Rods P/Lw = a * (1 / tanh(b0 + b1 * (Lw/D))) * cos^m (theta) * sqrt (Pp / Pt) * e^((-c * BHNT^k * BHNP^n) / (Pp * Vt^2)) - + Penetration Calculation of Tungsten APFSDS (Used for all penetrators): P/Lw = a * (1 / tanh(b0 + b1 * (Lw/D))) sqrt (Pp / Pt) * e^((-(c0 + c1 * BHNT) * BHNT) / (Pp * Vt^2)) - + where: Penetrator: D = Diameter of penetrator rod (always 22mm) @@ -42,33 +42,33 @@ _projectileData params ["_projectileType", "_projectileConfig"]; theta = NATO Obliquity angle of Penetration Pp = Penetrator Density in kg/m^3 BHNP = Brinell hardness number of penetrator - + Target: Pt = target density in kg/m^3 (always 7840kg/m^3) d = plate thickness in millimeters BHNT = Brinell hardness number of target (always 350) - + Material Data: Tungsten: Pp = 19300 BHNP = N/A - + a = 0.994 c0 = 134.5 c1 = -0.148 - + Depleted Uranium: Pp = 18600 BHNP = N/A - + a = 0.825 c0 = 90.0 c1 = -0.0849 - + Steel: Pp = 7850 BHNP = 500 - + a = 1.104 c = 9874 k = 0.3598 diff --git a/addons/vehicle_damage/functions/fnc_handleCookoff.sqf b/addons/vehicle_damage/functions/fnc_handleCookoff.sqf index 277c0a916e..2f48f76116 100644 --- a/addons/vehicle_damage/functions/fnc_handleCookoff.sqf +++ b/addons/vehicle_damage/functions/fnc_handleCookoff.sqf @@ -32,7 +32,7 @@ if (!_alreadyCookingOff && { _chanceOfFire >= random 1 }) exitWith { private _delayWithSmoke = _chanceOfFire < random 1; private _detonateAfterCookoff = (_fireDetonateChance / 4) > random 1; - + private _source = ""; if (toLower _hitPart isEqualTo "engine") then { _source = ["hit_engine_point", "HitPoints"]; @@ -43,7 +43,7 @@ if (!_alreadyCookingOff && { _chanceOfFire >= random 1 }) exitWith { LOG_4("Cooking-off [%1] with a chance-of-fire [%2] - Delayed Smoke | Detonate after cookoff [%3 | %4]",_vehicle,_chanceOfFire,_delayWithSmoke,_detonateAfterCookoff); [_vehicle] spawn FUNC(abandon); LOG_1("[%1] is on fire is bailing",_vehicle); - + // cant setVehicleAmmo 0 here because it removes FFV unit's ammo if (GVAR(removeAmmoDuringCookoff)) then { private _ammo = [_vehicle] call EFUNC(cookoff,getVehicleAmmo); diff --git a/addons/vehicle_damage/functions/fnc_handleDamage.sqf b/addons/vehicle_damage/functions/fnc_handleDamage.sqf index dd33fd2705..30bf4408ab 100644 --- a/addons/vehicle_damage/functions/fnc_handleDamage.sqf +++ b/addons/vehicle_damage/functions/fnc_handleDamage.sqf @@ -42,7 +42,7 @@ if !(_projectile in ["ace_ammoExplosion", "ACE_ammoExplosionLarge"]) then { private _frameHash = _vehicle getVariable [QGVAR(hitHash), nil]; private _hitArray = [_frameHash, _processingFrame] call CBA_fnc_hashGet; if (_hitArray isEqualTo []) exitWith {}; - + reverse _hitArray; TRACE_3("processing data from old frame",diag_frameNo,_processingFrame,_hitArray); { @@ -52,9 +52,9 @@ if !(_projectile in ["ace_ammoExplosion", "ACE_ammoExplosionLarge"]) then { LOG_2("cancelling rest of vehicle damage queue ( [%1] items left out of [%2] )",(count (_hitArray#1)) - _forEachIndex,count (_hitArray#1)) }; } forEach _hitArray; - + [_frameHash, _processingFrame] call CBA_fnc_hashRem; - + }, [_vehicle, diag_frameNo]] call CBA_fnc_execNextFrame; }; _currentFrameArray pushBack _this; diff --git a/addons/vehicle_damage/functions/fnc_handleVehicleDamage.sqf b/addons/vehicle_damage/functions/fnc_handleVehicleDamage.sqf index b17535f514..4d39dc6b78 100644 --- a/addons/vehicle_damage/functions/fnc_handleVehicleDamage.sqf +++ b/addons/vehicle_damage/functions/fnc_handleVehicleDamage.sqf @@ -69,7 +69,7 @@ if (isNil "_multHit") then { private _withinTime = (CBA_missionTime <= (_multHit select 0) + CONST_TIME) && { _injurer == (_multHit select 1) }; if (_hitPointInOldArray && _withinTime) then { _ignoreHit = true; - } else { + } else { // If the hitpoint isnt in the old array then that means that the time expired and a new array should be generated if !(_hitPointInOldArray) then { private _oldHitPoints = _multHit select 2; diff --git a/addons/vehicle_damage/functions/fnc_injureOccupants.sqf b/addons/vehicle_damage/functions/fnc_injureOccupants.sqf index be08f583c8..7dc93cabd4 100644 --- a/addons/vehicle_damage/functions/fnc_injureOccupants.sqf +++ b/addons/vehicle_damage/functions/fnc_injureOccupants.sqf @@ -53,7 +53,7 @@ private _injuryCount = 0; _indexToInjure = _forEachIndex; }; } forEach _crewInjuryIndices; - + if (_indexToInjure >= 0) then { private _casualty = _vehicleCrew select (_crewInjuryIndices select _indexToInjure); if (alive _casualty) then { @@ -61,7 +61,7 @@ private _injuryCount = 0; private _indexCount = count _crewInjuryIndices; if (_indexCount >= 0) then { _crewInjuryIndices deleteAt _indexToInjure; - + // arbitrary percentages private _injuredBodyPart = ["Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg"] selectRandomWeighted [0.3, 0.8, 0.5, 0.5, 0.3, 0.3]; private _currentUnitDamage = _casualty getHitpointDamage _injuredBodyPart; @@ -71,6 +71,6 @@ private _injuryCount = 0; }; }; }; - + if (_injuryCount >= _count) exitWith {}; } forEach _vehicleCrew; diff --git a/addons/vehicle_damage/functions/fnc_processHit.sqf b/addons/vehicle_damage/functions/fnc_processHit.sqf index 9f0c6560a7..d548eed5a3 100644 --- a/addons/vehicle_damage/functions/fnc_processHit.sqf +++ b/addons/vehicle_damage/functions/fnc_processHit.sqf @@ -155,7 +155,7 @@ if !(count (_currentVehicleAmmo select 0) isEqualTo 0) then { private _initialAmmoCount = getNumber (_magConfig >> _magazineClassname >> "count"); _chanceOfDetonation = _chanceOfDetonation + (_currentAmmoCount / _initialAmmoCount); _countOfExplodableAmmo = _countOfExplodableAmmo + 1; - + private _ammoClassname = getText (_magConfig >> _magazineClassname >> "ammo"); private _explosive = getNumber (_ammoConfig >> _ammoClassname >> "explosive"); private _hit = getNumber (_ammoConfig >> _ammoClassname >> "hit"); @@ -177,21 +177,21 @@ switch (_hitArea) do { case "engine": { _chanceToDetonate = ([_vehicleConfig >> QGVAR(engineDetonationProb), "NUMBER", 0] call CBA_fnc_getConfigEntry) * _incendiary * _currentFuel * _penChance; _chanceOfFire = ([_vehicleConfig >> QGVAR(engineFireProb), "NUMBER", 0] call CBA_fnc_getConfigEntry) * _incendiary * _currentFuel * _penChance; - + private _cookoffIntensity = 4 * _currentFuel; TRACE_6("hit engine",_chanceToDetonate,_chanceOfFire,_incendiary,_chanceOfDetonation,_currentFuel,_cookoffIntensity); - + if (_isCar) then { _chanceOfFire = 0; // no cookoff for cars }; - + if ([_vehicle, _chanceToDetonate, _currentVehicleAmmo, _explosiveAmmoCount, _nonExplosiveAmmoCount, _injurer] call FUNC(handleDetonation)) exitWith { [_vehicle] call FUNC(knockOut); }; // cap damage at 0.9 to avoid hard coded blow up _nextPartDamage = (0.9 min _nextPartDamage); - + // fatal engine/drive system damage if (_nextPartDamage == 0.9 || { 0.8 * _ammoEffectiveness > random 1 }) then { [_vehicle, _hitIndex, _hitpointName, 0.9 * _penChance] call FUNC(addDamage); @@ -199,7 +199,7 @@ switch (_hitArea) do { } else { [_vehicle, _hitIndex, _hitpointName, _nextPartDamage * _penChance] call FUNC(addDamage); }; - + // slightly lower injury chance since this hit the engine block [_vehicle, _injuryChance, _injuryCount, _injurer, [0.2, 0.2, 0.2, 0.4]] call FUNC(injureOccupants); [_vehicle, _chanceOfFire, _cookoffIntensity, _injurer, _hitArea, false] call FUNC(handleCookoff); @@ -207,24 +207,24 @@ switch (_hitArea) do { case "hull": { _chanceToDetonate = ([_vehicleConfig >> QGVAR(hullDetonationProb), "NUMBER", 0] call CBA_fnc_getConfigEntry) * _incendiary * ((_chanceOfDetonation + _currentFuel) / 2) * _penChance; _chanceOfFire = ([_vehicleConfig >> QGVAR(hullFireProb), "NUMBER", 0] call CBA_fnc_getConfigEntry) * _incendiary * ((_chanceOfDetonation + _currentFuel) / 2) * _penChance; - + private _cookoffIntensity = 1.5 + (_explosiveAmmoCount * _chanceOfFire); TRACE_6("hit hull",_chanceToDetonate,_chanceOfFire,_incendiary,_chanceOfDetonation,_currentFuel,_cookoffIntensity); - + if (_isCar) then { _chanceOfFire = 0; // no cookoff for cars }; - + if ([_vehicle, _chanceToDetonate, _currentVehicleAmmo, _explosiveAmmoCount, _nonExplosiveAmmoCount, _injurer] call FUNC(handleDetonation)) exitWith { [_vehicle, _hitIndex, _hitpointName, 0.89 * _penChance] call FUNC(addDamage); [_vehicle] call FUNC(knockOut); }; - + [_vehicle, _injuryChance, _injuryCount, _injurer, [1, 0.4, 0.4, 1]] call FUNC(injureOccupants); - + private _hash = _vehicle getVariable [QGVAR(hitpointHash), []]; private _hashKeys = [_hash] call CBA_fnc_hashKeys; - + // 25% chance of jamming turret - 25% of mobility kill - 25% of both - 75% chance of critical hull damage private _rand = random 1; TRACE_2("rolling hull damage",_ammoEffectiveness,_rand); @@ -249,7 +249,7 @@ switch (_hitArea) do { if !(_vehicle isKindOf "Wheeled_APC_F") then { _partKill = _partKill + TRACK_HITPOINTS#0; }; - + _vehicle setVariable [QGVAR(canMove), false]; }; case (_rand < 0.75): { @@ -258,49 +258,49 @@ switch (_hitArea) do { if !(_vehicle isKindOf "Wheeled_APC_F") then { _partKill = _partKill + TRACK_HITPOINTS#0; }; - + // iterate through all keys and find appropriate turret [_hash, { if (_value#0 isEqualTo "turret") then { _partKill pushBack _key; }; }] call CBA_fnc_hashEachPair; - + _vehicle setVariable [QGVAR(canMove), false]; _vehicle setVariable [QGVAR(canShoot), false]; }; default{}; }; }; - + { TRACE_1("doing damage to hitpoint", _x); [_vehicle, -1, _x, 1 * _penChance] call FUNC(addDamage); } forEach _partKill; - + [_vehicle, _chanceOfFire, _cookoffIntensity, _injurer, "", true] call FUNC(handleCookoff); }; case "turret": { _chanceToDetonate = ([_vehicleConfig >> QGVAR(turretDetonationProb), "NUMBER", 0] call CBA_fnc_getConfigEntry) * _incendiary * _chanceOfDetonation * _penChance; _chanceOfFire = ([_vehicleConfig >> QGVAR(turretFireProb), "NUMBER", 0] call CBA_fnc_getConfigEntry) * _incendiary * _chanceOfDetonation * _penChance; - + private _cookoffIntensity = _explosiveAmmoCount * _chanceOfFire; TRACE_6("hit turret",_chanceToDetonate,_chanceOfFire,_incendiary,_chanceOfDetonation,_currentFuel,_cookoffIntensity); - + if (_isCar) then { _chanceOfFire = 0; // no cookoff for cars }; - + if ([_vehicle, _chanceToDetonate, _currentVehicleAmmo, _explosiveAmmoCount, _nonExplosiveAmmoCount, _injurer] call FUNC(handleDetonation)) exitWith { [_vehicle] call FUNC(knockOut); }; - + if (0.8 * _ammoEffectiveness > random 1) then { TRACE_1("damaged turret", _ammoEffectiveness * 0.8); [_vehicle, _hitIndex, _hitpointName, 1 * _penChance] call FUNC(addDamage); _vehicle setVariable [QGVAR(canShoot), false]; }; - + [_vehicle, _injuryChance, _injuryCount, _injurer, [0.5, 1.5, 1.5, 0.8]] call FUNC(injureOccupants); [_vehicle, _chanceOfFire, _cookoffIntensity, _injurer, "", true] call FUNC(handleCookoff); }; @@ -316,7 +316,7 @@ switch (_hitArea) do { private _damage = (0.1 max (0.1 * _newDamage / _minDamage)) min 1; [_vehicle, _hitIndex, _hitpointName, (_currentPartDamage + _damage) * _penChance] call FUNC(addDamage); TRACE_3("damaged track",_damage,_newDamage,_minDamage); - + if ((_vehicle getHitIndex _hitIndex) >= 1) then { _vehicle setVariable [QGVAR(canMove), false]; }; @@ -329,13 +329,13 @@ switch (_hitArea) do { _chanceOfFire = (_incendiary * _currentFuel * _penChance) / 2; private _cookoffIntensity = _currentFuel * 5; TRACE_2("damaged fuel",_chanceOfFire,_cookoffIntensity); - + if (_isCar) then { _chanceOfFire = 0; // no cookoff for cars }; - + [_vehicle, _chanceOfFire, _cookoffIntensity, _injurer, "", false] call FUNC(handleCookoff); - + private _damage = (0.1 max (0.1 * _newDamage / _minDamage)) min 1; [_vehicle, _hitIndex, _hitpointName, (_currentPartDamage + _damage) * _penChance] call FUNC(addDamage); }; @@ -345,13 +345,13 @@ switch (_hitArea) do { if (_warheadType isEqualTo WARHEAD_TYPE_HEAT || { _warheadType isEqualTo WARHEAD_TYPE_TANDEM } || { _warheadType isEqualTo WARHEAD_TYPE_HE } || { 0.01 > random 1 }) then { private _currentDamage = _vehicle getHitIndex _hitIndex; TRACE_3("damaged slat",_warheadType,_warheadTypeStr,_currentDamage); - + if (_warheadType isEqualTo WARHEAD_TYPE_HEAT || { _warheadType isEqualTo WARHEAD_TYPE_TANDEM }) then { [_vehicle, _hitIndex, _hitpointName, 1] call FUNC(addDamage); } else { [_vehicle, _hitIndex, _hitpointName, _currentDamage + (0.5 max random 1)] call FUNC(addDamage); }; - + if (_currentDamage < 1 && _warheadType isEqualTo WARHEAD_TYPE_HEAT) then { _return = false; }; @@ -363,7 +363,7 @@ switch (_hitArea) do { private _currentDamage = _vehicle getHitIndex _hitIndex; TRACE_3("damaged era",_warheadType,_warheadTypeStr,_currentDamage); [_vehicle, _hitIndex, _hitpointName, 1] call FUNC(addDamage); - + // dont process anymore damage if this is HEAT - shouldnt happen anyway but ARMA says it does so you know if (_currentDamage < 1 && _warheadType isEqualTo WARHEAD_TYPE_HEAT) then { _return = false; diff --git a/addons/vehicle_damage/stringtable.xml b/addons/vehicle_damage/stringtable.xml index d1b626d574..b9def24abe 100644 --- a/addons/vehicle_damage/stringtable.xml +++ b/addons/vehicle_damage/stringtable.xml @@ -3,21 +3,45 @@ ACE Advanced Vehicle Damage + ACE 拡張車両ダメージ + ACE Dégâts de véhicule avancés + ACE Erweiterter Fahrzeugsschaden + ACE Zaawansowany system uszkodzeń pojazdów Enable/Disable advanced vehicle damage + 拡張車両ダメージの使用を設定します。 + Active les dégâts de véhicule avancés. + Aktiviert/Deaktiviert den Erweiterten Fahrzeugsschaden + Włącz/Wyłącz zaawansowane uszkodzenia pojazdów Enable/Disable advanced car damage (Experimental) + 拡張車ダメージ (試験的) + Active les dégâts avancés sur les voitures (expérimental). + Aktiviert/Deaktiviert den Erweiterten Fahrzeugsschaden (Experimentell) + Włącz/Wyłącz zaawansowane uszkodzenia w samochodach (eksperymentalne) Enable/Disable advanced Car Damage + 拡張車ダメージの使用を設定します。 + Dégâts de voiture avancés + Aktiviert/Deaktiviert erweiterten Autoschaden + Włącz/Wyłącz zaawansowane uszkodzenia w samochodach Removes all vehicle ammo after cook-off + 誘爆後は車両から全ての弾薬を削除します。 + Retire toutes les munitions des véhicules après une auto-inflammation. + Entfernt die gesamte Munition nach dem Durchzünden der Munition eines Fahrzeuges. + Usuwa całą amunicję z pojazdu po samozapłonie Enable/Disable Ammo Removal During Cook-Off + 誘爆後の弾薬処理 + Retirer les munitions durant l'auto-inflammation + Aktiviert/Deaktiviert Entfernung der Munition beim Durchzünden + Włącz/Wyłącz usuwanie amunicji podczas samozapłonu Wreck (Turret) diff --git a/addons/vehiclelock/functions/script_component.hpp b/addons/vehiclelock/functions/script_component.hpp index 0e05142c6e..ea59437b17 100644 --- a/addons/vehiclelock/functions/script_component.hpp +++ b/addons/vehiclelock/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\vehiclelock\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\vehiclelock\script_component.hpp" diff --git a/addons/vehiclelock/initSettings.sqf b/addons/vehiclelock/initSettings.sqf index 68a29ed749..9f68c77e7c 100644 --- a/addons/vehiclelock/initSettings.sqf +++ b/addons/vehiclelock/initSettings.sqf @@ -1,5 +1,3 @@ -// CBA Settings [ADDON: ace_vehicleLock]: - [ QGVAR(defaultLockpickStrength), "SLIDER", [LSTRING(DefaultLockpickStrength_DisplayName), LSTRING(DefaultLockpickStrength_Description)], diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml index 1b4d7de361..0c3bcc4585 100644 --- a/addons/vehiclelock/stringtable.xml +++ b/addons/vehiclelock/stringtable.xml @@ -284,6 +284,7 @@ Устранить неоднозначные состояния замков Usuń niejednoznaczny stan blokady あいまいな鍵の状態を削除 + Unklaren Sperrzustand entfernen As Is diff --git a/addons/vehicles/CfgVehicles.hpp b/addons/vehicles/CfgVehicles.hpp index 45d0e557e4..4bd65cd52f 100644 --- a/addons/vehicles/CfgVehicles.hpp +++ b/addons/vehicles/CfgVehicles.hpp @@ -112,14 +112,14 @@ class CfgVehicles { }; }; }; - - - + + + class MBT_02_base_F: Tank_F { fuelCapacity = 600 * FUEL_FACTOR; // again, couldn't find proper data }; - + // Change boat minigun ammo to 7.62 class Ship_F: Ship {}; @@ -154,7 +154,7 @@ class CfgVehicles { class MRAP_02_base_F: Car_F { fuelCapacity = 500 * FUEL_FACTOR; // couldn't find any data for the punisher }; - + class MRAP_03_base_F: Car_F { fuelCapacity = 860 * FUEL_FACTOR; smokeLauncherGrenadeCount = 3; diff --git a/addons/vehicles/XEH_PREP.hpp b/addons/vehicles/XEH_PREP.hpp index de72ce99f8..65dbbd53b8 100644 --- a/addons/vehicles/XEH_PREP.hpp +++ b/addons/vehicles/XEH_PREP.hpp @@ -1,4 +1,4 @@ PREP(autoThrottle); PREP(speedLimiter); PREP(startEngine); -PREP(setVehicleStartDelay); \ No newline at end of file +PREP(setVehicleStartDelay); diff --git a/addons/vehicles/functions/fnc_setVehicleStartDelay.sqf b/addons/vehicles/functions/fnc_setVehicleStartDelay.sqf index 337a1d961b..08a7ba55b9 100644 --- a/addons/vehicles/functions/fnc_setVehicleStartDelay.sqf +++ b/addons/vehicles/functions/fnc_setVehicleStartDelay.sqf @@ -20,4 +20,4 @@ params [["_veh", objNull, [objNull]], ["_delay", 0, [99]]]; if (isNull _veh || {!(_veh isKindOf "AllVehicles")}) exitWith {}; -_veh setVariable [QGVAR(engineStartDelay), _delay max 0, true]; \ No newline at end of file +_veh setVariable [QGVAR(engineStartDelay), _delay max 0, true]; diff --git a/addons/vehicles/functions/fnc_speedLimiter.sqf b/addons/vehicles/functions/fnc_speedLimiter.sqf index 6d76293bff..ba3928e3e0 100644 --- a/addons/vehicles/functions/fnc_speedLimiter.sqf +++ b/addons/vehicles/functions/fnc_speedLimiter.sqf @@ -32,7 +32,7 @@ if (_speedLimit != 0) exitWith { TRACE_1("speed limit set by external source",_s playSound "ACE_Sound_Click"; GVAR(isSpeedLimiter) = true; -GVAR(speedLimit) = speed _vehicle max 5; +GVAR(speedLimit) = round (speed _vehicle max 5); [{ params ["_args", "_idPFH"]; @@ -42,11 +42,13 @@ GVAR(speedLimit) = speed _vehicle max 5; private _uavControll = UAVControl _vehicle; if ((_uavControll select 0) != _driver || _uavControll select 1 != "DRIVER") then { GVAR(isSpeedLimiter) = false; + TRACE_1("UAV driver changed, disabling speedlimit",_vehicle); _vehicle setCruiseControl [0, false]; }; } else { if (_driver != driver _vehicle) then { GVAR(isSpeedLimiter) = false; + TRACE_3("Vehicle driver changed, disabling speedlimit",_driver,driver _vehicle,_vehicle); _vehicle setCruiseControl [0, false]; }; }; @@ -57,7 +59,8 @@ GVAR(speedLimit) = speed _vehicle max 5; }; getCruiseControl _vehicle params ["_currentSpeedLimit"]; - if (_currentSpeedLimit != GVAR(speedLimit)) then { + if (round _currentSpeedLimit != GVAR(speedLimit)) then { + TRACE_2("Updating speed limit",GVAR(speedLimit),_vehicle); _vehicle setCruiseControl [GVAR(speedLimit), false]; }; diff --git a/addons/vehicles/functions/script_component.hpp b/addons/vehicles/functions/script_component.hpp index f84b06d718..4858805302 100644 --- a/addons/vehicles/functions/script_component.hpp +++ b/addons/vehicles/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\vehicles\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\vehicles\script_component.hpp" diff --git a/addons/viewdistance/initSettings.sqf b/addons/viewdistance/initSettings.sqf index 9c474b5f1f..26f0f25017 100644 --- a/addons/viewdistance/initSettings.sqf +++ b/addons/viewdistance/initSettings.sqf @@ -10,7 +10,7 @@ private _category = format ["ACE %1", localize LSTRING(Module_DisplayName)]; [ QGVAR(viewDistanceOnFoot), "SLIDER", - [LSTRING(onFoot_DisplayName), LSTRING(onFoot_Description)], + [LSTRING(onFoot_DisplayName), format ["%1\n%2", LLSTRING(onFoot_Description), LLSTRING(sliderExtraDescription)]], _category, [0, 10000, 0, -1], 0, @@ -19,7 +19,7 @@ private _category = format ["ACE %1", localize LSTRING(Module_DisplayName)]; [ QGVAR(viewDistanceLandVehicle), "SLIDER", - [LSTRING(landVehicle_DisplayName), LSTRING(landVehicle_Description)], + [LSTRING(landVehicle_DisplayName), format ["%1\n%2", LLSTRING(landVehicle_Description), LLSTRING(sliderExtraDescription)]], _category, [0, 10000, 0, -1], 0, @@ -28,7 +28,7 @@ private _category = format ["ACE %1", localize LSTRING(Module_DisplayName)]; [ QGVAR(viewDistanceAirVehicle), "SLIDER", - [LSTRING(airVehicle_DisplayName), LSTRING(airVehicle_Description)], + [LSTRING(airVehicle_DisplayName), format ["%1\n%2", LLSTRING(airVehicle_Description), LLSTRING(sliderExtraDescription)]], _category, [0, 10000, 0, -1], 0, diff --git a/addons/viewdistance/stringtable.xml b/addons/viewdistance/stringtable.xml index 664a9df668..55a55fc4c4 100644 --- a/addons/viewdistance/stringtable.xml +++ b/addons/viewdistance/stringtable.xml @@ -118,6 +118,9 @@ 玩家的视距限制可在此设定,也可透过模块改写 玩家的視距限制可在此設定,也可透過模塊改寫 + + Setting to 0 will use default video settings + Client View Distance (On Foot) Zasięg widzenia (piechota) diff --git a/addons/viewrestriction/CfgVehicles.hpp b/addons/viewrestriction/CfgVehicles.hpp index 24c0fa89bd..4b80829913 100644 --- a/addons/viewrestriction/CfgVehicles.hpp +++ b/addons/viewrestriction/CfgVehicles.hpp @@ -17,7 +17,7 @@ class CfgVehicles { class ACE_Module; class XGVAR(Module): ACE_Module { author = ECSTRING(common,ACETeam); - category = "ACEX"; + category = "ACE"; function = QFUNC(moduleInit); displayName = CSTRING(ModuleDisplayName); scope = 1; diff --git a/addons/viewrestriction/README.md b/addons/viewrestriction/README.md index 5ef22641f0..883014f3cd 100644 --- a/addons/viewrestriction/README.md +++ b/addons/viewrestriction/README.md @@ -2,3 +2,7 @@ ace_viewrestriction =============== The View Restriction module introduces restricting of first and third person views overall or configured per type. + +## ACEX Conversion - things still using acex prefix +- All settings +- CfgVehicles Module Classname diff --git a/addons/viewrestriction/config.cpp b/addons/viewrestriction/config.cpp index 946fc5bdfe..40158953cf 100644 --- a/addons/viewrestriction/config.cpp +++ b/addons/viewrestriction/config.cpp @@ -13,10 +13,7 @@ class CfgPatches { VERSION_CONFIG; }; - class XADDON: ADDON { - units[] = {}; - weapons[] = {}; - }; + BWC_CONFIG(XADDON); }; #include "CfgEventHandlers.hpp" diff --git a/addons/volume/README.md b/addons/volume/README.md index 664cd35b01..88dcd37c6e 100644 --- a/addons/volume/README.md +++ b/addons/volume/README.md @@ -2,3 +2,7 @@ ace_volume ========== Volume module reduces volume in vehicles or on keypress. + +## ACEX Conversion - things still using acex prefix +- All settings +- CBA Keybind ID diff --git a/addons/volume/XEH_postInitClient.sqf b/addons/volume/XEH_postInitClient.sqf index 5f04a54400..2ce8f03a10 100644 --- a/addons/volume/XEH_postInitClient.sqf +++ b/addons/volume/XEH_postInitClient.sqf @@ -2,7 +2,7 @@ if (!hasInterface) exitWith {}; -["ACEX", QXGVAR(toggle), [LLSTRING(KeybindName), LLSTRING(KeybindDescription)], "", { +["ACE3 Common", QXGVAR(toggle), [LLSTRING(KeybindName), LLSTRING(KeybindDescription)], "", { if (!XGVAR(enabled)) exitWith { if (GVAR(isLowered)) then { call FUNC(restoreVolume); diff --git a/addons/volume/initSettings.sqf b/addons/volume/initSettings.sqf index 2f6782f5ab..8735f81527 100644 --- a/addons/volume/initSettings.sqf +++ b/addons/volume/initSettings.sqf @@ -14,7 +14,7 @@ "LIST", [LSTRING(Reduction), LSTRING(ReductionDescription)], format ["ACE %1", LLSTRING(Name)], - [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], ["0%", "10%", "20%", "30%", "40%", "50%", "60%", "70%", "80%", "90%", "100%"], 0], + [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], ["0%", "10%", "20%", "30%", "40%", "50%", "60%", "70%", "80%", "90%", "100%"], 5], false, {[QGVAR(reduction), _this] call EFUNC(common,cbaSettings_settingChanged)}, false @@ -25,7 +25,7 @@ "LIST", [LSTRING(FadeDelay), LSTRING(FadeDelayDescription)], format ["ACE %1", LLSTRING(Name)], - [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], ["0s", "1s", "2s", "3s", "4s", "5s", "6s", "7s", "8s", "9s", "10s"], 0], + [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], ["0s", "1s", "2s", "3s", "4s", "5s", "6s", "7s", "8s", "9s", "10s"], 1], false, {[QGVAR(fadeDelay), _this] call EFUNC(common,cbaSettings_settingChanged)}, false @@ -47,7 +47,7 @@ "CHECKBOX", [LSTRING(ShowNotification), LSTRING(ShowNotificationDescription)], format ["ACE %1", LLSTRING(Name)], - false, + true, false, {[QGVAR(showNotification), _this] call EFUNC(common,cbaSettings_settingChanged)}, false diff --git a/addons/weaponselect/XEH_postInit.sqf b/addons/weaponselect/XEH_postInit.sqf index 4706363271..0d5f3dd83f 100644 --- a/addons/weaponselect/XEH_postInit.sqf +++ b/addons/weaponselect/XEH_postInit.sqf @@ -201,7 +201,7 @@ if (!hasInterface) exitWith {}; if (!([ACE_player, vehicle ACE_player, []] call EFUNC(common,canInteractWith))) exitWith {false}; // Conditions: specific if ((ACE_player isEqualTo (vehicle ACE_player)) || {ACE_player != (driver (vehicle ACE_player))}) exitWith {false}; - + // Statement (vehicle ACE_player) setCollisionLight !(isCollisionLightOn (vehicle ACE_player)); true diff --git a/addons/weaponselect/functions/script_component.hpp b/addons/weaponselect/functions/script_component.hpp index b7e33ed562..8b646cdaf8 100644 --- a/addons/weaponselect/functions/script_component.hpp +++ b/addons/weaponselect/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\weaponselect\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\weaponselect\script_component.hpp" diff --git a/addons/weaponselect/initSettings.sqf b/addons/weaponselect/initSettings.sqf index b39251d0b8..507a4b5851 100644 --- a/addons/weaponselect/initSettings.sqf +++ b/addons/weaponselect/initSettings.sqf @@ -1,8 +1,8 @@ -// CBA Settings [ADDON: ace_weaponselect]: - -[QGVAR(displayText), "CHECKBOX", -[LSTRING(SettingDisplayTextName), LSTRING(SettingDisplayTextDesc)], -localize ELSTRING(common,ACEKeybindCategoryWeapons), -true, // default value -false, // isGlobal -{[QGVAR(displayText), _this] call EFUNC(common,cbaSettings_settingChanged)}] call CBA_fnc_addSetting; +[ + QGVAR(displayText), "CHECKBOX", + [LSTRING(SettingDisplayTextName), LSTRING(SettingDisplayTextDesc)], + localize ELSTRING(common,ACEKeybindCategoryWeapons), + true, // default value + false, // isGlobal + {[QGVAR(displayText), _this] call EFUNC(common,cbaSettings_settingChanged)} +] call CBA_fnc_addSetting; diff --git a/addons/weather/functions/fnc_displayAirTemp.sqf b/addons/weather/functions/fnc_displayAirTemp.sqf index e32d60a159..f6aadb1477 100644 --- a/addons/weather/functions/fnc_displayAirTemp.sqf +++ b/addons/weather/functions/fnc_displayAirTemp.sqf @@ -17,10 +17,10 @@ */ params ["_apparent_temperature", "_bias"]; -TRACE_2("params",_temperature, _bias); +TRACE_2("displayAirTemp",_apparent_temperature, _bias); -_temperature1 = floor(_temperature + (_bias select 0) - (random 2)); -_temperature2 = floor(_temperature + (_bias select 1) + (random 2)); +private _temperature1 = floor(_apparent_temperature + (_bias select 0) - (random 2)); +private _temperature2 = floor(_apparent_temperature + (_bias select 1) + (random 2)); private _color1 = [ // Colors obtained by quartic regression formula of RGB values at corresponding temperatures as marked on advanced_ballistics rangecard @@ -41,8 +41,6 @@ private _color2 = [ _text = composeText [_text, [format ["%1C", _temperature2], _color2] call EFUNC(common,stringToColoredText)]; -[_text, QPATHTOF(UI\temp_ca.paa),_color, ACE_player, 2] call EFUNC(common,displayTextPicture); - /* for "_i" from -40 to 40 step 4 do { _temp_color = _color; diff --git a/addons/weather/functions/script_component.hpp b/addons/weather/functions/script_component.hpp index e1916225e8..2ad2cb2ab6 100644 --- a/addons/weather/functions/script_component.hpp +++ b/addons/weather/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\weather\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\weather\script_component.hpp" diff --git a/addons/yardage450/functions/script_component.hpp b/addons/yardage450/functions/script_component.hpp index ed5cf1b7c7..dde6a49b85 100644 --- a/addons/yardage450/functions/script_component.hpp +++ b/addons/yardage450/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\yardage450\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\yardage450\script_component.hpp" diff --git a/addons/zeus/CfgVehicles.hpp b/addons/zeus/CfgVehicles.hpp index 1d86d5fee3..737f2acc09 100644 --- a/addons/zeus/CfgVehicles.hpp +++ b/addons/zeus/CfgVehicles.hpp @@ -324,6 +324,13 @@ class CfgVehicles { class ModuleArsenal_F: Module_F { function=QFUNC(bi_moduleArsenal); }; + class GVAR(moduleBurn): GVAR(moduleBase) { + curatorCanAttach = 1; + category = QGVAR(Medical); + displayName = CSTRING(ModuleBurn_DisplayName); + function = QFUNC(moduleBurn); + icon = QPATHTOF(ui\Icon_Module_Zeus_Burn_ca.paa); + }; class Man; class CAManBase: Man { diff --git a/addons/zeus/XEH_PREP.hpp b/addons/zeus/XEH_PREP.hpp index 2d218ddb8f..c92c98b211 100644 --- a/addons/zeus/XEH_PREP.hpp +++ b/addons/zeus/XEH_PREP.hpp @@ -13,6 +13,7 @@ PREP(moduleAddAceArsenal); PREP(moduleAddSpareTrack); PREP(moduleAddSpareWheel); PREP(moduleAddOrRemoveFRIES); +PREP(moduleBurn); PREP(moduleCaptive); PREP(moduleCargoParadrop); PREP(moduleConfigurePylons); diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index 932d5e09c8..fba513760e 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -87,6 +87,11 @@ class CfgPatches { QGVAR(RemoveFullAceArsenal) }; }; + class GVAR(fire): ADDON { + units[] = { + QGVAR(moduleBurn) + }; + }; }; class ACE_Curator { @@ -98,6 +103,7 @@ class ACE_Curator { GVAR(fastroping) = "ace_fastroping"; GVAR(pylons) = "ace_pylons"; GVAR(arsenal) = "ace_arsenal"; + GVAR(fire) = "ace_fire"; }; #include "CfgFactionClasses.hpp" diff --git a/addons/zeus/functions/fnc_moduleBurn.sqf b/addons/zeus/functions/fnc_moduleBurn.sqf new file mode 100644 index 0000000000..43e00d6abd --- /dev/null +++ b/addons/zeus/functions/fnc_moduleBurn.sqf @@ -0,0 +1,42 @@ +#include "script_component.hpp" +/* + * Author: BaerMitUmlaut + * Inflames a unit. + * + * Arguments: + * 0: The module logic + * + * Return Value: + * None + * + * Example: + * [LOGIC] call ace_zeus_fnc_moduleBurn + * + * Public: No + */ + +params ["_logic"]; + +if !(local _logic) exitWith {}; + +private _unit = attachedTo _logic; +deleteVehicle _logic; + +switch (false) do { + case !(isNull _unit): { + [LSTRING(NothingSelected)] call FUNC(showMessage); + }; + case (_unit isKindOf "CAManBase"): { + [LSTRING(OnlyInfantry)] call FUNC(showMessage); + }; + case (alive _unit): { + [LSTRING(OnlyAlive)] call FUNC(showMessage); + }; + case (["ace_fire"] call EFUNC(common,isModLoaded)): { + [LSTRING(RequiresAddon)] call FUNC(showMessage); + }; + default { + [QEGVAR(fire,burn), [_unit, 5]] call CBA_fnc_globalEvent; + }; +}; + diff --git a/addons/zeus/functions/script_component.hpp b/addons/zeus/functions/script_component.hpp index 35453cc4e8..73e8156c1c 100644 --- a/addons/zeus/functions/script_component.hpp +++ b/addons/zeus/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\zeus\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\zeus\script_component.hpp" diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index 9d8d966239..41959254b0 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -1891,5 +1891,9 @@ Aucune cargaison chargée Kargo yüklenmedi + + Burn Unit + Einheit anzünden + diff --git a/addons/zeus/ui/Icon_Module_Zeus_Burn_ca.paa b/addons/zeus/ui/Icon_Module_Zeus_Burn_ca.paa new file mode 100644 index 0000000000..b76c33f1b5 Binary files /dev/null and b/addons/zeus/ui/Icon_Module_Zeus_Burn_ca.paa differ diff --git a/docs/.gitattributes b/docs/.gitattributes index de2616570b..b6b22eb5f6 100644 --- a/docs/.gitattributes +++ b/docs/.gitattributes @@ -1,5 +1,6 @@ * text=auto *.png binary *.jpg binary +*.webp binary *.paa binary *.sh eol=lf diff --git a/docs/_config.yml b/docs/_config.yml index 2072a7255a..c8b22232dc 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -8,17 +8,9 @@ ace: githubUrl: https://github.com/acemod/ACE3 version: major: 3 - minor: 13 - patch: 6 - build: 60 - -acex: - githubUrl: https://github.com/acemod/ACEX - version: - major: 3 - minor: 5 - patch: 4 - build: 23 + minor: 14 + patch: 0 + build: 63 markdown: kramdown diff --git a/docs/_config_dev.yml b/docs/_config_dev.yml index 4eefeb933b..b5cf2bebed 100644 --- a/docs/_config_dev.yml +++ b/docs/_config_dev.yml @@ -12,14 +12,6 @@ ace: patch: 2 build: 49 -acex: - githubUrl: https://github.com/acemod/ACEX - version: - major: 3 - minor: 5 - patch: 2 - build: 19 - markdown: kramdown kramdown: diff --git a/docs/_includes/_footer.html b/docs/_includes/_footer.html index 8763b6c35a..f0e19019ac 100644 --- a/docs/_includes/_footer.html +++ b/docs/_includes/_footer.html @@ -14,9 +14,15 @@

Social Media

diff --git a/docs/_includes/_header.html b/docs/_includes/_header.html index 84bcab8d2e..3fd9147794 100644 --- a/docs/_includes/_header.html +++ b/docs/_includes/_header.html @@ -8,7 +8,6 @@ - @@ -17,15 +16,17 @@ - + - + - + + + diff --git a/docs/_includes/_navigation.html b/docs/_includes/_navigation.html index f0e2703ffd..82b0508518 100644 --- a/docs/_includes/_navigation.html +++ b/docs/_includes/_navigation.html @@ -1,7 +1,7 @@