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 {}; if (_vehicle getVariable [QGVAR(droneActionsAdded), false]) exitWith {};
_vehicle setVariable [QGVAR(droneActionsAdded), true]; _vehicle setVariable [QGVAR(droneActionsAdded), true];
// move to location // Move to location
private _condition = { private _condition = {
params ["_vehicle"]; params ["_vehicle"];
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]} (missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]}
@ -37,14 +37,63 @@ private _action = [QGVAR(droneSetWaypointMove), localize "$STR_AC_MOVE",
"\a3\3DEN\Data\CfgWaypoints\Move_ca.paa", _statement, _condition] call EFUNC(interact_menu,createAction); "\a3\3DEN\Data\CfgWaypoints\Move_ca.paa", _statement, _condition] call EFUNC(interact_menu,createAction);
[_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject); [_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 { if (_vehicle isKindOf "Air") then {
// loiter at location // Loiter at location
_condition = { _condition = {
params ["_vehicle"]; params ["_vehicle"];
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]} (missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]}
}; };
_statement = { _statement = {
params ["_vehicle"]; params ["_vehicle"];
private _group = group driver _vehicle; private _group = group driver _vehicle;
private _pos = ([_vehicle, [0]] call FUNC(droneGetTurretTargetPos)) select 0; private _pos = ([_vehicle, [0]] call FUNC(droneGetTurretTargetPos)) select 0;
@ -55,7 +104,7 @@ if (_vehicle isKindOf "Air") then {
[_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject); [_vehicle, 1, ["ACE_SelfActions"], _action] call EFUNC(interact_menu,addActionToObject);
// set height // Set height
_condition = { _condition = {
params ["_vehicle"]; params ["_vehicle"];
(missionNamespace getVariable [QGVAR(droneWaypoints), true]) && {waypointsEnabledUAV _vehicle} && {(ACE_controlledUAV select 2) isEqualTo [0]} (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]; } forEach [20, 50, 200, 500, 2000];
// set loiter radius // Set loiter radius
_condition = { _condition = {
params ["_vehicle"]; params ["_vehicle"];
private _group = group driver _vehicle; private _group = group driver _vehicle;
@ -97,7 +146,7 @@ if (_vehicle isKindOf "Air") then {
} forEach [500, 750, 1000, 1250, 1500]; } forEach [500, 750, 1000, 1250, 1500];
// set loiter direction // Set loiter direction
_condition = { _condition = {
params ["_vehicle", "", "_args"]; params ["_vehicle", "", "_args"];
private _group = group driver _vehicle; private _group = group driver _vehicle;

View File

@ -8,6 +8,7 @@
* 1: Group <GROUP> * 1: Group <GROUP>
* 2: Pos 2D <ARRAY> * 2: Pos 2D <ARRAY>
* 3: Type <STRING> * 3: Type <STRING>
* 4: Target to follow <OBJECT> (default: objNull)
* *
* Return Value: * Return Value:
* None * None
@ -18,7 +19,7 @@
* Public: No * Public: No
*/ */
params ["_vehicle", "_group", "_pos", "_type"]; params ["_vehicle", "_group", "_pos", "_type", ["_target", objNull]];
TRACE_4("droneSetWaypoint",_vehicle,_group,_pos,_type); TRACE_4("droneSetWaypoint",_vehicle,_group,_pos,_type);
private _index = (currentWaypoint _group) min count waypoints _group; private _index = (currentWaypoint _group) min count waypoints _group;
@ -34,9 +35,34 @@ _pos set [
[0, _currentHeight] select (_currentHeight >= 50) [0, _currentHeight] select (_currentHeight >= 50)
]; ];
// [_group] call CBA_fnc_clearWaypoints;
_waypoint = _group addWaypoint [_pos, 0]; _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); TRACE_3("",_currentHeight,_currentLoiterRadius,_currentLoiterType);
if (_currentHeight > 1) then { _vehicle flyInHeight _currentHeight; }; if (_currentHeight > 1) then { _vehicle flyInHeight _currentHeight; };

View File

@ -129,7 +129,7 @@
<Japanese>30mm コンバット ミックス 4:1 劣化ウラン徹甲弾:焼夷榴弾</Japanese> <Japanese>30mm コンバット ミックス 4:1 劣化ウラン徹甲弾:焼夷榴弾</Japanese>
<Czech>30mm Bojový Mix 4:1 DU:HEI</Czech> <Czech>30mm Bojový Mix 4:1 DU:HEI</Czech>
<Russian>30мм Смешанное боепитание 4:1 ОУ:ОФЗ</Russian> <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> <Portuguese>30mm Mix de Combate 4:1 DU:AEI</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Aircraft_GatlingDescriptionShortCM41"> <Key ID="STR_ACE_Aircraft_GatlingDescriptionShortCM41">
@ -145,7 +145,7 @@
<Japanese>30mm CM 4:1</Japanese> <Japanese>30mm CM 4:1</Japanese>
<Czech>30mm BM 4:1</Czech> <Czech>30mm BM 4:1</Czech>
<Russian>30мм СБ 4:1</Russian> <Russian>30мм СБ 4:1</Russian>
<Korean>30mm CM 4:1</Korean> <Korean>30mm 4:1 혼합</Korean>
</Key> </Key>
<Key ID="STR_ACE_Aircraft_GatlingDescriptionCM51"> <Key ID="STR_ACE_Aircraft_GatlingDescriptionCM51">
<English>30mm Combat Mix 5:1 DU:HEI</English> <English>30mm Combat Mix 5:1 DU:HEI</English>
@ -160,7 +160,7 @@
<Japanese>30mm コンバット ミックス 5:1 劣化ウラン徹甲弾:焼夷榴弾</Japanese> <Japanese>30mm コンバット ミックス 5:1 劣化ウラン徹甲弾:焼夷榴弾</Japanese>
<Czech>30mm Bojový Mix 5:1 DU:HEI</Czech> <Czech>30mm Bojový Mix 5:1 DU:HEI</Czech>
<Russian>30мм Смешанное боепитание 5:1 ОУ:ОФЗ</Russian> <Russian>30мм Смешанное боепитание 5:1 ОУ:ОФЗ</Russian>
<Korean>30mm 5:1 열화:고폭소이</Korean> <Korean>30mm 열화우라늄:고폭소이 5:1 혼합</Korean>
</Key> </Key>
<Key ID="STR_ACE_Aircraft_GatlingDescriptionShortCM51"> <Key ID="STR_ACE_Aircraft_GatlingDescriptionShortCM51">
<English>30mm CM 5:1</English> <English>30mm CM 5:1</English>
@ -175,7 +175,19 @@
<Japanese>30mm CM 5:1</Japanese> <Japanese>30mm CM 5:1</Japanese>
<Czech>30mm BM 5:1</Czech> <Czech>30mm BM 5:1</Czech>
<Russian>30мм СБ 5:1</Russian> <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> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1505,7 +1505,7 @@
<Portuguese>Carregador de 10 cartuchos 9.3 mm traçantes IR-DIM</Portuguese> <Portuguese>Carregador de 10 cartuchos 9.3 mm traçantes IR-DIM</Portuguese>
<Hungarian>9,3 mm 10-lövedékes infravörös nyomkövető tár</Hungarian> <Hungarian>9,3 mm 10-lövedékes infravörös nyomkövető tár</Hungarian>
<Japanese>9.3mm 10Rnd IR-DIM トレーサー マガジン</Japanese> <Japanese>9.3mm 10Rnd IR-DIM トレーサー マガジン</Japanese>
<Korean>10발들이 9.3mm IR-DIM 예광탄 탄창</Korean> <Korean>10발 들이 9.3mm IR-DIM 예광탄 탄창</Korean>
<Chinese>9.3毫米 10發 低視度紅外線曳光彈 彈匣</Chinese> <Chinese>9.3毫米 10發 低視度紅外線曳光彈 彈匣</Chinese>
<Chinesesimp>9.3 mm 10发 弹匣(红外曳光)</Chinesesimp> <Chinesesimp>9.3 mm 10发 弹匣(红外曳光)</Chinesesimp>
<Turkish>9.3 mm 10Rnd Tracer IR-DIM Mag</Turkish> <Turkish>9.3 mm 10Rnd Tracer IR-DIM Mag</Turkish>
@ -1608,7 +1608,7 @@
<Portuguese>Cinto de munição traçante 9.3 mm IR-DIM com 150 cartuchos</Portuguese> <Portuguese>Cinto de munição traçante 9.3 mm IR-DIM com 150 cartuchos</Portuguese>
<Hungarian>9,3 mm 150-lövedékes infravörös nyomkövető heveder</Hungarian> <Hungarian>9,3 mm 150-lövedékes infravörös nyomkövető heveder</Hungarian>
<Japanese>9.3mm 150Rnd IR-DIM トレーサー ベルト</Japanese> <Japanese>9.3mm 150Rnd IR-DIM トレーサー ベルト</Japanese>
<Korean>150발들이 9.3mm IR-DIM 예광탄 벨트</Korean> <Korean>150발 들이 9.3mm IR-DIM 예광탄 벨트</Korean>
<Chinese>9.3毫米 150發 低視度紅外線曳光彈 彈鏈</Chinese> <Chinese>9.3毫米 150發 低視度紅外線曳光彈 彈鏈</Chinese>
<Chinesesimp>9.3 mm 150发 弹链(红外曳光)</Chinesesimp> <Chinesesimp>9.3 mm 150发 弹链(红外曳光)</Chinesesimp>
<Turkish>9.3 mm 150Rnd Tracer IR-DIM Belt</Turkish> <Turkish>9.3 mm 150Rnd Tracer IR-DIM Belt</Turkish>
@ -1659,7 +1659,7 @@
<Portuguese>Cinto de munição 9.3 mm AP com 150 cartuchos</Portuguese> <Portuguese>Cinto de munição 9.3 mm AP com 150 cartuchos</Portuguese>
<Hungarian>9,3 mm 150-lövedékes páncéltörő heveder</Hungarian> <Hungarian>9,3 mm 150-lövedékes páncéltörő heveder</Hungarian>
<Japanese>9.3mm 150Rnd 徹甲弾 ベルト</Japanese> <Japanese>9.3mm 150Rnd 徹甲弾 ベルト</Japanese>
<Korean>150발들이 9.3mm 철갑탄 벨트</Korean> <Korean>150발 들이 9.3mm 철갑탄 벨트</Korean>
<Chinese>9.3毫米 150發 穿甲彈 彈鏈</Chinese> <Chinese>9.3毫米 150發 穿甲彈 彈鏈</Chinese>
<Chinesesimp>9.3 mm 150发 弹链(穿甲)</Chinesesimp> <Chinesesimp>9.3 mm 150发 弹链(穿甲)</Chinesesimp>
<Turkish>9.3 mm 150Rnd AP Belt</Turkish> <Turkish>9.3 mm 150Rnd AP Belt</Turkish>
@ -1710,7 +1710,7 @@
<Portuguese>Carregador de 16 cartuchos 9x19 mm</Portuguese> <Portuguese>Carregador de 16 cartuchos 9x19 mm</Portuguese>
<Hungarian>9x19 mm 16-lövedékes tár</Hungarian> <Hungarian>9x19 mm 16-lövedékes tár</Hungarian>
<Japanese>9x19 mm 16Rnd マガジン</Japanese> <Japanese>9x19 mm 16Rnd マガジン</Japanese>
<Korean>17발들이 9x19mm 탄창</Korean> <Korean>16발 들이 9x19mm 탄창</Korean>
<Chinese>9x19毫米 16發 彈匣</Chinese> <Chinese>9x19毫米 16發 彈匣</Chinese>
<Chinesesimp>9x19 mm 16发 弹匣</Chinesesimp> <Chinesesimp>9x19 mm 16发 弹匣</Chinesesimp>
<Turkish>9x19 mm 16Rnd Mag</Turkish> <Turkish>9x19 mm 16Rnd Mag</Turkish>
@ -2016,7 +2016,7 @@
<Portuguese>Carregador 5.56 mm com 30 cartuchos (Mk318)</Portuguese> <Portuguese>Carregador 5.56 mm com 30 cartuchos (Mk318)</Portuguese>
<Hungarian>5,56 mm 30-lövedékes tár (Mk318)</Hungarian> <Hungarian>5,56 mm 30-lövedékes tár (Mk318)</Hungarian>
<Japanese>5.56mm 30Rnd マガジン (Mk318)</Japanese> <Japanese>5.56mm 30Rnd マガジン (Mk318)</Japanese>
<Korean>30발들이 5.56mm 탄창 (Mk.318)</Korean> <Korean>30발 들이 5.56mm 탄창 (Mk.318)</Korean>
<Chinese>5.56毫米 30發 彈匣 (Mk318 特戰專用彈)</Chinese> <Chinese>5.56毫米 30發 彈匣 (Mk318 特戰專用彈)</Chinese>
<Chinesesimp>5.56 mm 30发 弹匣Mk318</Chinesesimp> <Chinesesimp>5.56 mm 30发 弹匣Mk318</Chinesesimp>
<Turkish>5.56 mm 30Rnd Mag (Mk318)</Turkish> <Turkish>5.56 mm 30Rnd Mag (Mk318)</Turkish>
@ -2322,7 +2322,7 @@
<Portuguese>Carregador 7.62 mm com 10 cartuchos (Mk319 Mod 0)</Portuguese> <Portuguese>Carregador 7.62 mm com 10 cartuchos (Mk319 Mod 0)</Portuguese>
<Hungarian>7,62 mm 10-lövedékes tár (Mk319 Mod 0)</Hungarian> <Hungarian>7,62 mm 10-lövedékes tár (Mk319 Mod 0)</Hungarian>
<Japanese>7.62mm 10Rnd マガジン (Mk319 Mod 0)</Japanese> <Japanese>7.62mm 10Rnd マガジン (Mk319 Mod 0)</Japanese>
<Korean>10발들이 7.62mm 탄창 (Mk.319 Mod 0)</Korean> <Korean>10발 들이 7.62mm 탄창 (Mk.319 Mod 0)</Korean>
<Chinese>7.62毫米 10發 彈匣 (Mk319 Mod 0 特戰專用彈)</Chinese> <Chinese>7.62毫米 10發 彈匣 (Mk319 Mod 0 特戰專用彈)</Chinese>
<Chinesesimp>7.62 mm 10发 弹匣Mk319 Mod 0</Chinesesimp> <Chinesesimp>7.62 mm 10发 弹匣Mk319 Mod 0</Chinesesimp>
<Turkish>7.62 mm 10Rnd Mag (Mk319 Mod 0)</Turkish> <Turkish>7.62 mm 10Rnd Mag (Mk319 Mod 0)</Turkish>
@ -3344,7 +3344,7 @@
<Portuguese>Carregador 12.7x99 mm (AMAX) com 5 cartuchos </Portuguese> <Portuguese>Carregador 12.7x99 mm (AMAX) com 5 cartuchos </Portuguese>
<Hungarian>12,7x99 mm 5-lövedékes tár (AMAX)</Hungarian> <Hungarian>12,7x99 mm 5-lövedékes tár (AMAX)</Hungarian>
<Japanese>12.7x99mm 5Rnd マガジン (AMAX)</Japanese> <Japanese>12.7x99mm 5Rnd マガジン (AMAX)</Japanese>
<Korean>5발들이 12.7x99mm 탄창 (AMAX)</Korean> <Korean>5발 들이 12.7x99mm 탄창 (AMAX)</Korean>
<Chinese>12.7x99毫米 5發 彈匣 (AMAX 比賽專用彈)</Chinese> <Chinese>12.7x99毫米 5發 彈匣 (AMAX 比賽專用彈)</Chinese>
<Chinesesimp>12.7x99 mm 5发 弹匣AMAX</Chinesesimp> <Chinesesimp>12.7x99 mm 5发 弹匣AMAX</Chinesesimp>
<Turkish>12.7x99 mm 5Rnd Şarjör (AMAX)</Turkish> <Turkish>12.7x99 mm 5Rnd Şarjör (AMAX)</Turkish>
@ -3378,7 +3378,7 @@
<Portuguese>Carregador 12.7x99 mm (AMAX) com 10 cartuchos </Portuguese> <Portuguese>Carregador 12.7x99 mm (AMAX) com 10 cartuchos </Portuguese>
<Hungarian>12,7x99 mm 10-lövedékes tár (AMAX)</Hungarian> <Hungarian>12,7x99 mm 10-lövedékes tár (AMAX)</Hungarian>
<Japanese>12.7x99mm 10Rnd マガジン (AMAX)</Japanese> <Japanese>12.7x99mm 10Rnd マガジン (AMAX)</Japanese>
<Korean>10발들이 12.7x99mm 탄창 (AMAX)</Korean> <Korean>10발 들이 12.7x99mm 탄창 (AMAX)</Korean>
<Chinese>12.7x99毫米 10發 彈匣 (AMAX 比賽專用彈)</Chinese> <Chinese>12.7x99毫米 10發 彈匣 (AMAX 比賽專用彈)</Chinese>
<Chinesesimp>12.7x99 mm 10发 弹匣AMAX</Chinesesimp> <Chinesesimp>12.7x99 mm 10发 弹匣AMAX</Chinesesimp>
<Turkish>12.7x99 mm 10Rnd Şarjör (AMAX)</Turkish> <Turkish>12.7x99 mm 10Rnd Şarjör (AMAX)</Turkish>

View File

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

View File

@ -20,7 +20,7 @@
params ["_unit", "_target", "_vehicle"]; params ["_unit", "_target", "_vehicle"];
// Don't show "Load Captive" if unit is unconscious (already has "Load Patient") // 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 { if ((isNull _target) && {_unit getVariable [QGVAR(isEscorting), false]}) then {
//Looking at a vehicle while escorting, get target from attached objects: //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"]; _args params ["_unit", "_target", "_actionID"];
if (_unit getVariable [QGVAR(isEscorting), false]) then { 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]; _unit setVariable [QGVAR(isEscorting), false, true];
}; };
}; };

View File

@ -19,7 +19,7 @@
params ["_unit", "_newAnimation"]; params ["_unit", "_newAnimation"];
TRACE_2("AnimChanged",_unit,_newAnimation); TRACE_2("AnimChanged",_unit,_newAnimation);
if (_unit == (vehicle _unit)) then { 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); TRACE_1("Handcuff animation interrupted",_newAnimation);
[_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation); [_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation);
}; };

