mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'master' into pr/7002
This commit is contained in:
commit
8a7ec9558a
@ -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,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);
|
||||
[_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]}
|
||||
};
|
||||
_statement = {
|
||||
_statement = {
|
||||
params ["_vehicle"];
|
||||
private _group = group driver _vehicle;
|
||||
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);
|
||||
|
||||
|
||||
// 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;
|
||||
|
@ -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; };
|
||||
|
@ -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>
|
||||
|
@ -1505,7 +1505,7 @@
|
||||
<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>
|
||||
<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>
|
||||
<Chinesesimp>9.3 mm 10发 弹匣(红外曳光)</Chinesesimp>
|
||||
<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>
|
||||
<Hungarian>9,3 mm 150-lövedékes infravörös nyomkövető heveder</Hungarian>
|
||||
<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>
|
||||
<Chinesesimp>9.3 mm 150发 弹链(红外曳光)</Chinesesimp>
|
||||
<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>
|
||||
<Hungarian>9,3 mm 150-lövedékes páncéltörő heveder</Hungarian>
|
||||
<Japanese>9.3mm 150Rnd 徹甲弾 ベルト</Japanese>
|
||||
<Korean>150발들이 9.3mm 철갑탄 벨트</Korean>
|
||||
<Korean>150발 들이 9.3mm 철갑탄 벨트</Korean>
|
||||
<Chinese>9.3毫米 150發 穿甲彈 彈鏈</Chinese>
|
||||
<Chinesesimp>9.3 mm 150发 弹链(穿甲)</Chinesesimp>
|
||||
<Turkish>9.3 mm 150Rnd AP Belt</Turkish>
|
||||
@ -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>
|
||||
@ -2016,7 +2016,7 @@
|
||||
<Portuguese>Carregador 5.56 mm com 30 cartuchos (Mk318)</Portuguese>
|
||||
<Hungarian>5,56 mm 30-lövedékes tár (Mk318)</Hungarian>
|
||||
<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>
|
||||
<Chinesesimp>5.56 mm 30发 弹匣(Mk318)</Chinesesimp>
|
||||
<Turkish>5.56 mm 30Rnd Mag (Mk318)</Turkish>
|
||||
@ -2322,7 +2322,7 @@
|
||||
<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>
|
||||
<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>
|
||||
<Chinesesimp>7.62 mm 10发 弹匣(Mk319 Mod 0)</Chinesesimp>
|
||||
<Turkish>7.62 mm 10Rnd Mag (Mk319 Mod 0)</Turkish>
|
||||
@ -3344,7 +3344,7 @@
|
||||
<Portuguese>Carregador 12.7x99 mm (AMAX) com 5 cartuchos </Portuguese>
|
||||
<Hungarian>12,7x99 mm 5-lövedékes tár (AMAX)</Hungarian>
|
||||
<Japanese>12.7x99mm 5Rnd マガジン (AMAX)</Japanese>
|
||||
<Korean>5발들이 12.7x99mm 탄창 (AMAX)</Korean>
|
||||
<Korean>5발 들이 12.7x99mm 탄창 (AMAX)</Korean>
|
||||
<Chinese>12.7x99毫米 5發 彈匣 (AMAX 比賽專用彈)</Chinese>
|
||||
<Chinesesimp>12.7x99 mm 5发 弹匣(AMAX)</Chinesesimp>
|
||||
<Turkish>12.7x99 mm 5Rnd Şarjör (AMAX)</Turkish>
|
||||
@ -3378,7 +3378,7 @@
|
||||
<Portuguese>Carregador 12.7x99 mm (AMAX) com 10 cartuchos </Portuguese>
|
||||
<Hungarian>12,7x99 mm 10-lövedékes tár (AMAX)</Hungarian>
|
||||
<Japanese>12.7x99mm 10Rnd マガジン (AMAX)</Japanese>
|
||||
<Korean>10발들이 12.7x99mm 탄창 (AMAX)</Korean>
|
||||
<Korean>10발 들이 12.7x99mm 탄창 (AMAX)</Korean>
|
||||
<Chinese>12.7x99毫米 10發 彈匣 (AMAX 比賽專用彈)</Chinese>
|
||||
<Chinesesimp>12.7x99 mm 10发 弹匣(AMAX)</Chinesesimp>
|
||||
<Turkish>12.7x99 mm 10Rnd Şarjör (AMAX)</Turkish>
|
||||
|
@ -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}
|
||||
|
@ -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:
|
||||
|
@ -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];
|
||||
};
|
||||
};
|
||||
|
@ -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);
|
||||
};
|
||||
|
@ -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);
|
||||
};
|
||||
|
@ -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);
|
||||
};
|
||||
|
@ -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)
|
||||
|
@ -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");
|
||||
};
|
||||
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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];
|
||||
|
@ -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))
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
@ -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);
|
||||
};
|
||||
|
||||
|
@ -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);
|
||||
};
|
||||
|
||||
|
@ -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]];
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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}
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
@ -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}
|
||||
|
@ -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)}
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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 }
|
||||
);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user