mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge branch 'master' into release-3.13.5
This commit is contained in:
commit
d887b4a635
@ -9,6 +9,7 @@
|
||||
Brandon (TCVM) <brandondanyluk366@gmail.com>
|
||||
bux578 <github@jonathandavid.de>
|
||||
commy2
|
||||
Dahlgren
|
||||
esteldunedain <nicolas.d.badano@gmail.com>
|
||||
Felix Wiegand <koffeinflummi@gmail.com>
|
||||
Garth "L-H" de Wet <garthofhearts@gmail.com>
|
||||
|
@ -14,7 +14,8 @@
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
params ["_itemCfg", "_ballisticCo", "_explosiveCo"];
|
||||
params ["_itemInfo", "_ballisticCo", "_explosiveCo"];
|
||||
_itemInfo params ["_itemCfg"];
|
||||
|
||||
(([[_itemCfg], ["passthrough", "armor"]] call BIS_fnc_configExtremes) select 1) params [["_passthroughMax", 0], ["_armorMax", 0]];
|
||||
|
||||
|
@ -418,9 +418,11 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_sortByProtectionBallistic">
|
||||
<English>Sort by ballistic protection</English>
|
||||
<French>Trier par protection balistique</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_sortByProtectionExplosive">
|
||||
<English>Sort by explosive protection</English>
|
||||
<French>Trier par résistance aux explosifs</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Arsenal_buttonShareTooltip">
|
||||
<English>Share or stop sharing the selected loadout</English>
|
||||
|
@ -130,6 +130,14 @@ class CfgAmmo {
|
||||
ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900};
|
||||
ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6};
|
||||
};
|
||||
|
||||
class B_556x45_dual: B_556x45_Ball {
|
||||
airFriction = -0.00055;
|
||||
ACE_ammoTempMuzzleVelocityShifts[] = {-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
|
||||
ACE_muzzleVelocities[] = {268}; // at 21°C, at 15°C 267 m/s according with the 20Rnd_556x45_UW_mag initSpeed
|
||||
ACE_barrelLengths[] = {457.2}; // according with the SDAR barrel length: https://en.wikipedia.org/wiki/Kel-Tec_RFB
|
||||
};
|
||||
|
||||
class ACE_556x45_Ball_Mk262 : B_556x45_Ball {
|
||||
airFriction=-0.00111805;
|
||||
ACE_caliber=5.69;
|
||||
|
@ -22,4 +22,4 @@ private _statement = {
|
||||
[_player, _target, _vehicle] call FUNC(doLoadCaptive);
|
||||
};
|
||||
|
||||
[_target call EFUNC(common,nearestVehiclesFreeSeat), _statement, _target] call EFUNC(interact_menu,createVehiclesActions)
|
||||
[[_target, nil, true] call EFUNC(common,nearestVehiclesFreeSeat), _statement, _target] call EFUNC(interact_menu,createVehiclesActions)
|
||||
|
@ -34,7 +34,7 @@ if (isNull _target || {(vehicle _target) != _target} || {!(_target getVariable [
|
||||
|
||||
if (isNull _vehicle) then {
|
||||
// Looking at a captive unit, get nearest vehicle with valid seat:
|
||||
_vehicle = (_target call EFUNC(common,nearestVehiclesFreeSeat)) param [0, objNull];
|
||||
_vehicle = ([_target, nil, true] call EFUNC(common,nearestVehiclesFreeSeat)) param [0, objNull];
|
||||
} else {
|
||||
// We have a vehicle picked, make sure it has empty seats:
|
||||
if (_vehicle emptyPositions "cargo" == 0 && {_vehicle emptyPositions "gunner" == 0}) then {
|
||||
|
@ -31,7 +31,7 @@ if (isNull _target || {(vehicle _target) != _target} || {!(_target getVariable [
|
||||
|
||||
if (isNull _vehicle) then {
|
||||
// Looking at a captive unit, get nearest vehicle with valid seat:
|
||||
_vehicle = (_target call EFUNC(common,nearestVehiclesFreeSeat)) param [0, objNull];
|
||||
_vehicle = ([_target, nil, true] call EFUNC(common,nearestVehiclesFreeSeat)) param [0, objNull];
|
||||
} else {
|
||||
// We have a vehicle picked, make sure it has empty seats:
|
||||
if (_vehicle emptyPositions "cargo" == 0 && {_vehicle emptyPositions "gunner" == 0}) then {
|
||||
|
@ -21,11 +21,30 @@ params ["_unit", "_vehicle", ["_caller", objNull]];
|
||||
TRACE_3("loadPersonLocal",_unit,_vehicle,_caller);
|
||||
|
||||
private _slotsOpen = false;
|
||||
if ((_vehicle emptyPositions "cargo" > 0) && {!(_unit getVariable ['ACE_isUnconscious', false])} || {(getNumber (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "ejectDeadCargo")) == 0}) then {
|
||||
if ((_vehicle emptyPositions "cargo" > 0) && {!(_unit getVariable ['ACE_isUnconscious', false]) || {(getNumber (configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "ejectDeadCargo")) == 0}}) then {
|
||||
_unit moveInCargo _vehicle;
|
||||
TRACE_1("moveInCargo",_vehicle);
|
||||
_slotsOpen = true;
|
||||
} else {
|
||||
if (_vehicle emptyPositions "gunner" > 0) then {
|
||||
// Check if an empty turret is available
|
||||
// This already excludes FFV seats, which count as cargo positions
|
||||
private _turrets = fullCrew [_vehicle, "turret", true];
|
||||
private _index = _turrets findIf {isNull (_x#0)};
|
||||
if (_index >= 0) exitWith {
|
||||
_unit moveInTurret [_vehicle, _turrets#_index#3];
|
||||
TRACE_2("moveInTurret",_vehicle,_turrets#_index#3);
|
||||
_slotsOpen = true;
|
||||
};
|
||||
|
||||
// Check if the commander seat is available
|
||||
if (_vehicle emptyPositions "commander" > 0) exitWith {
|
||||
_unit moveInCommander _vehicle;
|
||||
TRACE_1("moveInCommander",_vehicle);
|
||||
_slotsOpen = true;
|
||||
};
|
||||
|
||||
// Lastly, check if the gunner seat is available
|
||||
if (_vehicle emptyPositions "gunner" > 0) exitWith {
|
||||
_unit moveInGunner _vehicle;
|
||||
_slotsOpen = true;
|
||||
};
|
||||
|
@ -5,22 +5,29 @@
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Unit <OBJECT>
|
||||
* 1: Distance <NUMBER>
|
||||
* 1: Distance <NUMBER><OPTIONAL>
|
||||
* 2: Restriceted to cargo only <BOOL><OPTIONAL>
|
||||
*
|
||||
* Return Value:
|
||||
* Nearest vehicles with a free seat <ARRAY>
|
||||
*
|
||||
* Example:
|
||||
* [bob] call ace_common_fnc_nearestVehiclesFreeSeat
|
||||
* [cursorObject] call ace_common_fnc_nearestVehiclesFreeSeat
|
||||
*
|
||||
* Public: Yes
|
||||
*/
|
||||
|
||||
params ["_unit", ["_distance", 10]];
|
||||
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)
|
||||
((_x emptyPositions "cargo" > 0) && {!(_unit getVariable ['ACE_isUnconscious', false])} || {(getNumber (configFile >> "CfgVehicles" >> (typeOf _x) >> "ejectDeadCargo")) == 0})
|
||||
|| {_x emptyPositions "gunner" > 0}
|
||||
private _canSitInCargo = (!(_unit getVariable ['ACE_isUnconscious', false])) || {(getNumber (configFile >> "CfgVehicles" >> (typeOf _x) >> "ejectDeadCargo")) == 0};
|
||||
((fullCrew [_x, "", true]) findIf {
|
||||
_x params ["_body", "_role", "_cargoIndex"];
|
||||
(isNull _body) // seat empty
|
||||
&& {_role != "DRIVER"} // not driver seat
|
||||
&& {_canSitInCargo || {_cargoIndex == -1}} // won't be ejected (uncon)
|
||||
&& {(!_cargoOnly) || {_cargoIndex != -1}} // not restricted (captive)
|
||||
}) > -1
|
||||
}
|
||||
|
@ -49,6 +49,16 @@ unassignVehicle _unit;
|
||||
TRACE_1("Ejecting", alive _unit);
|
||||
_unit action ["Eject", vehicle _unit];
|
||||
|
||||
// Failsafe - sometimes eject alone doesn't work, but moveOut does
|
||||
[{
|
||||
params ["_unit"];
|
||||
|
||||
if (vehicle _unit != _unit) then {
|
||||
WARNING_1("UnloadPersonLocal [%1] did not eject normally",_unit);
|
||||
moveOut _unit;
|
||||
};
|
||||
}, [_unit], 1] call CBA_fnc_waitAndExecute;
|
||||
|
||||
[{
|
||||
params ["_unit", "_emptyPos"];
|
||||
(alive _unit) && {(vehicle _unit) != _unit}
|
||||
|
@ -201,7 +201,6 @@ class DAGR_Menu {
|
||||
|
||||
class DAGR_NEXT_Button : DAGR_Button {
|
||||
idc = 266868;
|
||||
action = QUOTE(DAGR_NEXT = true);
|
||||
x = 0.60;
|
||||
y = 0.65;
|
||||
};
|
||||
|
@ -596,7 +596,6 @@ GVAR(menuRun) = true;
|
||||
GVAR(F1) = false;
|
||||
GVAR(MENU_B) = false;
|
||||
GVAR(SEL) = false;
|
||||
DAGR_NEXT = false;
|
||||
GVAR(RIGHT) = false;
|
||||
GVAR(LEFT) = false;
|
||||
GVAR(UP) = false;
|
||||
|
@ -92,7 +92,6 @@ if (({((_x select 0) in _listOfItemsToRemove) && {(getNumber (configFile >> "Cfg
|
||||
};
|
||||
//Verify holder has mags unit had
|
||||
if (!([_targetMagazinesStart, _targetMagazinesEnd, _holderMagazinesStart, _holderMagazinesEnd] call FUNC(verifyMagazinesMoved))) then {
|
||||
ERR = [_targetMagazinesStart, _targetMagazinesEnd, _holderMagazinesStart, _holderMagazinesEnd];
|
||||
_holder setVariable [QGVAR(holderInUse), false];
|
||||
[_caller, _target, "Debug: Crate Magazines not in holder"] call FUNC(eventTargetFinish);
|
||||
};
|
||||
|
@ -46,3 +46,5 @@ _unit setVariable [QGVAR(Clackers), _clacker, true];
|
||||
|
||||
//display clacker code message:
|
||||
[format [localize LSTRING(DetonateCode), GVAR(PlacedCount)]] call EFUNC(common,displayTextStructured);
|
||||
|
||||
[QGVAR(clackerAdded), [_unit, _explosive, GVAR(PlacedCount)]] call CBA_fnc_localEvent;
|
||||
|
@ -25,8 +25,6 @@ if (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]) then {
|
||||
};
|
||||
|
||||
if (GVAR(actionSelected)) then {
|
||||
this = GVAR(selectedTarget);
|
||||
|
||||
private _player = ACE_Player;
|
||||
private _target = GVAR(selectedTarget);
|
||||
|
||||
@ -38,6 +36,11 @@ if (GVAR(actionSelected)) then {
|
||||
|
||||
// Check the action conditions
|
||||
private _actionData = GVAR(selectedAction) select 0;
|
||||
|
||||
// Use global variable this for action condition and action code
|
||||
private _savedThis = this;
|
||||
this = GVAR(selectedTarget);
|
||||
|
||||
if ([_target, _player, _actionData select 6] call (_actionData select 4)) then {
|
||||
// Call the statement
|
||||
[_target, _player, _actionData select 6] call (_actionData select 3);
|
||||
@ -45,6 +48,9 @@ if (GVAR(actionSelected)) then {
|
||||
// Clear the conditions caches again if the action was performed
|
||||
[QGVAR(clearConditionCaches), []] call CBA_fnc_localEvent;
|
||||
};
|
||||
|
||||
// Restore this variable
|
||||
this = _savedThis;
|
||||
};
|
||||
|
||||
["ace_interactMenuClosed", [GVAR(openedMenuType)]] call CBA_fnc_localEvent;
|
||||
|
@ -91,13 +91,16 @@ if (GVAR(openedMenuType) >= 0) then {
|
||||
};
|
||||
};
|
||||
if (_runOnHover) then {
|
||||
this = GVAR(selectedTarget);
|
||||
private _player = ACE_Player;
|
||||
private _target = GVAR(selectedTarget);
|
||||
|
||||
// Clear the conditions caches
|
||||
[QGVAR(clearConditionCaches), []] call CBA_fnc_localEvent;
|
||||
|
||||
// Use global variable this for action condition and action code
|
||||
private _savedThis = this;
|
||||
this = GVAR(selectedTarget);
|
||||
|
||||
// Check the action conditions
|
||||
private _actionData = GVAR(selectedAction) select 0;
|
||||
if ([_target, _player, _actionData select 6] call (_actionData select 4)) then {
|
||||
@ -107,6 +110,9 @@ if (GVAR(openedMenuType) >= 0) then {
|
||||
// Clear the conditions caches again if the action was performed
|
||||
[QGVAR(clearConditionCaches), []] call CBA_fnc_localEvent;
|
||||
};
|
||||
|
||||
// Restore this variable
|
||||
this = _savedThis;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -41,15 +41,34 @@ private _fnc_getMemPointOffset = {
|
||||
private _fnc_userAction_Statement = {
|
||||
params ["_target", "_player", "_variable"];
|
||||
_variable params ["_actionStatement", "_actionCondition"];
|
||||
|
||||
// Use global variable this for action condition and action code
|
||||
private _savedThis = this;
|
||||
this = _target getVariable [QGVAR(building), objNull];
|
||||
|
||||
call _actionStatement;
|
||||
|
||||
// Restore this variable
|
||||
this = _savedThis;
|
||||
};
|
||||
|
||||
private _fnc_userAction_Condition = {
|
||||
params ["_target", "_player", "_variable"];
|
||||
_variable params ["_actionStatement", "_actionCondition"];
|
||||
|
||||
private _building = _target getVariable [QGVAR(building), objNull];
|
||||
if (isNull _building) exitWith {false};
|
||||
|
||||
// Use global variable this for action condition and action code
|
||||
private _savedThis = this;
|
||||
this = _target getVariable [QGVAR(building), objNull];
|
||||
if (isNull this) exitWith {false};
|
||||
call _actionCondition;
|
||||
|
||||
private _result = call _actionCondition;
|
||||
|
||||
// Restore this variable
|
||||
this = _savedThis;
|
||||
|
||||
_result
|
||||
};
|
||||
|
||||
private _configPath = configFile >> "CfgVehicles" >> _typeOfBuilding >> "UserActions";
|
||||
|
@ -152,45 +152,59 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampEnabled">
|
||||
<English>Allow Timestamps</English>
|
||||
<French>Permettre l'horodatage</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampEnabledDescription">
|
||||
<English>Whether to allow timestamps to be automatically applied to markers</English>
|
||||
<French>Active une interface permettant d'apposer un horodatage sur les marqueurs.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_Timestamp">
|
||||
<English>Add Timestamp:</English>
|
||||
<French>Ajouter l'horodatage</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampTooltipNoWatch">
|
||||
<English>Watch Required</English>
|
||||
<French>Une montre est requise.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampFormat">
|
||||
<English>Timestamp Format</English>
|
||||
<French>Horodatage - Format</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampFormatDescription0">
|
||||
<English>Changes the timestamp format</English>
|
||||
<French>Modifie le format de l'horodatage.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampFormatDescription1">
|
||||
<English>"HH" - Hour</English>
|
||||
<French>"HH" - Heures</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampFormatDescription2">
|
||||
<English>"MM" - Minute</English>
|
||||
<French>"MM" - Minutes</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampFormatDescription3">
|
||||
<English>"SS" - Seconds</English>
|
||||
<French>"SS" - Secondes</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampFormatDescription4">
|
||||
<English>"MM" - Milliseconds</English>
|
||||
<French>"MS" - Millisecondes</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampHourFormat">
|
||||
<English>Timestamp Hour Format</English>
|
||||
<French>Horodatage - Système horaire</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampHourFormat24">
|
||||
<English>24-Hour Clock</English>
|
||||
<French>Format 24 heures</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampHourFormat12">
|
||||
<English>12-Hour Clock</English>
|
||||
<French>Format 12 heures</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Markers_TimestampHourFormatDescription">
|
||||
<English>Changes timestamp to use either 24-hour or 12-hour clock format</English>
|
||||
<French>Permet de choisir le système d'horodatage souhaité, au format 12 ou 24 heures.</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -19,7 +19,8 @@
|
||||
// we ignore this here. We need to "notice" the medic that he should
|
||||
// treat other units, or else he won't do anything on his own.
|
||||
|
||||
if ([_this] call EFUNC(medical_treatment,isMedic) || {vehicle _this != _this}) exitWith {false};
|
||||
private _isMedic = [_this] call EFUNC(medical_treatment,isMedic);
|
||||
if (_isMedic && {!IS_UNCONSCIOUS(_this)} || {vehicle _this != _this}) exitWith {false};
|
||||
|
||||
// Search for a medic, prioritize unitReady
|
||||
private _medic = objNull;
|
||||
|
@ -191,9 +191,11 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_GUI_InteractionMenuShowTriage_DisplayName">
|
||||
<English>Show Triage Level in Interaction Menu</English>
|
||||
<French>Couleur de triage dans le menu d'interaction</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_GUI_InteractionMenuShowTriage_Description">
|
||||
<English>Shows the patient's triage level by changing the color of the main and medical menu actions.</English>
|
||||
<French>Modifie la couleur du menu d'interactions et du sous-menu médical en fonction de la fiche de triage du patient.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_GUI_Medical">
|
||||
<English>Medical</English>
|
||||
|
@ -103,6 +103,7 @@ class ACE_Medical_StateMachine {
|
||||
};
|
||||
class Bleedout {
|
||||
targetState = "Dead";
|
||||
condition = QUOTE((GVAR(cardiacArrestBleedoutEnabled))); // wrap to ensure cba uses this as code and not a direct variable
|
||||
events[] = {QEGVAR(medical,Bleedout)};
|
||||
};
|
||||
};
|
||||
|
@ -17,7 +17,4 @@
|
||||
|
||||
params ["_unit"];
|
||||
|
||||
// Statemachine only handles local units
|
||||
if !(local _unit) exitWith {};
|
||||
|
||||
[_unit, EGVAR(medical,STATE_MACHINE), "Dead", "Default"] call CBA_statemachine_fnc_manualTransition;
|
||||
|
@ -41,3 +41,12 @@
|
||||
[1, 3600, 300],
|
||||
true
|
||||
] call CBA_settings_fnc_init;
|
||||
|
||||
[
|
||||
QGVAR(cardiacArrestBleedoutEnabled),
|
||||
"CHECKBOX",
|
||||
[LSTRING(CardiacArrestBleedout_DisplayName), LSTRING(CardiacArrestBleedout_Description)],
|
||||
[ELSTRING(medical,Category), LSTRING(SubCategory)],
|
||||
true,
|
||||
true
|
||||
] call CBA_settings_fnc_init;
|
||||
|
@ -98,7 +98,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Statemachine_CardiacArrestTime_DisplayName">
|
||||
<English>Cardiac Arrest Time</English>
|
||||
<German>Zeit bis zum Herzstillstand</German>
|
||||
<German>Überlebenszeit im Herzstillstand</German>
|
||||
<Japanese>心停止時間</Japanese>
|
||||
<Russian>Длительность остановки сердца</Russian>
|
||||
<French>Durée de l'arrêt cardiaque</French>
|
||||
@ -119,6 +119,7 @@
|
||||
<Italian>Controlla quanto tempo ci vuole per morire di arresto cardiaco.</Italian>
|
||||
<Czech>Nastavuje po jak dlouhé době pacient zemře kvůli srdeční zástavě.</Czech>
|
||||
<Polish>Definiuje czas potrzebny na śmierć z powodu zatrzymania akcji serca.</Polish>
|
||||
<German>Bestimmt die Dauer bis zum Tod durch Herzstillstand.</German>
|
||||
<Turkish>Ne kadar süre de kalbi durarak ölmesini belirleyin.</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Statemachine_InCardiacArrest">
|
||||
@ -134,5 +135,15 @@
|
||||
<Polish>Zatrzymanie Akcji Serca</Polish>
|
||||
<Turkish>Kalbi Durdu</Turkish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Statemachine_CardiacArrestBleedout_DisplayName">
|
||||
<English>Bleedout During Cardiac Arrest</English>
|
||||
<German>Ausbluten im Herzstillstand</German>
|
||||
<French>Saignement durant l'arrêt cardiaque</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Statemachine_CardiacArrestBleedout_Description">
|
||||
<English>Controls whether a person can die in cardiac arrest by blood loss before the cardiac arrest time runs out.</English>
|
||||
<German>Legt fest, ob man während des Herzstillstands durch Blutverlust sterben kann, auch wenn die Überlebenszeit im Herzstillstand noch nicht ausgelaufen ist.</German>
|
||||
<French>Définit si un joueur en arrêt cardiaque peut mourir par exsanguination, avant que la durée de l'arrêt cardiaque définie ci-dessus ne soit écoulée.</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -52,9 +52,20 @@ if (_active) then {
|
||||
// Do "Unlock controls" user action, co-pilot will then have to do the "Take Controls" actions
|
||||
_unit action ["UnlockVehicleControl", vehicle _unit];
|
||||
};
|
||||
|
||||
// Disable AI aiming
|
||||
if (!isPlayer _unit && {_unit checkAIFeature "WEAPONAIM"}) then {
|
||||
_unit disableAI "WEAPONAIM";
|
||||
_unit setVariable [QGVAR(reenableWeaponAim), true, true];
|
||||
};
|
||||
} else {
|
||||
// Unit has woken up, no longer need to track this
|
||||
_unit setVariable [QEGVAR(medical,lastWakeUpCheck), nil];
|
||||
|
||||
// Reenable AI aiming
|
||||
if (_unit getVariable [QGVAR(reenableWeaponAim), false]) then {
|
||||
_unit enableAI "WEAPONAIM";
|
||||
};
|
||||
};
|
||||
|
||||
// This event doesn't correspond to unconscious in statemachine
|
||||
|
@ -240,48 +240,50 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeAutoinjector_DisplayName">
|
||||
<English>Autoinjector Treatment Time</English>
|
||||
<French>Durée d'interaction - Auto-injecteurs</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeAutoinjector_Description">
|
||||
<English>Time, in seconds, required to administer medication using an autoinjector.</English>
|
||||
<French>Définit le temps nécessaire à l'administration d'une substance auto-injectable (en secondes).</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeTourniquet_DisplayName">
|
||||
<English>Tourniquet Treatment Time</English>
|
||||
<French>Temps de traitement du tourniquet</French>
|
||||
<French>Durée d'interaction - Garrots</French>
|
||||
<German>Tourniquet-Behandlungszeit</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeTourniquet_Description">
|
||||
<English>Time, in seconds, required to apply/remove a tourniquet.</English>
|
||||
<French>Temps en secondes nécessaire pour appliquer un garrot.</French>
|
||||
<French>Définit le temps nécessaire à l'application ou au retrait d'un garrot (en secondes).</French>
|
||||
<German>Zeit in Sekunden, die benötigt wird, um ein Tourniquet anzuwenden.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeIV_DisplayName">
|
||||
<English>IV Bag Treatment Time</English>
|
||||
<French>Temps de traitement du sac IV</French>
|
||||
<French>Durée d'interaction - IVs</French>
|
||||
<German>IV Beutelbehandlungszeit</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeIV_Description">
|
||||
<English>Time, in seconds, required to administer an IV bag.</English>
|
||||
<French>Temps en secondes nécessaire pour appliquer un sac IV.</French>
|
||||
<French>Définit le temps nécessaire à la pose d'une perfusion IV (en secondes).</French>
|
||||
<German>Zeit in Sekunden, die benötigt wird, um einen Infusionsbeutel aufzutragen.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeSplint_DisplayName">
|
||||
<English>Splint Treatment Time</English>
|
||||
<French>Temps de traitement de l'attelle</French>
|
||||
<French>Durée d'interaction - Attelles</French>
|
||||
<German>Schienenbehandlungszeit</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeSplint_Description">
|
||||
<English>Time, in seconds, required to apply a splint.</English>
|
||||
<French>Temps en secondes nécessaire pour appliquer une attelle.</French>
|
||||
<French>Définit le temps nécessaire à l'application d'une attelle (en secondes).</French>
|
||||
<German>Zeit in Sekunden, die zum Anbringen einer Schiene benötigt wird.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeBodyBag_DisplayName">
|
||||
<English>Body Bag Use Time</English>
|
||||
<French>Temps d'utilisation du sac mortuaire</French>
|
||||
<French>Durée d'interaction - Housses mortuaires</French>
|
||||
<German>Anwendungszeit für Leichensack</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeBodyBag_Description">
|
||||
<English>Time, in seconds, required to put a patient in a body bag.</English>
|
||||
<French>Temps en secondes qu'il faut pour appliquer un sac mortuaire.</French>
|
||||
<French>Définit le temps nécessaire à la mise en housse d'un corps (en secondes).</French>
|
||||
<German>Zeit in Sekunden, die benötigt wird, um einen Leichensack aufzutragen.</German>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_MedicEpinephrine_DisplayName">
|
||||
@ -303,7 +305,7 @@
|
||||
<Key ID="STR_ACE_Medical_Treatment_MedicEpinephrine_Description">
|
||||
<English>Training level required to use epinephrine.</English>
|
||||
<Japanese>アドレナリンの使用に訓練レベルを必要とさせます。</Japanese>
|
||||
<French>Définit quelle qualification médicale est requise pour pouvoir utiliser l'épinéphrine.</French>
|
||||
<French>Définit la qualification médicale requise pour utiliser l'épinéphrine.</French>
|
||||
<Russian>Уровень подготовки, необходимый для использования Адреналина.</Russian>
|
||||
<Portuguese>É necessária uma qualificação médica para usar epinefrina.</Portuguese>
|
||||
<Chinese>要受過何種程度的醫療訓練才可以使用腎上腺素</Chinese>
|
||||
@ -332,7 +334,7 @@
|
||||
<Key ID="STR_ACE_Medical_Treatment_LocationEpinephrine_Description">
|
||||
<English>Controls where epinephrine can be used.</English>
|
||||
<Japanese>アドレナリンが使える場所を決定します。</Japanese>
|
||||
<French>Définit où l'épinéphrine peut être utilisée.</French>
|
||||
<French>Définit les lieux où l'usage d'épinéphrine est autorisé.</French>
|
||||
<Russian>Контролирует, где можно использовать Адреналин.</Russian>
|
||||
<Portuguese>Controla onde Epinefrina pode ser utilizada.</Portuguese>
|
||||
<Chinese>控制何處能使用腎上腺素</Chinese>
|
||||
@ -362,7 +364,7 @@
|
||||
<Key ID="STR_ACE_Medical_Treatment_MedicPAK_Description">
|
||||
<English>Training level required to use a PAK.</English>
|
||||
<Japanese>応急処置キットの使用に訓練レベルを必要とさせます。</Japanese>
|
||||
<French>Définit quelle qualification médicale est requise pour pouvoir utiliser la trousse sanitaire.</French>
|
||||
<French>Définit la qualification médicale requise pour utiliser la trousse sanitaire.</French>
|
||||
<Russian>Уровень подготовки, необходимый для использования Аптечки.</Russian>
|
||||
<Portuguese>É necessária uma qualificação médica para usar KPS</Portuguese>
|
||||
<Chinese>要受過何種程度的醫療訓練才可以使用個人急救包</Chinese>
|
||||
@ -392,7 +394,7 @@
|
||||
<Key ID="STR_ACE_Medical_Treatment_LocationPAK_Description">
|
||||
<English>Controls where a PAK can be used.</English>
|
||||
<Japanese>応急処置キットが使える場所を決定します。</Japanese>
|
||||
<French>Définit où la trousse sanitaire peut être utilisée.</French>
|
||||
<French>Définit les lieux où l'usage de la trousse sanitaire est autorisé.</French>
|
||||
<Russian>Контролирует, где можно использовать Аптечку.</Russian>
|
||||
<Portuguese>Controla onde o KPS pode ser utilizado.</Portuguese>
|
||||
<Chinese>控制何處能使用個人急救包</Chinese>
|
||||
@ -494,7 +496,7 @@
|
||||
<Key ID="STR_ACE_Medical_Treatment_MedicSurgicalKit_Description">
|
||||
<English>Training level required to use a surgical kit.</English>
|
||||
<Japanese>縫合キットの使用に訓練レベルを必要とさせます。</Japanese>
|
||||
<French>Définit quelle qualification médicale est requise pour pouvoir utiliser une trousse chirurgicale.</French>
|
||||
<French>Définit la qualification médicale requise pour utiliser la trousse chirurgicale.</French>
|
||||
<Russian>Уровень медицинской подготовки, необходимый для использования Хирургического набора.</Russian>
|
||||
<Portuguese>É necessária uma qualificação médica para usar Kit Cirúrgico</Portuguese>
|
||||
<Chinese>要受過多少程度的醫療訓練才能使用手術包。</Chinese>
|
||||
@ -520,7 +522,7 @@
|
||||
<Key ID="STR_ACE_Medical_Treatment_LocationSurgicalKit_Description">
|
||||
<English>Controls where a surgical kit can be used.</English>
|
||||
<Japanese>縫合キットが使える場所を決定します。</Japanese>
|
||||
<French>Définit où la trousse chirurgicale peut être utilisée.</French>
|
||||
<French>Définit les lieux où l'usage de la trousse chirurgicale est autorisé.</French>
|
||||
<Russian>Контролирует, где можно использовать Хирургический набор</Russian>
|
||||
<Portuguese>Controle onde o Kit Cirúrgico pode ser utilizado.</Portuguese>
|
||||
<Chinese>控制何處能使用手術包</Chinese>
|
||||
@ -556,7 +558,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_AllowSelfStitch_DisplayName">
|
||||
<English>Self Stitching</English>
|
||||
<French>Suturer soi-même</French>
|
||||
<French>Réaliser des sutures sur soi-même</French>
|
||||
<Portuguese>Auto-Cirurgia</Portuguese>
|
||||
<Japanese>自己縫合</Japanese>
|
||||
<Chinese>自我縫合</Chinese>
|
||||
@ -580,16 +582,18 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_WoundStitchTime_DisplayName">
|
||||
<English>Wound Stitch Time</English>
|
||||
<French>Durée d'interaction - Sutures</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_WoundStitchTime_Description">
|
||||
<English>Time, in seconds, required to stitch a single wound.</English>
|
||||
<French>Définit le temps nécessaire à la suture d'une plaie (en secondes).</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_AllowSelfIV_DisplayName">
|
||||
<English>Self IV Transfusion</English>
|
||||
<German>Eigennutzung von Bluttransfusionen</German>
|
||||
<Russian>Внутривенное переливание на себе</Russian>
|
||||
<Japanese>自己 IV 輸血</Japanese>
|
||||
<French>Autotransfusion d'IV</French>
|
||||
<French>Pose d'IV sur soi-même</French>
|
||||
<Portuguese>Autotransfusão de IV</Portuguese>
|
||||
<Chinese>自我注射點滴</Chinese>
|
||||
<Czech>Samoaplikace IV transfuze</Czech>
|
||||
@ -601,7 +605,7 @@
|
||||
<German>Erlaube Bluttransfusionen an sich selbst zu benutzen</German>
|
||||
<Russian>Позволяет использовать внутривенные переливания на себе</Russian>
|
||||
<Japanese>自らに対して IV 輸血を可能にします。</Japanese>
|
||||
<French>Permet de poser des IV sur soi-même.</French>
|
||||
<French>Active la possibilité de s'auto-poser des IVs.</French>
|
||||
<Portuguese>Permite utilizar bolsas de IV para transfusão em si mesmo</Portuguese>
|
||||
<Chinese>啟用是否能對自己注射點滴</Chinese>
|
||||
<Czech>Umožňuje aplikovat IV transfuze na sama sebe.</Czech>
|
||||
@ -610,15 +614,17 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_AllowBodyBagUnconscious_DisplayName">
|
||||
<English>Allow Unconscious Body Bag</English>
|
||||
<French>Housse mortuaire - Autoriser patients inconscients</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_AllowBodyBagUnconscious_Description">
|
||||
<English>Enables placing an unconscious patient in a body bag.</English>
|
||||
<French>Active la possibilité de placer des patients inconscients dans les housses mortuaires.\nAttention : le cas échéant cela provoquera la mort du patient.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_MedicIV_DisplayName">
|
||||
<English>Allow IV Transfusion</English>
|
||||
<German>Erlaube Bluttransfusionen</German>
|
||||
<Polish>Zezwalaj na przetaczanie płynów IV</Polish>
|
||||
<French>Pose de perfusion autorisée pour</French>
|
||||
<French>Pose de perfusions autorisée pour</French>
|
||||
<Chinese>允許操作點滴</Chinese>
|
||||
<Japanese>IV 輸血の制限</Japanese>
|
||||
<Czech>Povolit IV transfuzi</Czech>
|
||||
@ -628,7 +634,7 @@
|
||||
<English>Training level required to transfuse IVs.</English>
|
||||
<German>'Fähigkeiten-Level', das benötigt wird, um Blut zu transfundieren.</German>
|
||||
<Polish>Poziom wyszkolenia potrzebny aby móc przetaczać płyny IV.</Polish>
|
||||
<French>Définit quelle qualification médicale est requise pour pouvoir poser des perfusions intraveineuses.</French>
|
||||
<French>Définit la qualification médicale requise pour poser des perfusions intraveineuses.</French>
|
||||
<Chinese>要有何種醫療水準才可注射點滴。</Chinese>
|
||||
<Japanese>IV 輸血を行うのに訓練済レベルを要求とします。</Japanese>
|
||||
<Czech>Úroveň výcviku nutná pro IV transfuzi.</Czech>
|
||||
@ -844,9 +850,11 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeCPR_DisplayName">
|
||||
<English>CPR Treatment Time</English>
|
||||
<French>Durée d'interaction - RCP</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_TreatmentTimeCPR_Description">
|
||||
<English>Time, in seconds, required to perform CPR on a patient.</English>
|
||||
<French>Définit le temps nécessaire à la mise en œuvre d'une RCP (en secondes).</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_HolsterRequired_DisplayName">
|
||||
<English>Holster Required</English>
|
||||
@ -4298,6 +4306,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Medical_Treatment_bodybagWhileStillAlive">
|
||||
<English>The body twitched and may not be dead!</English>
|
||||
<French>L'unité a bougé et n'est peut-être pas morte !</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -46,9 +46,11 @@ TRACE_2("",_realHitPoints,_dependentHitPoints);
|
||||
if (_dependentHitPoints isEqualTo []) exitWith {};
|
||||
|
||||
|
||||
// Define global variables
|
||||
Total = damage _vehicle;
|
||||
// Define global variables and save original values
|
||||
private _savedGlobals = [["total", total]];
|
||||
total = damage _vehicle;
|
||||
{
|
||||
_savedGlobals pushBack [_x, missionNamespace getVariable _x];
|
||||
missionNamespace setVariable [_x, _vehicle getHitPointDamage _x];
|
||||
} forEach _realHitPoints;
|
||||
|
||||
@ -58,3 +60,8 @@ Total = damage _vehicle;
|
||||
TRACE_2("setting depend hitpoint", _x, _damage);
|
||||
_vehicle setHitPointDamage [_x, _damage];
|
||||
} forEach _dependentHitPoints;
|
||||
|
||||
// Restore global variables
|
||||
{
|
||||
missionNamespace setVariable _x;
|
||||
} forEach _savedGlobals;
|
||||
|
@ -340,7 +340,7 @@ class CfgWeapons {
|
||||
|
||||
class arifle_SDAR_F: SDAR_base_F {
|
||||
ACE_RailHeightAboveBore = 0;
|
||||
ACE_IronSightBaseAngle = -0.037242;
|
||||
ACE_IronSightBaseAngle = -0.042972;
|
||||
};
|
||||
|
||||
class SMG_01_Base: Rifle_Short_Base_F {
|
||||
|
@ -38,7 +38,7 @@ This lists all the maintainers responsible for project management and the overal
|
||||
- Coding, Performance, SME
|
||||
- [jokoho48](https://github.com/jokoho48){:target="_blank"}
|
||||
- Scripting, Model Editing / Import
|
||||
- [SilentSpike](https://github.com/SilentSpike){:target="_blank"}
|
||||
- [SilentSpike](https://github.com/kymckay){:target="_blank"}
|
||||
- Scripting, Config
|
||||
- [Ruthberg](https://github.com/ulteq){:target="_blank"}
|
||||
- Scripting, Config
|
||||
@ -61,6 +61,7 @@ This lists all the maintainers responsible for project management and the overal
|
||||
- [mharis001](https://github.com/mharis001){:target="_blank"}
|
||||
- [Brandon (TCVM)](https://github.com/TheCandianVendingMachine){:target="_blank"}
|
||||
- [veteran29](https://github.com/veteran29){:target="_blank"}
|
||||
- [Dahlgren](https://github.com/Dahlgren){:target="_blank"}
|
||||
|
||||
## Contributors
|
||||
|
||||
|
@ -82,6 +82,7 @@ MenuType: 0 = Interaction, 1 = Self Interaction
|
||||
| Event Key | Parameters | Locality | Type | Description |
|
||||
|----------|---------|---------|---------|---------|---------|
|
||||
|`ace_tripflareTriggered` | [_flareObject, [_posX, _posY, _posZ]] | Global | Listen | Tripflare triggered
|
||||
|`ace_explosives_clackerAdded` | [_unit, _explosive, _id] | Local | Listen | Clacker added to explosive
|
||||
|
||||
### 2.9 Logistics Wirecutter (`ace_logistics`)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user