Merge branch 'master' into pr/7002

This commit is contained in:
johnb432 2024-07-03 11:31:46 +02:00
commit 8a7ec9558a
32 changed files with 159 additions and 71 deletions

View File

@ -22,7 +22,7 @@ if (!alive _vehicle) exitWith {};
if (_vehicle getVariable [QGVAR(droneActionsAdded), false]) exitWith {};
_vehicle setVariable [QGVAR(droneActionsAdded), true];
// move to location
// Move to location
private _condition = {
params ["_vehicle"];
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]}
@ -37,9 +37,58 @@ private _action = [QGVAR(droneSetWaypointMove), localize "$STR_AC_MOVE",
"\a3\3DEN\Data\CfgWaypoints\Move_ca.paa", _statement, _condition] call EFUNC(interact_menu,createAction);
[_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject);
// Follow unit/vehicle at turret location
_condition = {
params ["_vehicle"];
private _target = cursorTarget;
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]} && {!isNull _target} && {["CAManBase", "LandVehicle", "Ship"] findIf {_target isKindOf _x} != -1}
};
_statement = {
params ["_vehicle"];
private _group = group driver _vehicle;
private _pos = ([_vehicle, [0]] call FUNC(droneGetTurretTargetPos)) select 0;
[QGVAR(droneSetWaypoint), [_vehicle, _group, _pos, "FOLLOW", cursorTarget], _group] call CBA_fnc_targetEvent;
private _followDistance = _vehicle getVariable [QGVAR(wpFollowDistance), 0];
[[LLSTRING(DroneFollowHint), _followDistance], 3] call EFUNC(common,displayTextStructured);
};
_action = [QGVAR(droneSetWaypointFollow), localize "$STR_AC_FOLLOW", "\a3\3DEN\Data\CfgWaypoints\Follow_ca.paa", _statement, _condition] call EFUNC(interact_menu,createAction);
[_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject);
// Set drone follow distance
_condition = {
params ["_vehicle"];
private _group = group driver _vehicle;
private _index = (currentWaypoint _group) min count waypoints _group;
private _waypoint = [_group, _index];
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]} && {(waypointType _waypoint) == "HOLD"}
};
_statement = {
params ["_vehicle", "", "_value"];
_vehicle setVariable [QGVAR(wpFollowDistance), _value];
[[LLSTRING(DroneFollowHint), _value], 3] call EFUNC(common,displayTextStructured);
};
_action = [QGVAR(droneSetFollowDistance), LLSTRING(DroneFollowDistance), "", {}, _condition] call EFUNC(interact_menu,createAction);
private _base = [_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject);
private _followDistances = if (_vehicle isKindOf "Car_F") then {
[0, 25, 50, 100, 200]
} else {
[0, 100, 200, 300, 400, 500]
};
{
_action = [
QGVAR(droneSetFollowDistance_) + str _x,
str _x,
"",
_statement,
{true},
{},
_x
] call EFUNC(interact_menu,createAction);
[_vehicle, 1, _base, _action] call EFUNC(interact_menu,addActionToObject);
} forEach _followDistances;
if (_vehicle isKindOf "Air") then {
// loiter at location
// Loiter at location
_condition = {
params ["_vehicle"];
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]}
@ -55,7 +104,7 @@ if (_vehicle isKindOf "Air") then {
[_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject);
// set height
// Set height
_condition = {
params ["_vehicle"];
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]}
@ -74,7 +123,7 @@ if (_vehicle isKindOf "Air") then {
} forEach [20, 50, 200, 500, 2000];
// set loiter radius
// Set loiter radius
_condition = {
params ["_vehicle"];
private _group = group driver _vehicle;
@ -97,7 +146,7 @@ if (_vehicle isKindOf "Air") then {
} forEach [500, 750, 1000, 1250, 1500];
// set loiter direction
// Set loiter direction
_condition = {
params ["_vehicle", "", "_args"];
private _group = group driver _vehicle;

View File

@ -8,6 +8,7 @@
* 1: Group <GROUP>
* 2: Pos 2D <ARRAY>
* 3: Type <STRING>
* 4: Target to follow <OBJECT> (default: objNull)
*
* Return Value:
* None
@ -18,7 +19,7 @@
* Public: No
*/
params ["_vehicle", "_group", "_pos", "_type"];
params ["_vehicle", "_group", "_pos", "_type", ["_target", objNull]];
TRACE_4("droneSetWaypoint",_vehicle,_group,_pos,_type);
private _index = (currentWaypoint _group) min count waypoints _group;
@ -34,9 +35,34 @@ _pos set [
[0, _currentHeight] select (_currentHeight >= 50)
];
// [_group] call CBA_fnc_clearWaypoints;
_waypoint = _group addWaypoint [_pos, 0];
_waypoint setWaypointType _type;
// The Vanilla "FOLLOW"-type waypoint is not used directly, due to 2 main issues (as of v2.16):
// - It does not work at all for UGVs, which is a known issue https://feedback.bistudio.com/T126283;
// - No clear scripting way was found to mimic the UAV Terminal's "Follow Distance" functionality;
// Instead, the solution for both UAV and UGV following consists of a CBA PFH that moves a "HOLD"-type Waypoint every 3 seconds.
// Either on the target itself, or on the Drone's current position if the target is within the desired follow distance.
if (_type == "FOLLOW" && {["CAManBase", "LandVehicle", "Ship"] findIf {_target isKindOf _x} != -1}) then {
_waypoint setWaypointType "HOLD";
[{
params ["_args", "_handle"];
_args params ["_vehicle", "_group", "_waypoint", "_target"];
if ( // Abort PFH if a new waypoint is created via UAV Terminal or ACE Interaction
_waypoint select 1 != currentWaypoint _group ||
{!alive _vehicle} || {isNull _target}
) exitWith {
deleteWaypoint _waypoint;
[_handle] call CBA_fnc_removePerFrameHandler;
};
private _followDistance = _vehicle getVariable [QGVAR(wpFollowDistance), 0];
if ((_vehicle distance2D _target) < _followDistance) then {
_waypoint setWaypointPosition [getPosASL _vehicle, -1];
} else {
_waypoint setWaypointPosition [getPosASL _target, -1];
};
}, 3, [_vehicle, _group, _waypoint, _target]] call CBA_fnc_addPerFrameHandler;
};
TRACE_3("",_currentHeight,_currentLoiterRadius,_currentLoiterType);
if (_currentHeight > 1) then { _vehicle flyInHeight _currentHeight; };

View File

@ -129,7 +129,7 @@
<Japanese>30mm コンバット ミックス 4:1 劣化ウラン徹甲弾:焼夷榴弾</Japanese>
<Czech>30mm Bojový Mix 4:1 DU:HEI</Czech>
<Russian>30мм Смешанное боепитание 4:1 ОУ:ОФЗ</Russian>
<Korean>30mm 4:1 열화:고폭소이</Korean>
<Korean>30mm 열화우라늄:고폭소이 4:1 혼합</Korean>
<Portuguese>30mm Mix de Combate 4:1 DU:AEI</Portuguese>
</Key>
<Key ID="STR_ACE_Aircraft_GatlingDescriptionShortCM41">
@ -145,7 +145,7 @@
<Japanese>30mm CM 4:1</Japanese>
<Czech>30mm BM 4:1</Czech>
<Russian>30мм СБ 4:1</Russian>
<Korean>30mm CM 4:1</Korean>
<Korean>30mm 4:1 혼합</Korean>
</Key>
<Key ID="STR_ACE_Aircraft_GatlingDescriptionCM51">
<English>30mm Combat Mix 5:1 DU:HEI</English>
@ -160,7 +160,7 @@
<Japanese>30mm コンバット ミックス 5:1 劣化ウラン徹甲弾:焼夷榴弾</Japanese>
<Czech>30mm Bojový Mix 5:1 DU:HEI</Czech>
<Russian>30мм Смешанное боепитание 5:1 ОУ:ОФЗ</Russian>
<Korean>30mm 5:1 열화:고폭소이</Korean>
<Korean>30mm 열화우라늄:고폭소이 5:1 혼합</Korean>
</Key>
<Key ID="STR_ACE_Aircraft_GatlingDescriptionShortCM51">
<English>30mm CM 5:1</English>
@ -175,7 +175,19 @@
<Japanese>30mm CM 5:1</Japanese>
<Czech>30mm BM 5:1</Czech>
<Russian>30мм СБ 5:1</Russian>
<Korean>30mm CM 5:1</Korean>
<Korean>30mm 5:1 혼합</Korean>
</Key>
<Key ID="STR_ACE_Aircraft_DroneFollowDistance">
<English>Follow Distance</English>
<Italian>Distanza di seguimento</Italian>
<German>Folge-Entfernung</German>
<Korean>따라가는 거리</Korean>
</Key>
<Key ID="STR_ACE_Aircraft_DroneFollowHint">
<English>Following unit within %1m</English>
<Italian>Seguendo unità entro %1m</Italian>
<German>Folgt Einheit bis zu %1m</German>
<Korean>%1m 이내로 유닛을 따라갑니다</Korean>
</Key>
</Package>
</Project>

View File

@ -1710,7 +1710,7 @@
<Portuguese>Carregador de 16 cartuchos 9x19 mm</Portuguese>
<Hungarian>9x19 mm 16-lövedékes tár</Hungarian>
<Japanese>9x19 mm 16Rnd マガジン</Japanese>
<Korean>17발들이 9x19mm 탄창</Korean>
<Korean>16발 들이 9x19mm 탄창</Korean>
<Chinese>9x19毫米 16發 彈匣</Chinese>
<Chinesesimp>9x19 mm 16发 弹匣</Chinesesimp>
<Turkish>9x19 mm 16Rnd Mag</Turkish>

View File

@ -21,7 +21,6 @@ params ["_unit", "_target"];
(_target getVariable [QGVAR(isHandcuffed), false]) &&
{isNull (attachedTo _target)} &&
{alive _target} &&
{!(_target getVariable ["ACE_isUnconscious", false])} &&
{_target call EFUNC(common,isAwake)} &&
{(vehicle _unit) == _unit} &&
{(vehicle _target) == _target}

View File

@ -20,7 +20,7 @@
params ["_unit", "_target", "_vehicle"];
// Don't show "Load Captive" if unit is unconscious (already has "Load Patient")
if (_target getVariable ["ACE_isUnconscious", false]) exitWith {false};
if !(_target call EFUNC(common,isAwake)) exitWith {false};
if ((isNull _target) && {_unit getVariable [QGVAR(isEscorting), false]}) then {
//Looking at a vehicle while escorting, get target from attached objects:

View File

@ -39,7 +39,7 @@ if (_state) then {
_args params ["_unit", "_target", "_actionID"];
if (_unit getVariable [QGVAR(isEscorting), false]) then {
if (!alive _target || {!alive _unit} || {!canStand _target} || {!canStand _unit} || {_target getVariable ["ACE_isUnconscious", false]} || {_unit getVariable ["ACE_isUnconscious", false]} || {!isNull (attachedTo _unit)}) then {
if (!canStand _target || {!canStand _unit} || {!(_target call EFUNC(common,isAwake))} || {!(_unit call EFUNC(common,isAwake))} || {!isNull (attachedTo _unit)}) then {
_unit setVariable [QGVAR(isEscorting), false, true];
};
};

View File

@ -19,7 +19,7 @@
params ["_unit", "_newAnimation"];
TRACE_2("AnimChanged",_unit,_newAnimation);
if (_unit == (vehicle _unit)) then {
if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then {
if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {_unit call EFUNC(common,isAwake)}) then {
TRACE_1("Handcuff animation interrupted",_newAnimation);
[_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation);
};

View File

@ -19,7 +19,7 @@
params ["_unit", "_newAnimation"];
TRACE_2("AnimChanged",_unit,_newAnimation);
if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then {
if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {_unit call EFUNC(common,isAwake)}) then {
TRACE_1("Surrender animation interrupted",_newAnimation);
[_unit, "ACE_AmovPercMstpSsurWnonDnon", 1] call EFUNC(common,doAnimation);
};

View File

@ -91,7 +91,7 @@ if (_state) then {
_unit removeEventHandler ["AnimChanged", _animChangedEHID];
_unit setVariable [QGVAR(handcuffAnimEHID), -1];
if (((vehicle _unit) == _unit) && {!(_unit getVariable ["ACE_isUnconscious", false])}) then {
if (((vehicle _unit) == _unit) && {_unit call EFUNC(common,isAwake)}) then {
//Break out of hands up animation loop
[_unit, "ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation);
};

View File

@ -86,8 +86,7 @@ if (_state) then {
};
};
if (!alive _unit) exitWith {};
if (_unit getVariable ["ACE_isUnconscious", false]) exitWith {}; //don't touch animations if unconscious
if !(_unit call EFUNC(common,isAwake)) exitWith {}; //don't touch animations if unconscious
//if we are in "hands up" animationState, crack it now
if (((vehicle _unit) == _unit) && {(animationState _unit) == "ACE_AmovPercMstpSsurWnonDnon"}) then {
@ -99,7 +98,7 @@ if (_state) then {
params ["_args", "_pfID"];
_args params ["_unit", "_maxTime"];
//If waited long enough or they re-surrendered or they are unconscious, exit loop
if ((CBA_missionTime > _maxTime) || {_unit getVariable [QGVAR(isSurrendering), false]} || {_unit getVariable ["ACE_isUnconscious", false]}) exitWith {
if ((CBA_missionTime > _maxTime) || {_unit getVariable [QGVAR(isSurrendering), false]} || {!(_unit call EFUNC(common,isAwake))}) exitWith {
[_pfID] call CBA_fnc_removePerFrameHandler;
};
//Only break animation if they are actualy the "hands up" animation (because we are using switchmove there won't be an transition)

View File

@ -29,7 +29,7 @@ if !([_unit] call EFUNC(common,isPlayer)) then {
_unit disableConversation true;
} else {
//Sanity check to make sure we don't enable unconsious AI
if (_unit getVariable ["ace_isunconscious", false] && alive _unit) exitWith {
if (_unit getVariable ["ACE_isUnconscious", false] && alive _unit) exitWith {
ERROR("Enabling AI for unconsious unit");
};

View File

@ -22,7 +22,7 @@ params ["_unit", ["_distance", 10], ["_cargoOnly", false]];
private _nearVehicles = nearestObjects [_unit, ["Car", "Air", "Tank", "Ship_F", "Pod_Heli_Transport_04_crewed_base_F"], _distance];
_nearVehicles select {
// Filter cargo seats that will eject unconscious units (e.g. quad bike)
private _canSitInCargo = (!(_unit getVariable ['ACE_isUnconscious', false])) || {(getNumber (configOf _x >> "ejectDeadCargo")) == 0};
private _canSitInCargo = (_unit call EFUNC(common,isAwake)) || {(getNumber (configOf _x >> "ejectDeadCargo")) == 0};
((fullCrew [_x, "", true]) findIf {
_x params ["_body", "_role", "_cargoIndex"];
(isNull _body) // seat empty

View File

@ -377,6 +377,7 @@
<Japanese>H225M シュペル クーガー (非武装)</Japanese>
<German>H225M Super Cougar (Unbewaffnet)</German>
<Italian>H225M Super Cougar (Disarmato)</Italian>
<Korean>H225M 슈퍼 쿠거 (비무장)</Korean>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_truck_01_water_Name">
<English>HEMTT Fire Truck</English>
@ -389,6 +390,7 @@
<Portuguese>HEMTT contra incêndio</Portuguese>
<Japanese>HEMTT 消防車</Japanese>
<Italian>HEMTT Autobotte</Italian>
<Korean>HEMTT 소방트럭</Korean>
</Key>
<Key ID="STR_ACE_Compat_RF_RealisticNames_truck_03_water_Name">
<English>Typhoon Water</English>

View File

@ -30,7 +30,7 @@
<Hungarian>Concertina wire coil</Hungarian>
<Portuguese>Bobina de arame farpado</Portuguese>
<Japanese>鉄条網コイル</Japanese>
<Korean>코일형 철조망</Korean>
<Korean>윤형철조망</Korean>
<Chinese>鐵絲網捲</Chinese>
<Chinesesimp>铁丝网卷</Chinesesimp>
<Turkish>Bıçaklı Tel Rulo</Turkish>

View File

@ -20,7 +20,8 @@ params ["_item", "_dogtagData"];
if (_item == "") exitWith {};
[ace_player, _item] call CBA_fnc_addItem;
// Verify that the unit has inventory space, otherwise drop the dogtag on the ground
[ace_player, _item, true] call CBA_fnc_addItem;
_dogtagData params ["_nickName"];
private _displayText = format [localize LSTRING(takeDogtagSuccess), _nickName];

View File

@ -23,4 +23,4 @@ if (isNull _target) exitWith {false};
// check if disabled for faction
if ((faction _target) in GVAR(disabledFactions)) exitWith {false};
(!alive _target) || {_target getVariable ["ACE_isUnconscious", false]}
!(_target call EFUNC(common,isAwake))

View File

@ -23,4 +23,4 @@ if (isNull _target) exitWith {false};
// check if disabled for faction
if ((faction _target) in GVAR(disabledFactions)) exitWith {false};
(!alive _target) || {_target getVariable ["ACE_isUnconscious", false]}
!(_target call EFUNC(common,isAwake)) && {_player canAdd ["ACE_dogtag_1", 1/*, true*/]} // Todo: Uncomment in 2.18

View File

@ -66,7 +66,7 @@
<Turkish>Al</Turkish>
</Key>
<Key ID="STR_ACE_Dogtags_takeDogtagSuccess">
<English>Dogtag taken from %1...</English>
<English>Dog Tag taken from %1...</English>
<Polish>Zabrałeś nieśmiertelnik %1...</Polish>
<Russian>Жетон снят с %1...</Russian>
<Czech>Sebral jsem známku od %1...</Czech>
@ -82,7 +82,7 @@
<Turkish>Künye %1 kişisinden alındı</Turkish>
</Key>
<Key ID="STR_ACE_Dogtags_dogtagAlreadyTaken">
<English>Somebody else has already taken the dogtag...</English>
<English>Somebody else has already taken the Dog Tag...</English>
<Polish>Ktoś już zabrał ten nieśmiertelnik...</Polish>
<Russian>Кто-то уже забрал жетон...</Russian>
<Czech>Někdo jiný už vzal identifikační známku...</Czech>
@ -98,7 +98,7 @@
<Turkish>Başka biri zaten künyeyi almış</Turkish>
</Key>
<Key ID="STR_ACE_Dogtags_IGUI_Description">
<English>Onscreen display for checking dogtags</English>
<English>Onscreen display for checking Dog Tags</English>
<German>Anzeige um Erkennungsmarke zu überprüfen</German>
<Chinese>在畫面中顯示檢查兵籍牌</Chinese>
<Chinesesimp>在画面中显示检查兵籍牌</Chinesesimp>

View File

@ -33,7 +33,7 @@ if (!GVAR(dragAndFire)) then {
private _inBuilding = _unit call FUNC(isObjectOnObject);
// Play release animation
if !(_unit getVariable ["ACE_isUnconscious", false]) then {
if (_unit call EFUNC(common,isAwake)) then {
[_unit, "released"] call EFUNC(common,doGesture);
};

View File

@ -44,7 +44,7 @@ if (_tryLoad && {!(_target isKindOf "CAManBase")} && {["ace_cargo"] call EFUNC(c
// Fix anim when aborting carrying persons
if (_target isKindOf "CAManBase" || {animationState _unit in CARRY_ANIMATIONS}) then {
if (isNull objectParent _unit && {!(_unit getVariable ["ACE_isUnconscious", false])}) then {
if (isNull objectParent _unit && {_unit call EFUNC(common,isAwake)}) then {
[_unit, "", 2] call EFUNC(common,doAnimation);
};

View File

@ -77,7 +77,7 @@ if (_average > _gBlackOut && {GETEGVAR(medical,enabled,false) && {ACE_player cal
GVAR(GForces_CC) ppEffectAdjust [1,1,0,[0,0,0,1],[0,0,0,0],[1,1,1,1],[10,10,0,0,0,0.1,0.5]];
if !(ACE_player getVariable ["ACE_isUnconscious", false]) then {
if (ACE_player call EFUNC(common,isAwake)) then {
if (_average > 0.30 * _gBlackOut) then {
private _strength = ((_average - 0.30 * _gBlackOut) / (0.70 * _gBlackOut)) max 0;
GVAR(GForces_CC) ppEffectAdjust [1,1,0,[0,0,0,1],[0,0,0,0],[1,1,1,1],[2 * (1 - _strength),2 * (1 - _strength),0,0,0,0.1,0.5]];

View File

@ -15,4 +15,4 @@
* Public: No
*/
GVAR(effects) in [2, 3] && {!GETVAR(ACE_player,ACE_isUnconscious,false)} // return
GVAR(effects) in [2, 3] && {ACE_player call EFUNC(common,isAwake)} // return

View File

@ -18,7 +18,6 @@
params ["_unit", "_target"];
alive _target
&& {!(_target getVariable ["ACE_isUnconscious", false])}
_target call EFUNC(common,isAwake)
&& {side group _unit == side group _target}
&& {group _unit != group _target} // return

View File

@ -18,7 +18,6 @@
params ["_unit", "_target"];
alive _target
&& {!(_target getVariable ["ACE_isUnconscious", false])}
_target call EFUNC(common,isAwake)
&& {!([_target] call EFUNC(common,isPlayer))}
&& {_target in units group _unit}

View File

@ -19,6 +19,5 @@
params ["_unit", "_target"];
_target isKindOf "CAManBase" &&
{alive _target} &&
{_unit distance _target < 4} &&
{!(_target getVariable ["ACE_isUnconscious", false])} // return
{_target call EFUNC(common,isAwake)} &&
{_unit distance _target < 4} // return

View File

@ -125,6 +125,7 @@
<German>Zeige der Fahrzeugbesatzung die Abschüsse des Fahrzeugs</German>
<Italian>Mostra uccisioni del veicolo a membri dell'equipaggio</Italian>
<Japanese>車両でのキルを乗員全員に表示する</Japanese>
<Korean>다른 승무원에게 차량 처치 표시</Korean>
</Key>
<Key ID="STR_ACE_KillTracker_showCrewKills_Description">
<English>Show kills from a vehicle to driver, gunner and commander</English>
@ -132,6 +133,7 @@
<German>Zeige Abschüsse des Fahrzeugs dem Fahrer, Richtschützen und Kommandanten an</German>
<Italian>Mostra uccisioni del veicolo al pilota, artigliere e comandante</Italian>
<Japanese>車両でのキルを操縦手、砲手、車長で共有して表示する</Japanese>
<Korean>차량 처치를 운전수, 사수, 지휘관에게 보여줍니다</Korean>
</Key>
</Package>
</Project>

View File

@ -18,4 +18,4 @@
params ["_caller", "_target"];
("ACE_UAVBattery" in (_caller call EFUNC(common,uniqueItems))) && {(fuel _target) < 1} && {(speed _target) < 1} && {!(isEngineOn _target)} && {(_target distance _caller) <= 4}
(alive _target) && {"ACE_UAVBattery" in (_caller call EFUNC(common,uniqueItems))} && {(fuel _target) < 1} && {(speed _target) < 1} && {!(isEngineOn _target)} && {(_target distance _caller) <= 4}

View File

@ -41,14 +41,14 @@ switch (true) do {
INFO("ACRE Detected.");
DFUNC(isSpeaking) = {
params ["_unit"];
([_unit] call acre_api_fnc_isSpeaking) && {!(_unit getVariable ["ACE_isUnconscious", false])}
([_unit] call acre_api_fnc_isSpeaking) && {_unit call EFUNC(common,isAwake)}
};
};
case (["task_force_radio"] call EFUNC(common,isModLoaded)): {
INFO("TFAR Detected.");
DFUNC(isSpeaking) = {
params ["_unit"];
(_unit getVariable ["tf_isSpeaking", false]) && {!(_unit getVariable ["ACE_isUnconscious", false])}
(_unit getVariable ["tf_isSpeaking", false]) && {_unit call EFUNC(common,isAwake)}
};
};
default {
@ -65,7 +65,7 @@ switch (true) do {
DFUNC(isSpeaking) = {
params ["_unit"];
(_unit getVariable [QGVAR(isSpeakingInGame), false]) && {!(_unit getVariable ["ACE_isUnconscious", false])}
(_unit getVariable [QGVAR(isSpeakingInGame), false]) && {_unit call EFUNC(common,isAwake)}
};
};
};

View File

@ -51,6 +51,7 @@
<German>Rückstrahl-Entfernung Multiplikator</German>
<Italian>Coefficiente distanza di svampata</Italian>
<Japanese>後方噴射の距離係数</Japanese>
<Korean>후폭풍 거리 계수</Korean>
</Key>
<Key ID="STR_ACE_Overpressure_backblastDistanceCoefficient_toolTip">
<English>Scales the backblast effect</English>
@ -58,6 +59,7 @@
<German>Skaliert den Rückstrahl-Effekt</German>
<Italian>Scala l'effetto delle svampate dei lanciarazzi</Italian>
<Japanese>無反動砲による後方噴射の影響範囲の大きさ</Japanese>
<Korean>후폭풍 효과의 스케일을 조정합니다</Korean>
</Key>
<Key ID="STR_ACE_Overpressure_statBackblastRange">
<English>Backblast range</English>

View File

@ -13,7 +13,7 @@
<Hungarian>XM312</Hungarian>
<Italian>XM312</Italian>
<Japanese>XM312</Japanese>
<Korean>XM312</Korean>
<Korean>XM312 중기관총</Korean>
<Chinese>XM312重機槍</Chinese>
<Chinesesimp>XM312</Chinesesimp>
<Turkish>XM312</Turkish>
@ -30,7 +30,7 @@
<Hungarian>XM312A</Hungarian>
<Italian>XM312A</Italian>
<Japanese>XM312A</Japanese>
<Korean>XM312A</Korean>
<Korean>XM312A 무인중기관총</Korean>
<Chinese>XM312A重機槍</Chinese>
<Chinesesimp>XM312A</Chinesesimp>
<Turkish>XM312A</Turkish>
@ -47,7 +47,7 @@
<Hungarian>XM312 (Magasított)</Hungarian>
<Italian>XM312 (Alto)</Italian>
<Japanese>XM312 (ハイマウント)</Japanese>
<Korean>XM312 (높음)</Korean>
<Korean>XM312 중기관총 (높음)</Korean>
<Chinese>XM312重機槍 (高射腳架)</Chinese>
<Chinesesimp>XM312</Chinesesimp>
<Turkish>XM312 (Yüksek)</Turkish>
@ -64,7 +64,7 @@
<Hungarian>XM307</Hungarian>
<Italian>XM307</Italian>
<Japanese>XM307</Japanese>
<Korean>XM307</Korean>
<Korean>XM307 유탄기관총</Korean>
<Chinese>XM307榴彈機槍</Chinese>
<Chinesesimp>XM307</Chinesesimp>
<Turkish>XM307</Turkish>
@ -81,7 +81,7 @@
<Hungarian>XM307A</Hungarian>
<Italian>XM307A</Italian>
<Japanese>XM307A</Japanese>
<Korean>XM307A</Korean>
<Korean>XM307A 무인유탄기관총</Korean>
<Chinese>XM307A榴彈機槍</Chinese>
<Chinesesimp>XM307A</Chinesesimp>
<Turkish>XM307A</Turkish>
@ -98,7 +98,7 @@
<Hungarian>XM307 (Magasított)</Hungarian>
<Italian>XM307 (Alto)</Italian>
<Japanese>XM307 (ハイマウント)</Japanese>
<Korean>XM307 (높음)</Korean>
<Korean>XM307 유탄기관총 (높음)</Korean>
<Chinese>XM307榴彈機槍 (高射腳架)</Chinese>
<Chinesesimp>XM307</Chinesesimp>
<Turkish>XM307 (Yüksek)</Turkish>
@ -149,7 +149,7 @@
<Hungarian>YABHON-R3</Hungarian>
<Italian>YABHON-R3</Italian>
<Japanese>YABHON-R3</Japanese>
<Korean>YABHON-R3</Korean>
<Korean>YABHON-R3 무인기</Korean>
<Chinese>"亞伯罕-R3型"空中無人載具</Chinese>
<Chinesesimp>"联合"-R3</Chinesesimp>
<Turkish>YABHON-R3</Turkish>
@ -166,7 +166,7 @@
<Italian>YABHON-R3 (CAS)</Italian>
<Portuguese>YABHON-R3 (CAS)</Portuguese>
<Japanese>YABHON-R3 (CAS)</Japanese>
<Korean>YABHON-R3 (근접지원)</Korean>
<Korean>YABHON-R3 무인기 (근접지원)</Korean>
<Chinese>"亞伯罕-R3型"空中無人載具 (近空支援)</Chinese>
<Chinesesimp>"联合"-R3近空支援</Chinesesimp>
<Turkish>YABHON-R3 (CAS)</Turkish>
@ -3668,7 +3668,7 @@
<Czech>Polaris DAGOR (XM312)</Czech>
<Turkish>Polaris DAGOR (XM312)</Turkish>
<Spanish>Polaris DAGOR (XM312)</Spanish>
<Korean>폴라리스 DAGOR (XM312)</Korean>
<Korean>폴라리스 DAGOR (XM312 중기관총)</Korean>
</Key>
<Key ID="STR_ACE_RealisticNames_lsv_01_at">
<English>Polaris DAGOR (Mini-Spike AT)</English>
@ -3684,7 +3684,7 @@
<Czech>Polaris DAGOR (Mini-Spike AT)</Czech>
<Turkish>Polaris DAGOR (Mini-Spike AT)</Turkish>
<Spanish>Polaris DAGOR (Mini-Spike AT)</Spanish>
<Korean>폴라리스 DAGOR (스파이크 미사일 대전차)</Korean>
<Korean>폴라리스 DAGOR (스파이크 대전차미사일)</Korean>
</Key>
<Key ID="STR_ACE_RealisticNames_lsv_01_unarmed">
<English>Polaris DAGOR</English>
@ -3732,7 +3732,7 @@
<Czech>LSV Mk. II (M134)</Czech>
<Turkish>LSV Mk. II (M134)</Turkish>
<Spanish>LSV Mk. II (M134)</Spanish>
<Korean>LSV Mk.II (M134)</Korean>
<Korean>LSV Mk.II (M134 미니건)</Korean>
</Key>
<Key ID="STR_ACE_RealisticNames_lsv_02_at">
<English>LSV Mk. II (Metis-M)</English>
@ -3844,7 +3844,7 @@
<Czech>Wiesel 2 Ozelot (AA)</Czech>
<Turkish>Wiesel 2 Ozelot (AA)</Turkish>
<Spanish>Wiesel 2 Ozelot (AA)</Spanish>
<Korean>비젤 2 오롯 (대공)</Korean>
<Korean>비젤 2 오롯 (대공)</Korean>
</Key>
<Key ID="STR_ACE_RealisticNames_LT_01_AT">
<English>Wiesel 2 (ATGM)</English>
@ -3860,7 +3860,7 @@
<Czech>Wiesel 2 (ATGM)</Czech>
<Turkish>Wiesel 2 (ATGM)</Turkish>
<Spanish>Wiesel 2 (ATGM)</Spanish>
<Korean>비젤 2 (대전차유도)</Korean>
<Korean>비젤 2 (대전차미사일)</Korean>
</Key>
<Key ID="STR_ACE_RealisticNames_LT_01_cannon">
<English>Wiesel 2 (MK20)</English>

View File

@ -44,15 +44,14 @@ if (GVAR(isSwimming) && {currentWeapon _unit isNotEqualTo ""}) then {
private _exitCondition = !(
(alive GVAR(attachHelper)) &&
{ alive _parent } &&
{ alive _unit } &&
{ _unit call EFUNC(common,isAwake) } &&
{
currentWeapon _unit isEqualTo ""
|| {_unit call EFUNC(common,isSwimming)} // swimming in wetsuit forces weapon in hands
|| {getPosASLW _unit select 2 < -1.5} // walking-to-swimming animation in wetsuit lasts for 3 seconds
} &&
{ [_unit, objNull, [INTERACTION_EXCEPTIONS]] call EFUNC(common,canInteractWith) } &&
{ "unconscious" isNotEqualTo toLowerANSI animationState _unit } &&
{ !(_unit getVariable ["ACE_isUnconscious", false]) } &&
{ "unconscious" != animationState _unit } &&
{ ACE_player == _unit }
);