View File

@ -19,7 +19,7 @@
params ["_unit", "_newAnimation"]; params ["_unit", "_newAnimation"];
TRACE_2("AnimChanged",_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); TRACE_1("Surrender animation interrupted",_newAnimation);
[_unit, "ACE_AmovPercMstpSsurWnonDnon", 1] call EFUNC(common,doAnimation); [_unit, "ACE_AmovPercMstpSsurWnonDnon", 1] call EFUNC(common,doAnimation);
}; };

View File

@ -91,7 +91,7 @@ if (_state) then {
_unit removeEventHandler ["AnimChanged", _animChangedEHID]; _unit removeEventHandler ["AnimChanged", _animChangedEHID];
_unit setVariable [QGVAR(handcuffAnimEHID), -1]; _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 //Break out of hands up animation loop
[_unit, "ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation); [_unit, "ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation);
}; };

View File

@ -86,8 +86,7 @@ if (_state) then {
}; };
}; };
if (!alive _unit) exitWith {}; if !(_unit call EFUNC(common,isAwake)) exitWith {}; //don't touch animations if unconscious
if (_unit getVariable ["ACE_isUnconscious", false]) exitWith {}; //don't touch animations if unconscious
//if we are in "hands up" animationState, crack it now //if we are in "hands up" animationState, crack it now
if (((vehicle _unit) == _unit) && {(animationState _unit) == "ACE_AmovPercMstpSsurWnonDnon"}) then { if (((vehicle _unit) == _unit) && {(animationState _unit) == "ACE_AmovPercMstpSsurWnonDnon"}) then {
@ -99,7 +98,7 @@ if (_state) then {
params ["_args", "_pfID"]; params ["_args", "_pfID"];
_args params ["_unit", "_maxTime"]; _args params ["_unit", "_maxTime"];
//If waited long enough or they re-surrendered or they are unconscious, exit loop //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; [_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) //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; _unit disableConversation true;
} else { } else {
//Sanity check to make sure we don't enable unconsious AI //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"); 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]; private _nearVehicles = nearestObjects [_unit, ["Car", "Air", "Tank", "Ship_F", "Pod_Heli_Transport_04_crewed_base_F"], _distance];
_nearVehicles select { _nearVehicles select {
// Filter cargo seats that will eject unconscious units (e.g. quad bike) // 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 { ((fullCrew [_x, "", true]) findIf {
_x params ["_body", "_role", "_cargoIndex"]; _x params ["_body", "_role", "_cargoIndex"];
(isNull _body) // seat empty (isNull _body) // seat empty

View File

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

View File

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

View File

@ -20,7 +20,8 @@ params ["_item", "_dogtagData"];
if (_item == "") exitWith {}; 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"]; _dogtagData params ["_nickName"];
private _displayText = format [localize LSTRING(takeDogtagSuccess), _nickName]; private _displayText = format [localize LSTRING(takeDogtagSuccess), _nickName];

View File

@ -23,4 +23,4 @@ if (isNull _target) exitWith {false};
// check if disabled for faction // check if disabled for faction
if ((faction _target) in GVAR(disabledFactions)) exitWith {false}; 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 // check if disabled for faction
if ((faction _target) in GVAR(disabledFactions)) exitWith {false}; 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> <Turkish>Al</Turkish>
</Key> </Key>
<Key ID="STR_ACE_Dogtags_takeDogtagSuccess"> <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> <Polish>Zabrałeś nieśmiertelnik %1...</Polish>
<Russian>Жетон снят с %1...</Russian> <Russian>Жетон снят с %1...</Russian>
<Czech>Sebral jsem známku od %1...</Czech> <Czech>Sebral jsem známku od %1...</Czech>
@ -82,7 +82,7 @@
<Turkish>Künye %1 kişisinden alındı</Turkish> <Turkish>Künye %1 kişisinden alındı</Turkish>
</Key> </Key>
<Key ID="STR_ACE_Dogtags_dogtagAlreadyTaken"> <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> <Polish>Ktoś już zabrał ten nieśmiertelnik...</Polish>
<Russian>Кто-то уже забрал жетон...</Russian> <Russian>Кто-то уже забрал жетон...</Russian>
<Czech>Někdo jiný už vzal identifikační známku...</Czech> <Czech>Někdo jiný už vzal identifikační známku...</Czech>
@ -98,7 +98,7 @@
<Turkish>Başka biri zaten künyeyi almış</Turkish> <Turkish>Başka biri zaten künyeyi almış</Turkish>
</Key> </Key>
<Key ID="STR_ACE_Dogtags_IGUI_Description"> <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> <German>Anzeige um Erkennungsmarke zu überprüfen</German>
<Chinese>在畫面中顯示檢查兵籍牌</Chinese> <Chinese>在畫面中顯示檢查兵籍牌</Chinese>
<Chinesesimp>在画面中显示检查兵籍牌</Chinesesimp> <Chinesesimp>在画面中显示检查兵籍牌</Chinesesimp>

View File

@ -33,7 +33,7 @@ if (!GVAR(dragAndFire)) then {
private _inBuilding = _unit call FUNC(isObjectOnObject); private _inBuilding = _unit call FUNC(isObjectOnObject);
// Play release animation // Play release animation
if !(_unit getVariable ["ACE_isUnconscious", false]) then { if (_unit call EFUNC(common,isAwake)) then {
[_unit, "released"] call EFUNC(common,doGesture); [_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 // Fix anim when aborting carrying persons
if (_target isKindOf "CAManBase" || {animationState _unit in CARRY_ANIMATIONS}) then { 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); [_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]]; 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 { if (_average > 0.30 * _gBlackOut) then {
private _strength = ((_average - 0.30 * _gBlackOut) / (0.70 * _gBlackOut)) max 0; 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]]; 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 * 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"]; params ["_unit", "_target"];
alive _target _target call EFUNC(common,isAwake)
&& {!(_target getVariable ["ACE_isUnconscious", false])}
&& {side group _unit == side group _target} && {side group _unit == side group _target}
&& {group _unit != group _target} // return && {group _unit != group _target} // return

View File

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

View File

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

View File

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

View File

@ -18,4 +18,4 @@
params ["_caller", "_target"]; 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."); INFO("ACRE Detected.");
DFUNC(isSpeaking) = { DFUNC(isSpeaking) = {
params ["_unit"]; 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)): { case (["task_force_radio"] call EFUNC(common,isModLoaded)): {
INFO("TFAR Detected."); INFO("TFAR Detected.");
DFUNC(isSpeaking) = { DFUNC(isSpeaking) = {
params ["_unit"]; params ["_unit"];
(_unit getVariable ["tf_isSpeaking", false]) && {!(_unit getVariable ["ACE_isUnconscious", false])} (_unit getVariable ["tf_isSpeaking", false]) && {_unit call EFUNC(common,isAwake)}
}; };
}; };
default { default {
@ -65,7 +65,7 @@ switch (true) do {
DFUNC(isSpeaking) = { DFUNC(isSpeaking) = {
params ["_unit"]; 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> <German>Rückstrahl-Entfernung Multiplikator</German>
<Italian>Coefficiente distanza di svampata</Italian> <Italian>Coefficiente distanza di svampata</Italian>
<Japanese>後方噴射の距離係数</Japanese> <Japanese>後方噴射の距離係数</Japanese>
<Korean>후폭풍 거리 계수</Korean>
</Key> </Key>
<Key ID="STR_ACE_Overpressure_backblastDistanceCoefficient_toolTip"> <Key ID="STR_ACE_Overpressure_backblastDistanceCoefficient_toolTip">
<English>Scales the backblast effect</English> <English>Scales the backblast effect</English>
@ -58,6 +59,7 @@
<German>Skaliert den Rückstrahl-Effekt</German> <German>Skaliert den Rückstrahl-Effekt</German>
<Italian>Scala l'effetto delle svampate dei lanciarazzi</Italian> <Italian>Scala l'effetto delle svampate dei lanciarazzi</Italian>
<Japanese>無反動砲による後方噴射の影響範囲の大きさ</Japanese> <Japanese>無反動砲による後方噴射の影響範囲の大きさ</Japanese>
<Korean>후폭풍 효과의 스케일을 조정합니다</Korean>
</Key> </Key>
<Key ID="STR_ACE_Overpressure_statBackblastRange"> <Key ID="STR_ACE_Overpressure_statBackblastRange">
<English>Backblast range</English> <English>Backblast range</English>

View File

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

View File

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